diff --git a/src/vs/workbench/api/node/extHostTypeConverters.ts b/src/vs/workbench/api/node/extHostTypeConverters.ts index 96b275af75f..bf942604411 100644 --- a/src/vs/workbench/api/node/extHostTypeConverters.ts +++ b/src/vs/workbench/api/node/extHostTypeConverters.ts @@ -512,6 +512,7 @@ export namespace Suggest { result.documentation = htmlContent.isMarkdownString(suggestion.documentation) ? MarkdownString.to(suggestion.documentation) : suggestion.documentation; result.sortText = suggestion.sortText; result.filterText = suggestion.filterText; + result.preselect = suggestion.preselect; // 'overwrite[Before|After]'-logic let overwriteBefore = (typeof suggestion.overwriteBefore === 'number') ? suggestion.overwriteBefore : 0; diff --git a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts index ba37b81ff7d..80a57fac79c 100644 --- a/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts +++ b/src/vs/workbench/test/electron-browser/api/extHostApiCommands.test.ts @@ -450,6 +450,38 @@ suite('ExtHostLanguageFeatureCommands', function () { }); + test('"vscode.executeCompletionItemProvider" doesnot return a preselect field #53749', async function () { + disposables.push(extHost.registerCompletionItemProvider(defaultSelector, { + provideCompletionItems(): any { + let a = new types.CompletionItem('item1'); + a.preselect = true; + let b = new types.CompletionItem('item2'); + let c = new types.CompletionItem('item3'); + c.preselect = true; + let d = new types.CompletionItem('item4'); + return new types.CompletionList([a, b, c, d], false); + } + }, [])); + + await rpcProtocol.sync(); + + let list = await commands.executeCommand( + 'vscode.executeCompletionItemProvider', + model.uri, + new types.Position(0, 4), + undefined + ); + + assert.ok(list instanceof types.CompletionList); + assert.equal(list.items.length, 4); + + let [a, b, c, d] = list.items; + assert.equal(a.preselect, true); + assert.equal(b.preselect, undefined); + assert.equal(c.preselect, true); + assert.equal(d.preselect, undefined); + }); + // --- quickfix test('QuickFix, back and forth', function () {