Path: blob/main/src/vs/editor/contrib/quickAccess/browser/commandsQuickAccess.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 { stripIcons } from '../../../../base/common/iconLabels.js';6import { IEditor } from '../../../common/editorCommon.js';7import { ILocalizedString } from '../../../../nls.js';8import { isLocalizedString } from '../../../../platform/action/common/action.js';9import { ICommandService } from '../../../../platform/commands/common/commands.js';10import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';11import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';12import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';13import { AbstractCommandsQuickAccessProvider, ICommandQuickPick, ICommandsQuickAccessOptions } from '../../../../platform/quickinput/browser/commandsQuickAccess.js';14import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';1516export abstract class AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider {1718constructor(19options: ICommandsQuickAccessOptions,20instantiationService: IInstantiationService,21keybindingService: IKeybindingService,22commandService: ICommandService,23telemetryService: ITelemetryService,24dialogService: IDialogService25) {26super(options, instantiationService, keybindingService, commandService, telemetryService, dialogService);27}2829/**30* Subclasses to provide the current active editor control.31*/32protected abstract activeTextEditorControl: IEditor | undefined;3334protected getCodeEditorCommandPicks(): ICommandQuickPick[] {35const activeTextEditorControl = this.activeTextEditorControl;36if (!activeTextEditorControl) {37return [];38}3940const editorCommandPicks: ICommandQuickPick[] = [];41for (const editorAction of activeTextEditorControl.getSupportedActions()) {42let commandDescription: undefined | ILocalizedString;43if (editorAction.metadata?.description) {44if (isLocalizedString(editorAction.metadata.description)) {45commandDescription = editorAction.metadata.description;46} else {47commandDescription = { original: editorAction.metadata.description, value: editorAction.metadata.description };48}49}50editorCommandPicks.push({51commandId: editorAction.id,52commandAlias: editorAction.alias,53commandDescription,54label: stripIcons(editorAction.label) || editorAction.id,55});56}5758return editorCommandPicks;59}60}616263