diff --git a/src/vs/editor/common/modes.ts b/src/vs/editor/common/modes.ts index b85d9a10530..0f14cfc7226 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 62eccf9ab04..e278a619c96 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 1ab9368e286..02509927e62 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 22a0db8c562..9249356bdde 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 44ed5cb0131..0e819350fc0 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 fd232ad7822..e06d371676e 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 };