mirror of
https://github.com/kotaindah55/extended-markdown-syntax.git
synced 2026-07-22 05:38:06 +00:00
fix: fenced div opening was displayed while it should be hidden
Mistake happens when taking docChanged as a parameter. It wasn't always notify there is currently parsing activity.
This commit is contained in:
parent
f4851c55e7
commit
f3cbac5226
2 changed files with 13 additions and 11 deletions
|
|
@ -58,7 +58,7 @@ export class SelectionObserver {
|
|||
* All the methods below should be run inside this. Don't try to run
|
||||
* them separately.
|
||||
*/
|
||||
startObserve(selection: EditorSelection, docChanged: boolean): void {
|
||||
startObserve(selection: EditorSelection, isParsing: boolean): void {
|
||||
this.selection = selection;
|
||||
this.checkIndexCache();
|
||||
this.isObserving = true;
|
||||
|
|
@ -68,18 +68,18 @@ export class SelectionObserver {
|
|||
// At the moment, changed and filter region are only applied to block-
|
||||
// level tokens.
|
||||
if (level == TokenLevel.INLINE) { continue }
|
||||
this.mapChangedRegion(level, oldSelectedRegion, docChanged);
|
||||
this.mapChangedRegion(level, oldSelectedRegion, isParsing);
|
||||
this.createFilter(level);
|
||||
}
|
||||
}
|
||||
restartObserver(selection: EditorSelection, docChanged: boolean): void {
|
||||
restartObserver(selection: EditorSelection, isParsing: boolean): void {
|
||||
this.selection = selection;
|
||||
this.checkIndexCache();
|
||||
this.isObserving = true;
|
||||
for (let level = TokenLevel.BLOCK as TokenLevel; level <= TokenLevel.INLINE; level++) {
|
||||
let oldSelectedRegion: Region = [];
|
||||
this.locateSelectedTokens(level);
|
||||
this.mapChangedRegion(level, oldSelectedRegion, docChanged, true);
|
||||
this.mapChangedRegion(level, oldSelectedRegion, isParsing, true);
|
||||
this.createFilter(level);
|
||||
}
|
||||
}
|
||||
|
|
@ -225,7 +225,7 @@ export class SelectionObserver {
|
|||
* by a document change. Hence, `mapChangedRegion` comes to map the
|
||||
* token indexes region that should be redrawn.
|
||||
*/
|
||||
mapChangedRegion(level: TokenLevel, oldSelectedRegion: Region, docChanged: boolean, restart?: boolean): Region {
|
||||
mapChangedRegion(level: TokenLevel, oldSelectedRegion: Region, isParsing: boolean, restart?: boolean): Region {
|
||||
let reparsedRange = this.parser.reparsedRanges[level],
|
||||
reparsedLength = reparsedRange.changedTo - reparsedRange.initTo,
|
||||
mappedRegion: Region = [],
|
||||
|
|
@ -237,8 +237,8 @@ export class SelectionObserver {
|
|||
: [];
|
||||
}
|
||||
// Don't map the previous selected region when there is actually no
|
||||
// reparsed tokens.
|
||||
if (!docChanged || reparsedRange.from == reparsedRange.initTo && !reparsedLength) {
|
||||
// parsing activity.
|
||||
if (!isParsing || reparsedRange.from == reparsedRange.initTo && !reparsedLength) {
|
||||
return this.changedRegions[level] = joinRegions(oldSelectedRegion, this.selectedRegions[level]);
|
||||
}
|
||||
// Use either reparsed range or selected region directly when there is no
|
||||
|
|
|
|||
|
|
@ -9,10 +9,12 @@ export const selectionObserverField = StateField.define({
|
|||
return observer;
|
||||
},
|
||||
update(observer, transaction) {
|
||||
// Start observer only when the parser was run or the selection was moved.
|
||||
let selectionMoved = !(transaction.selection && transaction.startState.selection.eq(transaction.selection));
|
||||
if (observer.parser.isReparsing || observer.parser.isInitializing || selectionMoved) {
|
||||
observer.startObserve(transaction.newSelection, transaction.docChanged);
|
||||
// Start observer only when the parser has run or the selection has been moved.
|
||||
let selectionMoved = !(transaction.selection && transaction.startState.selection.eq(transaction.selection)),
|
||||
isParsing = observer.parser.isReparsing || observer.parser.isInitializing;
|
||||
transaction.isUserEvent("select");
|
||||
if (isParsing || selectionMoved) {
|
||||
observer.startObserve(transaction.newSelection, isParsing);
|
||||
} else {
|
||||
observer.isObserving = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue