From e9e861fa4ead6529aefc84cf8004e7f9960576a4 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Wed, 27 Oct 2021 16:49:26 +0200 Subject: [PATCH] Fixes #132162 by adding \b to brackets that use letters. Uses same logic as existing bracket matching code. --- src/vs/editor/common/model/bracketPairs/impl/brackets.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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();