Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { EditorContributionInstantiation, registerEditorContribution } from '../../../../editor/browser/editorExtensions.js';6import { IMenuItem, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';7import { InlineChatController, InlineChatController1, InlineChatController2 } from './inlineChatController.js';8import * as InlineChatActions from './inlineChatActions.js';9import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, INLINE_CHAT_ID, MENU_INLINE_CHAT_WIDGET_STATUS } from '../common/inlineChat.js';10import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';11import { Registry } from '../../../../platform/registry/common/platform.js';12import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';13import { InlineChatNotebookContribution } from './inlineChatNotebook.js';14import { IWorkbenchContributionsRegistry, registerWorkbenchContribution2, Extensions as WorkbenchExtensions, WorkbenchPhase } from '../../../common/contributions.js';15import { InlineChatAccessibleView } from './inlineChatAccessibleView.js';16import { IInlineChatSessionService } from './inlineChatSessionService.js';17import { InlineChatEnabler, InlineChatSessionServiceImpl } from './inlineChatSessionServiceImpl.js';18import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';19import { CancelAction, ChatSubmitAction } from '../../chat/browser/actions/chatExecuteActions.js';20import { localize } from '../../../../nls.js';21import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';22import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';23import { InlineChatAccessibilityHelp } from './inlineChatAccessibilityHelp.js';24import { InlineChatExpandLineAction, InlineChatHintsController, HideInlineChatHintAction, ShowInlineChatHintAction } from './inlineChatCurrentLine.js';2526registerEditorContribution(InlineChatController2.ID, InlineChatController2, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors27registerEditorContribution(INLINE_CHAT_ID, InlineChatController1, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors28registerEditorContribution(InlineChatController.ID, InlineChatController, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors2930registerAction2(InlineChatActions.KeepSessionAction2);31registerAction2(InlineChatActions.UndoSessionAction2);32registerAction2(InlineChatActions.CloseSessionAction2);33registerAction2(InlineChatActions.RevealWidget);34registerAction2(InlineChatActions.CancelRequestAction);3536// --- browser3738registerSingleton(IInlineChatSessionService, InlineChatSessionServiceImpl, InstantiationType.Delayed);394041registerAction2(InlineChatExpandLineAction);42registerAction2(ShowInlineChatHintAction);43registerAction2(HideInlineChatHintAction);44registerEditorContribution(InlineChatHintsController.ID, InlineChatHintsController, EditorContributionInstantiation.Eventually);4546// --- MENU special ---4748const editActionMenuItem: IMenuItem = {49group: '0_main',50order: 0,51command: {52id: ChatSubmitAction.ID,53title: localize('send.edit', "Edit Code"),54},55when: ContextKeyExpr.and(56ChatContextKeys.inputHasText,57CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),58CTX_INLINE_CHAT_EDITING,59CTX_INLINE_CHAT_HAS_AGENT60),61};6263const generateActionMenuItem: IMenuItem = {64group: '0_main',65order: 0,66command: {67id: ChatSubmitAction.ID,68title: localize('send.generate', "Generate"),69},70when: ContextKeyExpr.and(71ChatContextKeys.inputHasText,72CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),73CTX_INLINE_CHAT_EDITING.toNegated(),74CTX_INLINE_CHAT_HAS_AGENT75),76};7778MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, editActionMenuItem);79MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, generateActionMenuItem);8081const cancelActionMenuItem: IMenuItem = {82group: '0_main',83order: 0,84command: {85id: CancelAction.ID,86title: localize('cancel', "Cancel Request"),87shortTitle: localize('cancelShort', "Cancel"),88},89when: ContextKeyExpr.and(90CTX_INLINE_CHAT_REQUEST_IN_PROGRESS,91),92};9394MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, cancelActionMenuItem);9596// --- actions ---9798registerAction2(InlineChatActions.StartSessionAction);99registerAction2(InlineChatActions.CloseAction);100registerAction2(InlineChatActions.ConfigureInlineChatAction);101registerAction2(InlineChatActions.UnstashSessionAction);102registerAction2(InlineChatActions.DiscardHunkAction);103registerAction2(InlineChatActions.RerunAction);104registerAction2(InlineChatActions.MoveToNextHunk);105registerAction2(InlineChatActions.MoveToPreviousHunk);106107registerAction2(InlineChatActions.ArrowOutUpAction);108registerAction2(InlineChatActions.ArrowOutDownAction);109registerAction2(InlineChatActions.FocusInlineChat);110registerAction2(InlineChatActions.ViewInChatAction);111112registerAction2(InlineChatActions.ToggleDiffForChange);113registerAction2(InlineChatActions.AcceptChanges);114115const workbenchContributionsRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);116workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookContribution, LifecyclePhase.Restored);117118registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);119AccessibleViewRegistry.register(new InlineChatAccessibleView());120AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());121122123