diff --git a/src/vs/editor/common/model/bracketPairs/impl/brackets.ts b/src/vs/editor/common/model/bracketPairs/impl/brackets.ts index a205b39f867..45c20a30677 100644 --- a/src/vs/editor/common/model/bracketPairs/impl/brackets.ts +++ b/src/vs/editor/common/model/bracketPairs/impl/brackets.ts @@ -74,7 +74,7 @@ export class BracketTokens { const keys = [...this.map.keys()]; keys.sort(); keys.reverse(); - return keys.map(k => escapeRegExpCharacters(k)).join('|'); + return keys.map(k => prepareBracketForRegExp(k)).join('|'); } } @@ -99,6 +99,13 @@ export class BracketTokens { } } +function prepareBracketForRegExp(str: string): string { + const escaped = escapeRegExpCharacters(str); + // This bracket pair uses letters like e.g. "begin" - "end" (see https://github.com/microsoft/vscode/issues/132162) + const needsWordBoundaries = (/^[\w ]+$/.test(str)); + return (needsWordBoundaries ? `\\b${escaped}\\b` : escaped); +} + export class LanguageAgnosticBracketTokens { private readonly languageIdToBracketTokens = new Map();