Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.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 '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded
7
import '../../../contrib/symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors
8
import { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoSymbolQuickAccess.js';
9
import { Registry } from '../../../../platform/registry/common/platform.js';
10
import { IQuickAccessRegistry, Extensions } from '../../../../platform/quickinput/common/quickAccess.js';
11
import { ICodeEditorService } from '../../../browser/services/codeEditorService.js';
12
import { QuickOutlineNLS } from '../../../common/standaloneStrings.js';
13
import { Event } from '../../../../base/common/event.js';
14
import { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';
15
import { EditorContextKeys } from '../../../common/editorContextKeys.js';
16
import { KeyMod, KeyCode } from '../../../../base/common/keyCodes.js';
17
import { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';
18
import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';
19
import { IQuickInputService, ItemActivation } from '../../../../platform/quickinput/common/quickInput.js';
20
import { IOutlineModelService } from '../../../contrib/documentSymbols/browser/outlineModel.js';
21
import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
22
23
export class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {
24
25
protected readonly onDidActiveTextEditorControlChange = Event.None;
26
27
constructor(
28
@ICodeEditorService private readonly editorService: ICodeEditorService,
29
@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,
30
@IOutlineModelService outlineModelService: IOutlineModelService,
31
) {
32
super(languageFeaturesService, outlineModelService);
33
}
34
35
protected get activeTextEditorControl() {
36
return this.editorService.getFocusedCodeEditor() ?? undefined;
37
}
38
}
39
40
export class GotoSymbolAction extends EditorAction {
41
42
static readonly ID = 'editor.action.quickOutline';
43
44
constructor() {
45
super({
46
id: GotoSymbolAction.ID,
47
label: QuickOutlineNLS.quickOutlineActionLabel,
48
alias: 'Go to Symbol...',
49
precondition: EditorContextKeys.hasDocumentSymbolProvider,
50
kbOpts: {
51
kbExpr: EditorContextKeys.focus,
52
primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyO,
53
weight: KeybindingWeight.EditorContrib
54
},
55
contextMenuOpts: {
56
group: 'navigation',
57
order: 3
58
}
59
});
60
}
61
62
run(accessor: ServicesAccessor): void {
63
accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX, { itemActivation: ItemActivation.NONE });
64
}
65
}
66
67
registerEditorAction(GotoSymbolAction);
68
69
Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).registerQuickAccessProvider({
70
ctor: StandaloneGotoSymbolQuickAccessProvider,
71
prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,
72
helpEntries: [
73
{ description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, commandId: GotoSymbolAction.ID },
74
{ description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY }
75
]
76
});
77
78