42
43
public onElectricCharacter(character: string, context: ScopedLineTokens, column: number): IElectricAction | null {
44
>
if (!this._richEditBrackets || this._richEditBrackets.brackets.length === 0) {
electricCharacter.ts
45
return null;
46
}
48
>
const tokenIndex = context.findTokenIndexAtOffset(column - 1);
49
>
if (ignoreBracketsInToken(context.getStandardTokenType(tokenIndex))) {
50
return null;
51
}
53
>
const reversedBracketRegex = this._richEditBrackets.reversedRegex;
54
>
const text = context.getLineContent().substring(0, column - 1) + character;
55
>
56
>
const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);
57
>
if (!r) {
58
>
return null;
59
>
}
60
>
61
>
const bracketText = text.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();
62
>
63
>
const isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];
64
>
if (isOpen) {
65
>
return null;
66
>
}
67
>
68
>
const textBeforeBracket = context.getActualLineContentBefore(r.startColumn - 1);
69
>
if (!/^\s*$/.test(textBeforeBracket)) {
70
// There is other text on the line before the bracket
71
return null;
72
}
74
>
return {
75
>
matchOpenBracket: bracketText
76
>
};
77
>
}
78
}