Skip to content

Commit af9e425

Browse files
committed
Fixes microsoft#86410: Fix issue with embedded modes where the entire line text should be looked at to decide if electric characters should run
1 parent 03dff92 commit af9e425

2 files changed

Lines changed: 12 additions & 8 deletions

File tree

src/vs/editor/common/modes/supports.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ export class ScopedLineTokens {
6262
return actualLineContent.substring(this.firstCharOffset, this._lastCharOffset);
6363
}
6464

65+
public getActualLineContentBefore(offset: number): string {
66+
const actualLineContent = this._actual.getLineContent();
67+
return actualLineContent.substring(0, this.firstCharOffset + offset);
68+
}
69+
6570
public getTokenCount(): number {
6671
return this._lastTokenIndex - this._firstTokenIndex;
6772
}

src/vs/editor/common/modes/supports/electricCharacter.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,28 +49,27 @@ export class BracketElectricCharacterSupport {
4949
return null;
5050
}
5151

52-
let tokenIndex = context.findTokenIndexAtOffset(column - 1);
52+
const tokenIndex = context.findTokenIndexAtOffset(column - 1);
5353
if (ignoreBracketsInToken(context.getStandardTokenType(tokenIndex))) {
5454
return null;
5555
}
5656

57-
let reversedBracketRegex = this._richEditBrackets.reversedRegex;
58-
let text = context.getLineContent().substring(0, column - 1) + character;
57+
const reversedBracketRegex = this._richEditBrackets.reversedRegex;
58+
const text = context.getLineContent().substring(0, column - 1) + character;
5959

60-
let r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);
60+
const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);
6161
if (!r) {
6262
return null;
6363
}
6464

65-
let bracketText = text.substring(r.startColumn - 1, r.endColumn - 1);
66-
bracketText = bracketText.toLowerCase();
65+
const bracketText = text.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();
6766

68-
let isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];
67+
const isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];
6968
if (isOpen) {
7069
return null;
7170
}
7271

73-
let textBeforeBracket = text.substring(0, r.startColumn - 1);
72+
const textBeforeBracket = context.getActualLineContentBefore(r.startColumn - 1);
7473
if (!/^\s*$/.test(textBeforeBracket)) {
7574
// There is other text on the line before the bracket
7675
return null;

0 commit comments

Comments
 (0)