Move remaining terminal menu registrations to terminalMenus

Fixes #123473
This commit is contained in:
Daniel Imms
2021-06-09 15:24:10 -07:00
parent bc14fe9e8d
commit ff3e30b932
3 changed files with 92 additions and 61 deletions
@@ -15,10 +15,10 @@ import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService
import { EndOfLinePreference } from 'vs/editor/common/model';
import { localize } from 'vs/nls';
import { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
import { Action2, ICommandActionTitle, ILocalizedString, MenuId, registerAction2 } from 'vs/platform/actions/common/actions';
import { Action2, ICommandActionTitle, ILocalizedString, registerAction2 } from 'vs/platform/actions/common/actions';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { ContextKeyAndExpr, ContextKeyEqualsExpr, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { ILabelService } from 'vs/platform/label/common/label';
@@ -32,7 +32,7 @@ import { PICK_WORKSPACE_FOLDER_COMMAND_ID } from 'vs/workbench/browser/actions/w
import { FindInFilesCommand, IFindInFilesArgs } from 'vs/workbench/contrib/search/browser/searchActions';
import { Direction, IRemoteTerminalService, ITerminalInstance, ITerminalInstanceService, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal';
import { TerminalQuickAccessProvider } from 'vs/workbench/contrib/terminal/browser/terminalQuickAccess';
import { IRemoteTerminalAttachTarget, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS, KEYBINDING_CONTEXT_TERMINAL_ALT_BUFFER_ACTIVE, KEYBINDING_CONTEXT_TERMINAL_FIND_FOCUSED, KEYBINDING_CONTEXT_TERMINAL_FIND_NOT_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_IS_OPEN, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED, KEYBINDING_CONTEXT_TERMINAL_TABS_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TABS_SINGULAR_SELECTION, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_ACTION_CATEGORY, TerminalCommandId, TERMINAL_VIEW_ID } from 'vs/workbench/contrib/terminal/common/terminal';
import { IRemoteTerminalAttachTarget, ITerminalConfigHelper, KEYBINDING_CONTEXT_TERMINAL_A11Y_TREE_FOCUS, KEYBINDING_CONTEXT_TERMINAL_ALT_BUFFER_ACTIVE, KEYBINDING_CONTEXT_TERMINAL_FIND_FOCUSED, KEYBINDING_CONTEXT_TERMINAL_FIND_NOT_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_FIND_VISIBLE, KEYBINDING_CONTEXT_TERMINAL_FOCUS, KEYBINDING_CONTEXT_TERMINAL_IS_OPEN, KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED, KEYBINDING_CONTEXT_TERMINAL_TABS_FOCUS, KEYBINDING_CONTEXT_TERMINAL_TABS_SINGULAR_SELECTION, KEYBINDING_CONTEXT_TERMINAL_TEXT_SELECTED, TERMINAL_ACTION_CATEGORY, TerminalCommandId } from 'vs/workbench/contrib/terminal/common/terminal';
import { ITerminalContributionService } from 'vs/workbench/contrib/terminal/common/terminalExtensionPoints';
import { terminalStrings } from 'vs/workbench/contrib/terminal/common/terminalStrings';
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
@@ -343,38 +343,10 @@ export function registerTerminalActions() {
constructor() {
super({
id: TerminalCommandId.Focus,
title: { value: localize('workbench.action.terminal.focus', "Focus Terminal"), original: 'Focus Terminal' },
title: terminalStrings.focus,
f1: true,
category,
precondition: KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED,
// This command is used to show instead of tabs when there is only a single terminal
menu: {
id: MenuId.ViewTitle,
group: 'navigation',
order: 0,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.has(`config.${TerminalSettingId.TabsEnabled}`),
ContextKeyExpr.or(
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleTerminal'),
ContextKeyExpr.equals('terminalCount', 1)
),
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleTerminalOrNarrow'),
ContextKeyExpr.or(
ContextKeyExpr.equals('terminalCount', 1),
ContextKeyExpr.has('isTerminalTabsNarrow')
)
),
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleGroup'),
ContextKeyExpr.equals('terminalGroupCount', 1)
),
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'always')
)
]),
}
precondition: KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED
});
}
async run(accessor: ServicesAccessor) {
@@ -1362,15 +1334,6 @@ export function registerTerminalActions() {
type: 'object'
}
}]
},
menu: {
id: MenuId.ViewTitle,
group: 'navigation',
order: 2,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.not(`config.${TerminalSettingId.TabsEnabled}`)
])
}
});
}
@@ -1579,16 +1542,7 @@ export function registerTerminalActions() {
f1: true,
category,
precondition: ContextKeyExpr.or(KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED, KEYBINDING_CONTEXT_TERMINAL_IS_OPEN),
icon: Codicon.trash,
menu: {
id: MenuId.ViewTitle,
group: 'navigation',
order: 3,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.not(`config.${TerminalSettingId.TabsEnabled}`)
])
}
icon: Codicon.trash
});
}
async run(accessor: ServicesAccessor) {
@@ -1683,15 +1637,7 @@ export function registerTerminalActions() {
title: TerminalCommandId.CreateWithProfileButton,
f1: false,
category,
precondition: KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED,
menu: [{
id: MenuId.ViewTitle,
group: 'navigation',
order: 0,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID)
]),
}]
precondition: KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED
});
}
async run(accessor: ServicesAccessor) {
@@ -3,6 +3,7 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Codicon } from 'vs/base/common/codicons';
import { localize } from 'vs/nls';
import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions';
import { ContextKeyAndExpr, ContextKeyEqualsExpr, ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
@@ -240,6 +241,86 @@ export function setupTerminalMenus(): void {
ContextKeyExpr.not(`config.${TerminalSettingId.TabsEnabled}`)
]),
}
},
{
// This is used to show instead of tabs when there is only a single terminal
id: MenuId.ViewTitle,
item: {
command: {
id: TerminalCommandId.Focus,
title: terminalStrings.focus
},
group: 'navigation',
order: 0,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.has(`config.${TerminalSettingId.TabsEnabled}`),
ContextKeyExpr.or(
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleTerminal'),
ContextKeyExpr.equals('terminalCount', 1)
),
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleTerminalOrNarrow'),
ContextKeyExpr.or(
ContextKeyExpr.equals('terminalCount', 1),
ContextKeyExpr.has('isTerminalTabsNarrow')
)
),
ContextKeyExpr.and(
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'singleGroup'),
ContextKeyExpr.equals('terminalGroupCount', 1)
),
ContextKeyExpr.equals(`config.${TerminalSettingId.TabsShowActiveTerminal}`, 'always')
)
]),
}
},
{
id: MenuId.ViewTitle,
item: {
command: {
id: TerminalCommandId.Split,
title: terminalStrings.split,
icon: Codicon.splitHorizontal
},
group: 'navigation',
order: 2,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.not(`config.${TerminalSettingId.TabsEnabled}`)
])
}
},
{
id: MenuId.ViewTitle,
item: {
command: {
id: TerminalCommandId.Kill,
title: terminalStrings.kill,
icon: Codicon.trash
},
group: 'navigation',
order: 3,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID),
ContextKeyExpr.not(`config.${TerminalSettingId.TabsEnabled}`)
])
}
},
{
id: MenuId.ViewTitle,
item: {
command: {
id: TerminalCommandId.CreateWithProfileButton,
title: TerminalCommandId.CreateWithProfileButton
},
group: 'navigation',
order: 0,
when: ContextKeyAndExpr.create([
ContextKeyEqualsExpr.create('view', TERMINAL_VIEW_ID)
])
}
}
]
);
@@ -17,6 +17,10 @@ export function formatMessageForTerminal(message: string, excludeLeadingNewLine:
* An object holding strings shared by multiple parts of the terminal
*/
export const terminalStrings = {
focus: {
value: localize('workbench.action.terminal.focus', "Focus Terminal"),
original: 'Focus Terminal'
},
kill: {
value: localize('killTerminal', "Kill Terminal"),
original: 'Kill Terminal',