From 23fa383f8b44f9491871cf1a3e2dfb088cfc3eb1 Mon Sep 17 00:00:00 2001 From: Henning Dieterichs Date: Tue, 17 Aug 2021 15:42:04 +0200 Subject: [PATCH] Fixes #130973: Accepting suggestions or inline suggestion now triggers an inline suggestion session. --- .../editor/contrib/inlineCompletions/consts.ts | 6 ++++++ .../inlineCompletions/ghostTextController.ts | 3 ++- .../inlineCompletions/inlineCompletionsModel.ts | 17 ++++++++++------- 3 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 src/vs/editor/contrib/inlineCompletions/consts.ts diff --git a/src/vs/editor/contrib/inlineCompletions/consts.ts b/src/vs/editor/contrib/inlineCompletions/consts.ts new file mode 100644 index 00000000000..31e5ea05757 --- /dev/null +++ b/src/vs/editor/contrib/inlineCompletions/consts.ts @@ -0,0 +1,6 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +export const inlineSuggestCommitId = 'editor.action.inlineSuggest.commit'; diff --git a/src/vs/editor/contrib/inlineCompletions/ghostTextController.ts b/src/vs/editor/contrib/inlineCompletions/ghostTextController.ts index c42f11b7e76..981e4129ffc 100644 --- a/src/vs/editor/contrib/inlineCompletions/ghostTextController.ts +++ b/src/vs/editor/contrib/inlineCompletions/ghostTextController.ts @@ -16,6 +16,7 @@ import { ContextKeyExpr, IContextKeyService, RawContextKey } from 'vs/platform/c import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { GhostTextModel } from 'vs/editor/contrib/inlineCompletions/ghostTextModel'; import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; +import { inlineSuggestCommitId } from 'vs/editor/contrib/inlineCompletions/consts'; export class GhostTextController extends Disposable { public static readonly inlineSuggestionVisible = new RawContextKey('inlineSuggestionVisible', false, nls.localize('inlineSuggestionVisible', "Whether an inline suggestion is visible")); @@ -168,7 +169,7 @@ export class ActiveGhostTextController extends Disposable { const GhostTextCommand = EditorCommand.bindToContribution(GhostTextController.get); export const commitInlineSuggestionAction = new GhostTextCommand({ - id: 'editor.action.inlineSuggest.commit', + id: inlineSuggestCommitId, precondition: GhostTextController.inlineSuggestionVisible, handler(x) { x.commit(); diff --git a/src/vs/editor/contrib/inlineCompletions/inlineCompletionsModel.ts b/src/vs/editor/contrib/inlineCompletions/inlineCompletionsModel.ts index d308444c90d..f0216c333f2 100644 --- a/src/vs/editor/contrib/inlineCompletions/inlineCompletionsModel.ts +++ b/src/vs/editor/contrib/inlineCompletions/inlineCompletionsModel.ts @@ -5,22 +5,23 @@ import { CancelablePromise, createCancelablePromise, RunOnceScheduler } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; +import { IDiffChange, LcsDiff } from 'vs/base/common/diff/diff'; import { onUnexpectedError, onUnexpectedExternalError } from 'vs/base/common/errors'; import { Emitter } from 'vs/base/common/event'; import { Disposable, IDisposable, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; import * as strings from 'vs/base/common/strings'; +import { CoreEditingCommands } from 'vs/editor/browser/controller/coreCommands'; import { IActiveCodeEditor } from 'vs/editor/browser/editorBrowser'; +import { RedoCommand, UndoCommand } from 'vs/editor/browser/editorExtensions'; +import { EditorOption } from 'vs/editor/common/config/editorOptions'; +import { EditOperation } from 'vs/editor/common/core/editOperation'; import { Position } from 'vs/editor/common/core/position'; import { Range } from 'vs/editor/common/core/range'; import { ITextModel } from 'vs/editor/common/model'; import { InlineCompletion, InlineCompletionContext, InlineCompletions, InlineCompletionsProvider, InlineCompletionsProviderRegistry, InlineCompletionTriggerKind } from 'vs/editor/common/modes'; -import { EditOperation } from 'vs/editor/common/core/editOperation'; import { ICommandService } from 'vs/platform/commands/common/commands'; -import { EditorOption } from 'vs/editor/common/config/editorOptions'; -import { RedoCommand, UndoCommand } from 'vs/editor/browser/editorExtensions'; -import { CoreEditingCommands } from 'vs/editor/browser/controller/coreCommands'; -import { IDiffChange, LcsDiff } from 'vs/base/common/diff/diff'; -import { GhostTextWidgetModel, GhostText, BaseGhostTextWidgetModel, GhostTextPart } from 'vs/editor/contrib/inlineCompletions/ghostText'; +import { inlineSuggestCommitId } from './consts'; +import { BaseGhostTextWidgetModel, GhostText, GhostTextPart, GhostTextWidgetModel } from './ghostText'; export class InlineCompletionsModel extends Disposable implements GhostTextWidgetModel { protected readonly onDidChangeEmitter = new Emitter(); @@ -44,7 +45,9 @@ export class InlineCompletionsModel extends Disposable implements GhostTextWidge RedoCommand.id, CoreEditingCommands.Tab.id, CoreEditingCommands.DeleteLeft.id, - CoreEditingCommands.DeleteRight.id + CoreEditingCommands.DeleteRight.id, + inlineSuggestCommitId, + 'acceptSelectedSuggestion' ]); if (commands.has(e.commandId) && editor.hasTextFocus()) { this.handleUserInput();