feat: Delaying the revealment of concealments #332
Merged
+753
−465
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #283
Key points of the implementation
We introduced 3 new types:
Replacement
,ConcealSpec
, andConcealment
. It's a bit confusing, butReplacement
is equivalent toConcealment
in the previous code, while the newConcealment
now refers to something different.ConcealSpec
: array ofReplacement
. Replacements in the same conceal spec are enabled or disables simultaneously. This layer is necessary due to LaTeX commands such as\frac
and\set
.Concealment
:ConcealSpec
with additional context. The decorations and atomic ranges are built from a list ofConcealment
objects.The
conceal
function collects conceal specs. Note that it does not rely on the mouse position or whether the mouse is down. The conceal specs collected are converted intoConcealment
objects using information such as the previousConcealment
objects. At this time, the ones that should be revealed after a delay are passed to the debouncer.