From 62e0f34a3569f2cab4d16b2ef36dde285d39a9cf Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Mon, 18 Jun 2018 16:07:19 +0200 Subject: [PATCH] add CompletionItem#preselect, #35551 --- src/vs/editor/common/modes.ts | 2 +- src/vs/editor/contrib/suggest/suggestMemory.ts | 2 +- .../contrib/suggest/test/suggestMemory.test.ts | 12 ++++++------ src/vs/vscode.d.ts | 7 +++++++ src/vs/workbench/api/node/extHostLanguageFeatures.ts | 1 + src/vs/workbench/api/node/extHostTypes.ts | 4 +++- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index b85d9a1053057..0f14cfc72265c 100644 --- a/src/vs/editor/common/modes.ts +++ b/src/vs/editor/common/modes.ts @@ -293,7 +293,7 @@ export interface ISuggestion { documentation?: string | IMarkdownString; filterText?: string; sortText?: string; - autoSelect?: boolean; + preselect?: boolean; noAutoAccept?: boolean; commitCharacters?: string[]; overwriteBefore?: number; diff --git a/src/vs/editor/contrib/suggest/suggestMemory.ts b/src/vs/editor/contrib/suggest/suggestMemory.ts index 62eccf9ab0408..e278a619c962e 100644 --- a/src/vs/editor/contrib/suggest/suggestMemory.ts +++ b/src/vs/editor/contrib/suggest/suggestMemory.ts @@ -24,7 +24,7 @@ export abstract class Memory { // stop when leaving the group of top matches break; } - if (suggestion.autoSelect) { + if (suggestion.preselect) { // stop when seeing an auto-select-item return i; } diff --git a/src/vs/editor/contrib/suggest/test/suggestMemory.test.ts b/src/vs/editor/contrib/suggest/test/suggestMemory.test.ts index 1ab9368e28683..02509927e620f 100644 --- a/src/vs/editor/contrib/suggest/test/suggestMemory.test.ts +++ b/src/vs/editor/contrib/suggest/test/suggestMemory.test.ts @@ -45,9 +45,9 @@ suite('SuggestMemories', function () { let item2 = createSuggestItem('bazz', 0); let item3 = createSuggestItem('bazz', 0); let item4 = createSuggestItem('bazz', 0); - item1.suggestion.autoSelect = false; - item2.suggestion.autoSelect = true; - item3.suggestion.autoSelect = true; + item1.suggestion.preselect = false; + item2.suggestion.preselect = true; + item3.suggestion.preselect = true; assert.equal(mem.select(buffer, pos, [item1, item2, item3, item4]), 1); }); @@ -57,9 +57,9 @@ suite('SuggestMemories', function () { let item2 = createSuggestItem('bazz', 0); let item3 = createSuggestItem('bazz', 0); let item4 = createSuggestItem('bazz', 0); - item1.suggestion.autoSelect = false; - item2.suggestion.autoSelect = true; - item3.suggestion.autoSelect = true; + item1.suggestion.preselect = false; + item2.suggestion.preselect = true; + item3.suggestion.preselect = true; let items = [item1, item2, item3, item4]; diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 22a0db8c56259..9249356bddee2 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3105,6 +3105,13 @@ declare module 'vscode' { */ filterText?: string; + /** + * Select this item when showing. *Note* that only one completion item can be selected and + * that the editor decides which item that is. The rule is that the *first* item of those + * that match best is selected. + */ + preselect?: boolean; + /** * A string or snippet that should be inserted in a document when selecting * this completion. When `falsy` the [label](#CompletionItem.label) diff --git a/src/vs/workbench/api/node/extHostLanguageFeatures.ts b/src/vs/workbench/api/node/extHostLanguageFeatures.ts index 44ed5cb0131f1..0e819350fc0ab 100644 --- a/src/vs/workbench/api/node/extHostLanguageFeatures.ts +++ b/src/vs/workbench/api/node/extHostLanguageFeatures.ts @@ -662,6 +662,7 @@ class SuggestAdapter { documentation: item.documentation, filterText: item.filterText, sortText: item.sortText, + preselect: item.preselect, // insertText: undefined, additionalTextEdits: item.additionalTextEdits && item.additionalTextEdits.map(typeConvert.TextEdit.from), diff --git a/src/vs/workbench/api/node/extHostTypes.ts b/src/vs/workbench/api/node/extHostTypes.ts index fd232ad782220..e06d371676eed 100644 --- a/src/vs/workbench/api/node/extHostTypes.ts +++ b/src/vs/workbench/api/node/extHostTypes.ts @@ -1073,7 +1073,7 @@ export enum CompletionItemKind { TypeParameter = 24 } -export class CompletionItem { +export class CompletionItem implements vscode.CompletionItem { label: string; kind: CompletionItemKind; @@ -1081,6 +1081,7 @@ export class CompletionItem { documentation: string | MarkdownString; sortText: string; filterText: string; + preselect: boolean; insertText: string | SnippetString; range: Range; textEdit: TextEdit; @@ -1100,6 +1101,7 @@ export class CompletionItem { documentation: this.documentation, sortText: this.sortText, filterText: this.filterText, + preselect: this.preselect, insertText: this.insertText, textEdit: this.textEdit };