diff --git a/src/vs/editor/contrib/snippet/common/snippetParser.ts b/src/vs/editor/contrib/snippet/common/snippetParser.ts index 9bc94c69915da9a06419d80acb9af89c7b9ede21..a29f1a02f46518727d5d91515a1503d45cef412c 100644 --- a/src/vs/editor/contrib/snippet/common/snippetParser.ts +++ b/src/vs/editor/contrib/snippet/common/snippetParser.ts @@ -373,7 +373,7 @@ export class SnippetParser { if (// Internal style (this._enableInternal && (this._accept(TokenType.CurlyOpen) || this._accept(TokenType.CurlyClose) || this._accept(TokenType.Backslash))) // TextMate style - || (this._enableTextMate && (this._accept(TokenType.Dollar) || this._accept(TokenType.CurlyClose))) + || (this._enableTextMate && (this._accept(TokenType.Dollar) || this._accept(TokenType.CurlyClose) || this._accept(TokenType.Backslash))) ) { // just consume them } diff --git a/src/vs/editor/contrib/snippet/test/common/snippetParser.test.ts b/src/vs/editor/contrib/snippet/test/common/snippetParser.test.ts index 33c9042727607c12932659f1ff2c1cd8cdc89288..d6d1907651d7dfb6efb6a9cb4ced089b520422eb 100644 --- a/src/vs/editor/contrib/snippet/test/common/snippetParser.test.ts +++ b/src/vs/editor/contrib/snippet/test/common/snippetParser.test.ts @@ -281,4 +281,9 @@ suite('SnippetParser', () => { assert.equal(((p2).defaultValue[0]), 'err'); }); + + test('backspace esapce in TM only, #16212', () => { + const actual = new SnippetParser(true, false).escape('Foo \\\\${abc}bar'); + assert.equal(actual, 'Foo \\bar'); + }); });