From 613dd2eb19d23671c0f4ceea698d3a6fd5d7695e Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Fri, 11 Nov 2016 16:43:28 +0100 Subject: [PATCH] work around broken snippet files --- src/vs/editor/contrib/snippet/common/snippet.ts | 11 +++++++++-- .../contrib/snippet/test/common/snippet.test.ts | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/vs/editor/contrib/snippet/common/snippet.ts b/src/vs/editor/contrib/snippet/common/snippet.ts index e5c7d545109..ee25c003b84 100644 --- a/src/vs/editor/contrib/snippet/common/snippet.ts +++ b/src/vs/editor/contrib/snippet/common/snippet.ts @@ -474,7 +474,7 @@ function _fillCodeSnippetFromMarker(snippet: CodeSnippet, marker: Marker[]) { snippet.lines.push(...lines); } else if (marker instanceof Placeholder) { - + // TODO - not every variable is a placeholder let placeHolder = placeHolders[marker.name]; if (!placeHolder) { placeHolders[marker.name] = placeHolder = { @@ -495,7 +495,14 @@ function _fillCodeSnippetFromMarker(snippet: CodeSnippet, marker: Marker[]) { endColumn: column + Marker.toString(marker.value).length // TODO multiline placeholders! }); - stack.unshift(...marker.value); + if (marker.value.length === 0 && marker.isVariable) { + // HACK this is here because we falsy advertise + // ${foo} as placeholder in our own snippets + stack.unshift(new Text(marker.name)); + + } else { + stack.unshift(...marker.value); + } } } diff --git a/src/vs/editor/contrib/snippet/test/common/snippet.test.ts b/src/vs/editor/contrib/snippet/test/common/snippet.test.ts index 78df31697ed..0940373182b 100644 --- a/src/vs/editor/contrib/snippet/test/common/snippet.test.ts +++ b/src/vs/editor/contrib/snippet/test/common/snippet.test.ts @@ -73,7 +73,7 @@ suite('Editor Contrib - Snippets', () => { assertInternalAndTextmate( '{{first}}-{{2:}}-{{second}}-{{1:}}', - '${first:first}-${2}-${second:second}-${1}', + '${first}-${2}-${second}-${1}', snippet => { assert.deepEqual(snippet.lines, ['first--second-']); assert.equal(snippet.placeHolders.length, 4);