diff --git a/src/vs/editor/contrib/suggest/suggest.ts b/src/vs/editor/contrib/suggest/suggest.ts index d12b0f7d117b6a4c374c8a5d88633a6ec34965f0..650701dea1f1e234a9edf3cd9dea441fe922529f 100644 --- a/src/vs/editor/contrib/suggest/suggest.ts +++ b/src/vs/editor/contrib/suggest/suggest.ts @@ -26,6 +26,7 @@ export const Context = { MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true), AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true), HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false), + InsertMode: new RawContextKey<'insert' | 'replace'>('suggestionInsertMode', undefined), CanResolve: new RawContextKey('suggestionCanResolve', false), }; diff --git a/src/vs/editor/contrib/suggest/suggestController.ts b/src/vs/editor/contrib/suggest/suggestController.ts index 43d10699e11ad81b0996f33c7a368c1827d64991..8bd4d44079e5528eac084c5ac527447b3e764a3e 100644 --- a/src/vs/editor/contrib/suggest/suggestController.ts +++ b/src/vs/editor/contrib/suggest/suggestController.ts @@ -124,6 +124,11 @@ export class SuggestController implements IEditorContribution { this.editor = editor; this.model = _instantiationService.createInstance(SuggestModel, this.editor,); + // context key: update insert/replace mode + const ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService); + ctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode); + this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode)); + this.widget = this._toDispose.add(new IdleValue(() => { const widget = this._instantiationService.createInstance(SuggestWidget, this.editor); @@ -654,13 +659,13 @@ MenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, { command: { id: 'acceptSelectedSuggestion', title: nls.localize('accept.insert', "Insert") }, group: 'left', order: 1, - when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'insert')) + when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')) }); MenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, { command: { id: 'acceptSelectedSuggestion', title: nls.localize('accept.replace', "Replace") }, group: 'left', order: 1, - when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'replace')) + when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')) }); registerEditorCommand(new SuggestCommand({ @@ -679,13 +684,13 @@ registerEditorCommand(new SuggestCommand({ menuId: suggestWidgetStatusbarMenu, group: 'left', order: 2, - when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'insert')), + when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')), title: nls.localize('accept.replace', "Replace") }, { menuId: suggestWidgetStatusbarMenu, group: 'left', order: 2, - when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'replace')), + when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')), title: nls.localize('accept.insert', "Insert") }] }));