mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 10:08:49 +01:00
116 lines
5.5 KiB
TypeScript
116 lines
5.5 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { EditorContributionInstantiation, registerEditorContribution } from '../../../../editor/browser/editorExtensions.js';
|
|
import { IMenuItem, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';
|
|
import { InlineChatController } from './inlineChatController.js';
|
|
import * as InlineChatActions from './inlineChatActions.js';
|
|
import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, INLINE_CHAT_ID, MENU_INLINE_CHAT_WIDGET_STATUS } from '../common/inlineChat.js';
|
|
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
|
|
import { Registry } from '../../../../platform/registry/common/platform.js';
|
|
import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';
|
|
import { InlineChatNotebookContribution } from './inlineChatNotebook.js';
|
|
import { IWorkbenchContributionsRegistry, registerWorkbenchContribution2, Extensions as WorkbenchExtensions, WorkbenchPhase } from '../../../common/contributions.js';
|
|
import { InlineChatAccessibleView } from './inlineChatAccessibleView.js';
|
|
import { IInlineChatSessionService } from './inlineChatSessionService.js';
|
|
import { InlineChatEnabler, InlineChatSessionServiceImpl } from './inlineChatSessionServiceImpl.js';
|
|
import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';
|
|
import { CancelAction, ChatSubmitAction } from '../../chat/browser/actions/chatExecuteActions.js';
|
|
import { localize } from '../../../../nls.js';
|
|
import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';
|
|
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
|
|
import { InlineChatAccessibilityHelp } from './inlineChatAccessibilityHelp.js';
|
|
import { InlineChatExpandLineAction, InlineChatHintsController, HideInlineChatHintAction, ShowInlineChatHintAction } from './inlineChatCurrentLine.js';
|
|
import { InlineChatController2, StartSessionAction2, StopSessionAction2 } from './inlineChatController2.js';
|
|
|
|
registerEditorContribution(InlineChatController2.ID, InlineChatController2, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
|
|
registerAction2(StartSessionAction2);
|
|
registerAction2(StopSessionAction2);
|
|
|
|
// --- browser
|
|
|
|
registerSingleton(IInlineChatSessionService, InlineChatSessionServiceImpl, InstantiationType.Delayed);
|
|
|
|
registerEditorContribution(INLINE_CHAT_ID, InlineChatController, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
|
|
|
|
registerAction2(InlineChatExpandLineAction);
|
|
registerAction2(ShowInlineChatHintAction);
|
|
registerAction2(HideInlineChatHintAction);
|
|
registerEditorContribution(InlineChatHintsController.ID, InlineChatHintsController, EditorContributionInstantiation.Eventually);
|
|
|
|
// --- MENU special ---
|
|
|
|
const editActionMenuItem: IMenuItem = {
|
|
group: '0_main',
|
|
order: 0,
|
|
command: {
|
|
id: ChatSubmitAction.ID,
|
|
title: localize('send.edit', "Edit Code"),
|
|
},
|
|
when: ContextKeyExpr.and(
|
|
ChatContextKeys.inputHasText,
|
|
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
|
|
CTX_INLINE_CHAT_EDITING
|
|
),
|
|
};
|
|
|
|
const generateActionMenuItem: IMenuItem = {
|
|
group: '0_main',
|
|
order: 0,
|
|
command: {
|
|
id: ChatSubmitAction.ID,
|
|
title: localize('send.generate', "Generate"),
|
|
},
|
|
when: ContextKeyExpr.and(
|
|
ChatContextKeys.inputHasText,
|
|
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
|
|
CTX_INLINE_CHAT_EDITING.toNegated()
|
|
),
|
|
};
|
|
|
|
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, editActionMenuItem);
|
|
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, generateActionMenuItem);
|
|
|
|
const cancelActionMenuItem: IMenuItem = {
|
|
group: '0_main',
|
|
order: 0,
|
|
command: {
|
|
id: CancelAction.ID,
|
|
title: localize('cancel', "Cancel Request"),
|
|
shortTitle: localize('cancelShort', "Cancel"),
|
|
},
|
|
when: ContextKeyExpr.and(
|
|
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS,
|
|
),
|
|
};
|
|
|
|
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, cancelActionMenuItem);
|
|
|
|
// --- actions ---
|
|
|
|
registerAction2(InlineChatActions.StartSessionAction);
|
|
registerAction2(InlineChatActions.CloseAction);
|
|
registerAction2(InlineChatActions.ConfigureInlineChatAction);
|
|
registerAction2(InlineChatActions.UnstashSessionAction);
|
|
registerAction2(InlineChatActions.DiscardHunkAction);
|
|
registerAction2(InlineChatActions.RerunAction);
|
|
registerAction2(InlineChatActions.MoveToNextHunk);
|
|
registerAction2(InlineChatActions.MoveToPreviousHunk);
|
|
|
|
registerAction2(InlineChatActions.ArrowOutUpAction);
|
|
registerAction2(InlineChatActions.ArrowOutDownAction);
|
|
registerAction2(InlineChatActions.FocusInlineChat);
|
|
registerAction2(InlineChatActions.ViewInChatAction);
|
|
|
|
registerAction2(InlineChatActions.ToggleDiffForChange);
|
|
registerAction2(InlineChatActions.AcceptChanges);
|
|
|
|
const workbenchContributionsRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
|
|
workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookContribution, LifecyclePhase.Restored);
|
|
|
|
registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);
|
|
AccessibleViewRegistry.register(new InlineChatAccessibleView());
|
|
AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());
|