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
5222 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 './inlineChatDefaultModel.js';
7
8
import { EditorContributionInstantiation, registerEditorContribution } from '../../../../editor/browser/editorExtensions.js';
9
import { IMenuItem, MenuRegistry, registerAction2 } from '../../../../platform/actions/common/actions.js';
10
import { InlineChatController } from './inlineChatController.js';
11
import * as InlineChatActions from './inlineChatActions.js';
12
import { CTX_INLINE_CHAT_EDITING, CTX_INLINE_CHAT_V1_ENABLED, CTX_INLINE_CHAT_REQUEST_IN_PROGRESS, MENU_INLINE_CHAT_WIDGET_STATUS } from '../common/inlineChat.js';
13
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
14
import { Registry } from '../../../../platform/registry/common/platform.js';
15
import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';
16
import { InlineChatNotebookContribution } from './inlineChatNotebook.js';
17
import { IWorkbenchContributionsRegistry, registerWorkbenchContribution2, Extensions as WorkbenchExtensions, WorkbenchPhase } from '../../../common/contributions.js';
18
import { IInlineChatSessionService } from './inlineChatSessionService.js';
19
import { InlineChatEnabler, InlineChatEscapeToolContribution, InlineChatSessionServiceImpl } from './inlineChatSessionServiceImpl.js';
20
import { AccessibleViewRegistry } from '../../../../platform/accessibility/browser/accessibleViewRegistry.js';
21
import { CancelAction, ChatSubmitAction } from '../../chat/browser/actions/chatExecuteActions.js';
22
import { localize } from '../../../../nls.js';
23
import { ChatContextKeys } from '../../chat/common/actions/chatContextKeys.js';
24
import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
25
import { InlineChatAccessibilityHelp } from './inlineChatAccessibilityHelp.js';
26
27
registerEditorContribution(InlineChatController.ID, InlineChatController, EditorContributionInstantiation.Eager); // EAGER because of notebook dispose/create of editors
28
29
registerAction2(InlineChatActions.KeepSessionAction2);
30
registerAction2(InlineChatActions.UndoSessionAction2);
31
registerAction2(InlineChatActions.UndoAndCloseSessionAction2);
32
33
// --- browser
34
35
registerSingleton(IInlineChatSessionService, InlineChatSessionServiceImpl, InstantiationType.Delayed);
36
37
// --- MENU special ---
38
39
const editActionMenuItem: IMenuItem = {
40
group: '0_main',
41
order: 0,
42
command: {
43
id: ChatSubmitAction.ID,
44
title: localize('send.edit', "Edit Code"),
45
},
46
when: ContextKeyExpr.and(
47
ChatContextKeys.inputHasText,
48
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
49
CTX_INLINE_CHAT_EDITING,
50
CTX_INLINE_CHAT_V1_ENABLED
51
),
52
};
53
54
const generateActionMenuItem: IMenuItem = {
55
group: '0_main',
56
order: 0,
57
command: {
58
id: ChatSubmitAction.ID,
59
title: localize('send.generate', "Generate"),
60
},
61
when: ContextKeyExpr.and(
62
ChatContextKeys.inputHasText,
63
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS.toNegated(),
64
CTX_INLINE_CHAT_EDITING.toNegated(),
65
CTX_INLINE_CHAT_V1_ENABLED
66
),
67
};
68
69
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, editActionMenuItem);
70
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, generateActionMenuItem);
71
72
const cancelActionMenuItem: IMenuItem = {
73
group: '0_main',
74
order: 0,
75
command: {
76
id: CancelAction.ID,
77
title: localize('cancel', "Cancel Request"),
78
shortTitle: localize('cancelShort', "Cancel"),
79
},
80
when: ContextKeyExpr.and(
81
CTX_INLINE_CHAT_REQUEST_IN_PROGRESS,
82
),
83
};
84
85
MenuRegistry.appendMenuItem(MENU_INLINE_CHAT_WIDGET_STATUS, cancelActionMenuItem);
86
87
// --- actions ---
88
89
registerAction2(InlineChatActions.StartSessionAction);
90
registerAction2(InlineChatActions.FocusInlineChat);
91
92
93
const workbenchContributionsRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
94
workbenchContributionsRegistry.registerWorkbenchContribution(InlineChatNotebookContribution, LifecyclePhase.Restored);
95
96
registerWorkbenchContribution2(InlineChatEnabler.Id, InlineChatEnabler, WorkbenchPhase.AfterRestored);
97
registerWorkbenchContribution2(InlineChatEscapeToolContribution.Id, InlineChatEscapeToolContribution, WorkbenchPhase.AfterRestored);
98
AccessibleViewRegistry.register(new InlineChatAccessibilityHelp());
99
100