Skip to content

Commit 41e5936

Browse files
committed
Fixes microsoft#84281: Store bracket counts across embedded languages
1 parent ac3fab2 commit 41e5936

1 file changed

Lines changed: 11 additions & 6 deletions

File tree

src/vs/editor/common/model/textModel.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2344,13 +2344,18 @@ export class TextModel extends Disposable implements model.ITextModel {
23442344
public findEnclosingBrackets(_position: IPosition): [Range, Range] | null {
23452345
const position = this.validatePosition(_position);
23462346
const lineCount = this.getLineCount();
2347+
const savedCounts = new Map<number, number[]>();
23472348

23482349
let counts: number[] = [];
2349-
const resetCounts = (modeBrackets: RichEditBrackets | null) => {
2350-
counts = [];
2351-
for (let i = 0, len = modeBrackets ? modeBrackets.brackets.length : 0; i < len; i++) {
2352-
counts[i] = 0;
2350+
const resetCounts = (languageId: number, modeBrackets: RichEditBrackets | null) => {
2351+
if (!savedCounts.has(languageId)) {
2352+
let tmp = [];
2353+
for (let i = 0, len = modeBrackets ? modeBrackets.brackets.length : 0; i < len; i++) {
2354+
tmp[i] = 0;
2355+
}
2356+
savedCounts.set(languageId, tmp);
23532357
}
2358+
counts = savedCounts.get(languageId)!;
23542359
};
23552360
const searchInRange = (modeBrackets: RichEditBrackets, lineNumber: number, lineText: string, searchStartOffset: number, searchEndOffset: number): [Range, Range] | null => {
23562361
while (true) {
@@ -2396,7 +2401,7 @@ export class TextModel extends Disposable implements model.ITextModel {
23962401
if (languageId !== tokenLanguageId) {
23972402
languageId = tokenLanguageId;
23982403
modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);
2399-
resetCounts(modeBrackets);
2404+
resetCounts(languageId, modeBrackets);
24002405
}
24012406
}
24022407

@@ -2415,7 +2420,7 @@ export class TextModel extends Disposable implements model.ITextModel {
24152420
}
24162421
languageId = tokenLanguageId;
24172422
modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);
2418-
resetCounts(modeBrackets);
2423+
resetCounts(languageId, modeBrackets);
24192424
}
24202425

24212426
const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));

0 commit comments

Comments
 (0)