Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/contrib/extensions/electron-browser/extensions.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 { Disposable } from '../../../../base/common/lifecycle.js';
7
import { localize } from '../../../../nls.js';
8
import { registerAction2 } from '../../../../platform/actions/common/actions.js';
9
import { IExtensionRecommendationNotificationService } from '../../../../platform/extensionRecommendations/common/extensionRecommendations.js';
10
import { ExtensionRecommendationNotificationServiceChannel } from '../../../../platform/extensionRecommendations/common/extensionRecommendationsIpc.js';
11
import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js';
12
import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';
13
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
14
import { ISharedProcessService } from '../../../../platform/ipc/electron-browser/services.js';
15
import { Registry } from '../../../../platform/registry/common/platform.js';
16
import { EditorPaneDescriptor, IEditorPaneRegistry } from '../../../browser/editor.js';
17
import { IWorkbenchContribution, IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from '../../../common/contributions.js';
18
import { EditorExtensions, IEditorFactoryRegistry, IEditorSerializer } from '../../../common/editor.js';
19
import { EditorInput } from '../../../common/editor/editorInput.js';
20
import { LifecyclePhase } from '../../../services/lifecycle/common/lifecycle.js';
21
import { RuntimeExtensionsInput } from '../common/runtimeExtensionsInput.js';
22
import { DebugExtensionHostInNewWindowAction, DebugExtensionsContribution, DebugExtensionHostInDevToolsAction } from './debugExtensionHostAction.js';
23
import { ExtensionHostProfileService } from './extensionProfileService.js';
24
import { CleanUpExtensionsFolderAction, OpenExtensionsFolderAction } from './extensionsActions.js';
25
import { ExtensionsAutoProfiler } from './extensionsAutoProfiler.js';
26
import { InstallRemoteExtensionsContribution, RemoteExtensionsInitializerContribution } from './remoteExtensionsInit.js';
27
import { IExtensionHostProfileService, OpenExtensionHostProfileACtion, RuntimeExtensionsEditor, SaveExtensionHostProfileAction, StartExtensionHostProfileAction, StopExtensionHostProfileAction } from './runtimeExtensionsEditor.js';
28
29
// Singletons
30
registerSingleton(IExtensionHostProfileService, ExtensionHostProfileService, InstantiationType.Delayed);
31
32
// Running Extensions Editor
33
Registry.as<IEditorPaneRegistry>(EditorExtensions.EditorPane).registerEditorPane(
34
EditorPaneDescriptor.create(RuntimeExtensionsEditor, RuntimeExtensionsEditor.ID, localize('runtimeExtension', "Running Extensions")),
35
[new SyncDescriptor(RuntimeExtensionsInput)]
36
);
37
38
class RuntimeExtensionsInputSerializer implements IEditorSerializer {
39
canSerialize(editorInput: EditorInput): boolean {
40
return true;
41
}
42
serialize(editorInput: EditorInput): string {
43
return '';
44
}
45
deserialize(instantiationService: IInstantiationService): EditorInput {
46
return RuntimeExtensionsInput.instance;
47
}
48
}
49
50
Registry.as<IEditorFactoryRegistry>(EditorExtensions.EditorFactory).registerEditorSerializer(RuntimeExtensionsInput.ID, RuntimeExtensionsInputSerializer);
51
52
53
// Global actions
54
55
class ExtensionsContributions extends Disposable implements IWorkbenchContribution {
56
57
constructor(
58
@IExtensionRecommendationNotificationService extensionRecommendationNotificationService: IExtensionRecommendationNotificationService,
59
@ISharedProcessService sharedProcessService: ISharedProcessService,
60
) {
61
super();
62
63
sharedProcessService.registerChannel('extensionRecommendationNotification', new ExtensionRecommendationNotificationServiceChannel(extensionRecommendationNotificationService));
64
65
this._register(registerAction2(OpenExtensionsFolderAction));
66
this._register(registerAction2(CleanUpExtensionsFolderAction));
67
}
68
}
69
70
const workbenchRegistry = Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench);
71
workbenchRegistry.registerWorkbenchContribution(ExtensionsContributions, LifecyclePhase.Restored);
72
workbenchRegistry.registerWorkbenchContribution(ExtensionsAutoProfiler, LifecyclePhase.Eventually);
73
workbenchRegistry.registerWorkbenchContribution(RemoteExtensionsInitializerContribution, LifecyclePhase.Restored);
74
workbenchRegistry.registerWorkbenchContribution(InstallRemoteExtensionsContribution, LifecyclePhase.Restored);
75
workbenchRegistry.registerWorkbenchContribution(DebugExtensionsContribution, LifecyclePhase.Restored);
76
77
// Register Commands
78
79
registerAction2(DebugExtensionHostInNewWindowAction);
80
registerAction2(StartExtensionHostProfileAction);
81
registerAction2(StopExtensionHostProfileAction);
82
registerAction2(SaveExtensionHostProfileAction);
83
registerAction2(OpenExtensionHostProfileACtion);
84
registerAction2(DebugExtensionHostInDevToolsAction);
85
86