diff --git a/src/vs/editor/contrib/suggest/suggestController.ts b/src/vs/editor/contrib/suggest/suggestController.ts index aac58cf801d8fd73b3892efc8afc2bdcc4268d64..958cff7b5340a0ba57005e9ba925b03f9c795963 100644 --- a/src/vs/editor/contrib/suggest/suggestController.ts +++ b/src/vs/editor/contrib/suggest/suggestController.ts @@ -370,6 +370,10 @@ export class SuggestController implements IEditorContribution { this._widget.getValue().toggleDetails(); } + toggleExplainMode(): void { + this._widget.getValue().toggleExplainMode(); + } + toggleSuggestionFocus(): void { this._widget.getValue().toggleDetailsFocus(); } @@ -521,6 +525,16 @@ registerEditorCommand(new SuggestCommand({ } })); +registerEditorCommand(new SuggestCommand({ + id: 'toggleExplainMode', + precondition: SuggestContext.Visible, + handler: x => x.toggleExplainMode(), + kbOpts: { + weight: KeybindingWeight.EditorContrib, + primary: KeyMod.CtrlCmd | KeyCode.US_SLASH, + } +})); + registerEditorCommand(new SuggestCommand({ id: 'toggleSuggestionFocus', precondition: SuggestContext.Visible, diff --git a/src/vs/editor/contrib/suggest/suggestWidget.ts b/src/vs/editor/contrib/suggest/suggestWidget.ts index f14ccafe1154a0eab77df077bdd6044aa3e958f6..6817d5c8f51272a41a9f81a789b26e5ff8536462 100644 --- a/src/vs/editor/contrib/suggest/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/suggestWidget.ts @@ -38,8 +38,6 @@ import { URI } from 'vs/base/common/uri'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { FileKind } from 'vs/platform/files/common/files'; import { MarkdownString } from 'vs/base/common/htmlContent'; -import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; const expandSuggestionDocsByDefault = false; @@ -231,17 +229,6 @@ const enum State { } -let _explainMode = false; -KeybindingsRegistry.registerCommandAndKeybindingRule({ - id: 'suggest.toggleExplainMode', - handler() { - _explainMode = !_explainMode; - }, - when: SuggestContext.Visible, - weight: KeybindingWeight.EditorContrib, - primary: KeyMod.CtrlCmd | KeyCode.US_SLASH, -}); - class SuggestionDetails { private el: HTMLElement; @@ -300,13 +287,13 @@ class SuggestionDetails { this.docs.textContent = ''; } - renderItem(item: CompletionItem): void { + renderItem(item: CompletionItem, explainMode: boolean): void { this.renderDisposeable = dispose(this.renderDisposeable); let { documentation, detail } = item.completion; // --- documentation - if (_explainMode) { + if (explainMode) { let md = ''; md += `score: ${item.score[0]}${item.word ? `, compared '${item.completion.filterText && (item.completion.filterText + ' (filterText)') || item.completion.label}' with '${item.word}'` : ' (no prefix)'}\n`; md += `distance: ${item.distance}, see localityBonus-setting\n`; @@ -315,7 +302,7 @@ class SuggestionDetails { detail = `Provider: ${item.provider._debugDisplayName}`; } - if (!_explainMode && !canExpandCompletionItem(item)) { + if (!explainMode && !canExpandCompletionItem(item)) { this.type.textContent = ''; this.docs.textContent = ''; addClass(this.el, 'no-docs'); @@ -477,6 +464,7 @@ export class SuggestWidget implements IContentWidget, IListVirtualDelegate