From 60cffa341f4c81ed99ff3bb1cc2590c0f5f42c7a Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Mon, 30 Sep 2024 07:52:39 -0700 Subject: [PATCH] Move terminal quick access into terminalContrib/ Fixes #230126 --- .../terminal/browser/terminal.contribution.ts | 19 --------- .../terminal/browser/terminalActions.ts | 8 ---- .../contrib/terminal/common/terminal.ts | 1 - .../contrib/terminal/terminal.all.ts | 1 + .../terminal.quickAccess.contribution.ts | 40 +++++++++++++++++++ .../browser/terminalQuickAccess.ts | 30 +++++++------- 6 files changed, 56 insertions(+), 43 deletions(-) create mode 100644 src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminal.quickAccess.contribution.ts rename src/vs/workbench/contrib/{terminal => terminalContrib/quickAccess}/browser/terminalQuickAccess.ts (81%) diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts index f8703b7302b..4f29c1448e7 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.contribution.ts @@ -13,19 +13,16 @@ import './media/widgets.css'; import './media/xterm.css'; import * as nls from '../../../../nls.js'; import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../../../../platform/accessibility/common/accessibility.js'; -import { CommandsRegistry } from '../../../../platform/commands/common/commands.js'; import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js'; import { Extensions as DragAndDropExtensions, IDragAndDropContributionRegistry, IDraggedResourceEditorInput } from '../../../../platform/dnd/browser/dnd.js'; import { SyncDescriptor } from '../../../../platform/instantiation/common/descriptors.js'; import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js'; -import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from '../../../../platform/quickinput/common/quickAccess.js'; import { Registry } from '../../../../platform/registry/common/platform.js'; import { GeneralShellType, ITerminalLogService, WindowsShellType } from '../../../../platform/terminal/common/terminal.js'; import { TerminalLogService } from '../../../../platform/terminal/common/terminalLogService.js'; import { registerTerminalPlatformConfiguration } from '../../../../platform/terminal/common/terminalPlatformConfiguration.js'; import { EditorPaneDescriptor, IEditorPaneRegistry } from '../../../browser/editor.js'; import { ViewPaneContainer } from '../../../browser/parts/views/viewPaneContainer.js'; -import { getQuickNavigateHandler } from '../../../browser/quickaccess.js'; import { WorkbenchPhase, registerWorkbenchContribution2 } from '../../../common/contributions.js'; import { EditorExtensions, IEditorFactoryRegistry } from '../../../common/editor.js'; import { IViewContainersRegistry, IViewsRegistry, Extensions as ViewContainerExtensions, ViewContainerLocation } from '../../../common/views.js'; @@ -44,7 +41,6 @@ import { TerminalInstanceService } from './terminalInstanceService.js'; import { TerminalMainContribution } from './terminalMainContribution.js'; import { setupTerminalMenus } from './terminalMenus.js'; import { TerminalProfileService } from './terminalProfileService.js'; -import { TerminalQuickAccessProvider } from './terminalQuickAccess.js'; import { TerminalService } from './terminalService.js'; import { TerminalViewPane } from './terminalView.js'; import { TerminalWslRecommendationContribution } from './terminalWslRecommendationContribution.js'; @@ -64,21 +60,6 @@ registerSingleton(ITerminalGroupService, TerminalGroupService, InstantiationType registerSingleton(ITerminalInstanceService, TerminalInstanceService, InstantiationType.Delayed); registerSingleton(ITerminalProfileService, TerminalProfileService, InstantiationType.Delayed); -// Register quick accesses -const quickAccessRegistry = (Registry.as(QuickAccessExtensions.Quickaccess)); -const inTerminalsPicker = 'inTerminalPicker'; -quickAccessRegistry.registerQuickAccessProvider({ - ctor: TerminalQuickAccessProvider, - prefix: TerminalQuickAccessProvider.PREFIX, - contextKey: inTerminalsPicker, - placeholder: nls.localize('tasksQuickAccessPlaceholder', "Type the name of a terminal to open."), - helpEntries: [{ description: nls.localize('tasksQuickAccessHelp', "Show All Opened Terminals"), commandId: TerminalCommandId.QuickOpenTerm }] -}); -const quickAccessNavigateNextInTerminalPickerId = 'workbench.action.quickOpenNavigateNextInTerminalPicker'; -CommandsRegistry.registerCommand({ id: quickAccessNavigateNextInTerminalPickerId, handler: getQuickNavigateHandler(quickAccessNavigateNextInTerminalPickerId, true) }); -const quickAccessNavigatePreviousInTerminalPickerId = 'workbench.action.quickOpenNavigatePreviousInTerminalPicker'; -CommandsRegistry.registerCommand({ id: quickAccessNavigatePreviousInTerminalPickerId, handler: getQuickNavigateHandler(quickAccessNavigatePreviousInTerminalPickerId, false) }); - // Register workbench contributions // This contribution blocks startup as it's critical to enable the web embedder window.createTerminal API registerWorkbenchContribution2(TerminalMainContribution.ID, TerminalMainContribution, WorkbenchPhase.BlockStartup); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 9a8a994fb2b..94009b77a4b 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -32,7 +32,6 @@ import { IWorkspaceContextService, IWorkspaceFolder } from '../../../../platform import { PICK_WORKSPACE_FOLDER_COMMAND_ID } from '../../../browser/actions/workspaceCommands.js'; import { CLOSE_EDITOR_COMMAND_ID } from '../../../browser/parts/editor/editorCommands.js'; import { Direction, ICreateTerminalOptions, IDetachedTerminalInstance, ITerminalConfigurationService, ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalService, IXtermTerminal } from './terminal.js'; -import { TerminalQuickAccessProvider } from './terminalQuickAccess.js'; import { IRemoteTerminalAttachTarget, ITerminalProfileResolverService, ITerminalProfileService, TERMINAL_VIEW_ID, TerminalCommandId } from '../common/terminal.js'; import { TerminalContextKeys } from '../common/terminalContextKey.js'; import { createProfileSchemaEnums } from '../../../../platform/terminal/common/terminalProfiles.js'; @@ -969,13 +968,6 @@ export function registerTerminalActions() { } }); - registerTerminalAction({ - id: TerminalCommandId.QuickOpenTerm, - title: localize2('quickAccessTerminal', 'Switch Active Terminal'), - precondition: sharedWhenClause.terminalAvailable, - run: (c, accessor) => accessor.get(IQuickInputService).quickAccess.show(TerminalQuickAccessProvider.PREFIX) - }); - registerActiveInstanceAction({ id: TerminalCommandId.ScrollToPreviousCommand, title: terminalStrings.scrollToPreviousCommand, diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index c99be96b1b8..51288e267fc 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -458,7 +458,6 @@ export const enum TerminalCommandId { Rename = 'workbench.action.terminal.rename', RenameActiveTab = 'workbench.action.terminal.renameActiveTab', RenameWithArgs = 'workbench.action.terminal.renameWithArg', - QuickOpenTerm = 'workbench.action.quickOpenTerm', ScrollToPreviousCommand = 'workbench.action.terminal.scrollToPreviousCommand', ScrollToNextCommand = 'workbench.action.terminal.scrollToNextCommand', SelectToPreviousCommand = 'workbench.action.terminal.selectToPreviousCommand', diff --git a/src/vs/workbench/contrib/terminal/terminal.all.ts b/src/vs/workbench/contrib/terminal/terminal.all.ts index 40fb3a34928..9323f6c143e 100644 --- a/src/vs/workbench/contrib/terminal/terminal.all.ts +++ b/src/vs/workbench/contrib/terminal/terminal.all.ts @@ -23,6 +23,7 @@ import '../terminalContrib/commandGuide/browser/terminal.commandGuide.contributi import '../terminalContrib/links/browser/terminal.links.contribution.js'; import '../terminalContrib/zoom/browser/terminal.zoom.contribution.js'; import '../terminalContrib/stickyScroll/browser/terminal.stickyScroll.contribution.js'; +import '../terminalContrib/quickAccess/browser/terminal.quickAccess.contribution.js'; import '../terminalContrib/quickFix/browser/terminal.quickFix.contribution.js'; import '../terminalContrib/typeAhead/browser/terminal.typeAhead.contribution.js'; import '../terminalContrib/suggest/browser/terminal.suggest.contribution.js'; diff --git a/src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminal.quickAccess.contribution.ts b/src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminal.quickAccess.contribution.ts new file mode 100644 index 00000000000..7729eada81a --- /dev/null +++ b/src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminal.quickAccess.contribution.ts @@ -0,0 +1,40 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as nls from '../../../../../nls.js'; +import { CommandsRegistry } from '../../../../../platform/commands/common/commands.js'; +import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js'; +import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from '../../../../../platform/quickinput/common/quickAccess.js'; +import { IQuickInputService } from '../../../../../platform/quickinput/common/quickInput.js'; +import { Registry } from '../../../../../platform/registry/common/platform.js'; +import { getQuickNavigateHandler } from '../../../../browser/quickaccess.js'; +import { registerTerminalAction } from '../../../terminal/browser/terminalActions.js'; +import { TerminalContextKeys } from '../../../terminal/common/terminalContextKey.js'; +import { TerminalQuickAccessProvider } from '../../../terminalContrib/quickAccess/browser/terminalQuickAccess.js'; + +const enum TerminalQuickAccessCommandId { + QuickOpenTerm = 'workbench.action.quickOpenTerm', +} + +const quickAccessRegistry = (Registry.as(QuickAccessExtensions.Quickaccess)); +const inTerminalsPicker = 'inTerminalPicker'; +quickAccessRegistry.registerQuickAccessProvider({ + ctor: TerminalQuickAccessProvider, + prefix: TerminalQuickAccessProvider.PREFIX, + contextKey: inTerminalsPicker, + placeholder: nls.localize('tasksQuickAccessPlaceholder', "Type the name of a terminal to open."), + helpEntries: [{ description: nls.localize('tasksQuickAccessHelp', "Show All Opened Terminals"), commandId: TerminalQuickAccessCommandId.QuickOpenTerm }] +}); +const quickAccessNavigateNextInTerminalPickerId = 'workbench.action.quickOpenNavigateNextInTerminalPicker'; +CommandsRegistry.registerCommand({ id: quickAccessNavigateNextInTerminalPickerId, handler: getQuickNavigateHandler(quickAccessNavigateNextInTerminalPickerId, true) }); +const quickAccessNavigatePreviousInTerminalPickerId = 'workbench.action.quickOpenNavigatePreviousInTerminalPicker'; +CommandsRegistry.registerCommand({ id: quickAccessNavigatePreviousInTerminalPickerId, handler: getQuickNavigateHandler(quickAccessNavigatePreviousInTerminalPickerId, false) }); + +registerTerminalAction({ + id: TerminalQuickAccessCommandId.QuickOpenTerm, + title: nls.localize2('quickAccessTerminal', 'Switch Active Terminal'), + precondition: ContextKeyExpr.or(TerminalContextKeys.processSupported, TerminalContextKeys.terminalHasBeenCreated), + run: (c, accessor) => accessor.get(IQuickInputService).quickAccess.show(TerminalQuickAccessProvider.PREFIX) +}); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts b/src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminalQuickAccess.ts similarity index 81% rename from src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts rename to src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminalQuickAccess.ts index 9c8acbad98a..a95a6c85e02 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts +++ b/src/vs/workbench/contrib/terminalContrib/quickAccess/browser/terminalQuickAccess.ts @@ -3,21 +3,21 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { localize } from '../../../../nls.js'; -import { IQuickPickSeparator } from '../../../../platform/quickinput/common/quickInput.js'; -import { IPickerQuickAccessItem, PickerQuickAccessProvider, TriggerAction } from '../../../../platform/quickinput/browser/pickerQuickAccess.js'; -import { matchesFuzzy } from '../../../../base/common/filters.js'; -import { ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalService } from './terminal.js'; -import { ICommandService } from '../../../../platform/commands/common/commands.js'; -import { TerminalCommandId } from '../common/terminal.js'; -import { IThemeService } from '../../../../platform/theme/common/themeService.js'; -import { ThemeIcon } from '../../../../base/common/themables.js'; -import { killTerminalIcon, renameTerminalIcon } from './terminalIcons.js'; -import { getColorClass, getIconId, getUriClasses } from './terminalIcon.js'; -import { terminalStrings } from '../common/terminalStrings.js'; -import { TerminalLocation } from '../../../../platform/terminal/common/terminal.js'; -import { IEditorService } from '../../../services/editor/common/editorService.js'; -import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; +import { localize } from '../../../../../nls.js'; +import { IQuickPickSeparator } from '../../../../../platform/quickinput/common/quickInput.js'; +import { IPickerQuickAccessItem, PickerQuickAccessProvider, TriggerAction } from '../../../../../platform/quickinput/browser/pickerQuickAccess.js'; +import { matchesFuzzy } from '../../../../../base/common/filters.js'; +import { ITerminalEditorService, ITerminalGroupService, ITerminalInstance, ITerminalService } from '../../../terminal/browser/terminal.js'; +import { ICommandService } from '../../../../../platform/commands/common/commands.js'; +import { TerminalCommandId } from '../../../terminal/common/terminal.js'; +import { IThemeService } from '../../../../../platform/theme/common/themeService.js'; +import { ThemeIcon } from '../../../../../base/common/themables.js'; +import { killTerminalIcon, renameTerminalIcon } from '../../../terminal/browser/terminalIcons.js'; +import { getColorClass, getIconId, getUriClasses } from '../../../terminal/browser/terminalIcon.js'; +import { terminalStrings } from '../../../terminal/common/terminalStrings.js'; +import { TerminalLocation } from '../../../../../platform/terminal/common/terminal.js'; +import { IEditorService } from '../../../../services/editor/common/editorService.js'; +import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js'; let terminalPicks: Array = []; export class TerminalQuickAccessProvider extends PickerQuickAccessProvider {