Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { EditorContributionInstantiation, registerEditorContribution } from '../../../../editor/browser/editorExtensions.js';
7
import { IMenuItem, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';
8
import { InlineChatController, InlineChatController1, InlineChatController2 } from './inlineChatController.js';
9
import * as InlineChatActions from './inlineChatActions.js';
10
import { 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';
11
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
12
import { Registry } from '../../../../platform/registry/common/platform.js';
13
import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';
14
import { InlineChatNotebookContribution } from './inlineChatNotebook.js';
15
import { IWorkbenchContributionsRegistry, registerWorkbenchContribution2, Extensions as WorkbenchExtensions, WorkbenchPhase } from '../../../common/contributions.js';
16
import { InlineChatAccessibleView } from './inlineChatAccessibleView.js';
17
import { IInlineChatSessionService } from './inlineChatSessionService.js';
18
import { InlineChatEnabler, InlineChatSessionServiceImpl } from './inlineChatSessionServiceImpl.js';
19
import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';
20
import { CancelAction, ChatSubmitAction } from '../../chat/browser/actions/chatExecuteActions.js';
21
import { localize } from '../../../../nls.js';
22
import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';
23
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
24
import { InlineChatAccessibilityHelp } from './inlineChatAccessibilityHelp.js';
25
import { InlineChatExpandLineAction, InlineChatHintsController, HideInlineChatHintAction, ShowInlineChatHintAction } from './inlineChatCurrentLine.js';
26
27
registerEditorContribution(InlineChatController2.ID, InlineChatController2, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
28
registerEditorContribution(INLINE_CHAT_ID, InlineChatController1, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
29
registerEditorContribution(InlineChatController.ID, InlineChatController, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
30
31
registerAction2(InlineChatActions.KeepSessionAction2);
32
registerAction2(InlineChatActions.UndoSessionAction2);
33
registerAction2(InlineChatActions.CloseSessionAction2);
34
registerAction2(InlineChatActions.RevealWidget);
35
registerAction2(InlineChatActions.CancelRequestAction);
36
37
// --- browser
38
39
registerSingleton(IInlineChatSessionService, InlineChatSessionServiceImpl, InstantiationType.Delayed);
40
41
42
registerAction2(InlineChatExpandLineAction);
43
registerAction2(ShowInlineChatHintAction);
44
registerAction2(HideInlineChatHintAction);
45
registerEditorContribution(InlineChatHintsController.ID, InlineChatHintsController, EditorContributionInstantiation.Eventually);
46
47
// --- MENU special ---
48
49
const editActionMenuItem: IMenuItem = {
50
group: '0_main',
51
order: 0,
52
command: {
53
id: ChatSubmitAction.ID,
54
title: localize('send.edit', "Edit Code"),
55
},
56
when: ContextKeyExpr.and(
57
ChatContextKeys.inputHasText,
58
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
59
CTX_INLINE_CHAT_EDITING,
60
CTX_INLINE_CHAT_HAS_AGENT
61
),
62
};
63
64
const generateActionMenuItem: IMenuItem = {
65
group: '0_main',
66
order: 0,
67
command: {
68
id: ChatSubmitAction.ID,
69
title: localize('send.generate', "Generate"),
70
},
71
when: ContextKeyExpr.and(
72
ChatContextKeys.inputHasText,
73
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
74
CTX_INLINE_CHAT_EDITING.toNegated(),
75
CTX_INLINE_CHAT_HAS_AGENT
76
),
77
};
78
79
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, editActionMenuItem);
80
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, generateActionMenuItem);
81
82
const cancelActionMenuItem: IMenuItem = {
83
group: '0_main',
84
order: 0,
85
command: {
86
id: CancelAction.ID,
87
title: localize('cancel', "Cancel Request"),
88
shortTitle: localize('cancelShort', "Cancel"),
89
},
90
when: ContextKeyExpr.and(
91
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS,
92
),
93
};
94
95
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, cancelActionMenuItem);
96
97
// --- actions ---
98
99
registerAction2(InlineChatActions.StartSessionAction);
100
registerAction2(InlineChatActions.CloseAction);
101
registerAction2(InlineChatActions.ConfigureInlineChatAction);
102
registerAction2(InlineChatActions.UnstashSessionAction);
103
registerAction2(InlineChatActions.DiscardHunkAction);
104
registerAction2(InlineChatActions.RerunAction);
105
registerAction2(InlineChatActions.MoveToNextHunk);
106
registerAction2(InlineChatActions.MoveToPreviousHunk);
107
108
registerAction2(InlineChatActions.ArrowOutUpAction);
109
registerAction2(InlineChatActions.ArrowOutDownAction);
110
registerAction2(InlineChatActions.FocusInlineChat);
111
registerAction2(InlineChatActions.ViewInChatAction);
112
113
registerAction2(InlineChatActions.ToggleDiffForChange);
114
registerAction2(InlineChatActions.AcceptChanges);
115
116
const workbenchContributionsRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
117
workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookContribution, LifecyclePhase.Restored);
118
119
registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);
120
AccessibleViewRegistry.register(new InlineChatAccessibleView());
121
AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());
122
123