Path: blob/main/src/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import '../../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded6import '../../../contrib/symbolIcons/browser/symbolIcons.js'; // The codicon symbol colors are defined here and must be loaded to get colors7import { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/browser/gotoSymbolQuickAccess.js';8import { Registry } from '../../../../platform/registry/common/platform.js';9import { IQuickAccessRegistry, Extensions } from '../../../../platform/quickinput/common/quickAccess.js';10import { ICodeEditorService } from '../../../browser/services/codeEditorService.js';11import { QuickOutlineNLS } from '../../../common/standaloneStrings.js';12import { Event } from '../../../../base/common/event.js';13import { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';14import { EditorContextKeys } from '../../../common/editorContextKeys.js';15import { KeyMod, KeyCode } from '../../../../base/common/keyCodes.js';16import { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';17import { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';18import { IQuickInputService, ItemActivation } from '../../../../platform/quickinput/common/quickInput.js';19import { IOutlineModelService } from '../../../contrib/documentSymbols/browser/outlineModel.js';20import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';2122export class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {2324protected readonly onDidActiveTextEditorControlChange = Event.None;2526constructor(27@ICodeEditorService private readonly editorService: ICodeEditorService,28@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,29@IOutlineModelService outlineModelService: IOutlineModelService,30) {31super(languageFeaturesService, outlineModelService);32}3334protected get activeTextEditorControl() {35return this.editorService.getFocusedCodeEditor() ?? undefined;36}37}3839export class GotoSymbolAction extends EditorAction {4041static readonly ID = 'editor.action.quickOutline';4243constructor() {44super({45id: GotoSymbolAction.ID,46label: QuickOutlineNLS.quickOutlineActionLabel,47alias: 'Go to Symbol...',48precondition: EditorContextKeys.hasDocumentSymbolProvider,49kbOpts: {50kbExpr: EditorContextKeys.focus,51primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyO,52weight: KeybindingWeight.EditorContrib53},54contextMenuOpts: {55group: 'navigation',56order: 357}58});59}6061run(accessor: ServicesAccessor): void {62accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX, { itemActivation: ItemActivation.NONE });63}64}6566registerEditorAction(GotoSymbolAction);6768Registry.as<IQuickAccessRegistry>(Extensions.Quickaccess).registerQuickAccessProvider({69ctor: StandaloneGotoSymbolQuickAccessProvider,70prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,71helpEntries: [72{ description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, commandId: GotoSymbolAction.ID },73{ description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY }74]75});767778