From 597376ca83686140abbea66aeda341f0598e7b10 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Sun, 28 May 2023 11:05:29 -0700 Subject: [PATCH 1/2] Force new terminal editor action to open in same locked group Fixes #135022 --- .../contrib/terminal/browser/terminalActions.ts | 16 ++++++++++++++++ .../contrib/terminal/browser/terminalMenus.ts | 2 +- .../contrib/terminal/common/terminal.ts | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 018b4bd55bc..4dfd0de4f0a 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -59,6 +59,7 @@ import { FileKind } from 'vs/platform/files/common/files'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { TerminalCapability } from 'vs/platform/terminal/common/capabilities/capabilities'; import { killTerminalIcon, newTerminalIcon } from 'vs/workbench/contrib/terminal/browser/terminalIcons'; +import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; export const switchTerminalActionViewItemSeparator = '\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500'; export const switchTerminalShowTabsTitle = localize('showTerminalTabs', "Show Tabs"); @@ -227,6 +228,21 @@ export function registerTerminalActions() { } }); + registerTerminalAction({ + id: TerminalCommandId.CreateTerminalEditorSameGroup, + title: { value: localize('workbench.action.terminal.createTerminalEditor', "Create New Terminal in Editor Area"), original: 'Create New Terminal in Editor Area' }, + f1: false, + run: async (c, accessor, args) => { + // Force the editor into the same editor group is it's locked. This command is only ever + // called when a terminal is the active editor + const editorGroupsService = accessor.get(IEditorGroupsService); + const instance = await c.service.createTerminal({ + location: { viewColumn: editorGroupsService.activeGroup.index } + }); + instance.focusWhenReady(); + } + }); + registerTerminalAction({ id: TerminalCommandId.CreateTerminalEditorSide, title: { value: localize('workbench.action.terminal.createTerminalEditorSide', "Create New Terminal in Editor Area to the Side"), original: 'Create New Terminal in Editor Area to the Side' }, diff --git a/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts b/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts index 8a810f92fc8..eddc9648b64 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalMenus.ts @@ -785,7 +785,7 @@ export function setupTerminalMenus(): void { MenuRegistry.appendMenuItem(MenuId.EditorTitle, { command: { - id: TerminalCommandId.CreateTerminalEditor, + id: TerminalCommandId.CreateTerminalEditorSameGroup, title: terminalStrings.new, icon: Codicon.plus }, diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 9b5149079b4..45ac0319a00 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -527,6 +527,7 @@ export const enum TerminalCommandId { FocusPreviousPane = 'workbench.action.terminal.focusPreviousPane', ShowTabs = 'workbench.action.terminal.showTabs', CreateTerminalEditor = 'workbench.action.createTerminalEditor', + CreateTerminalEditorSameGroup = 'workbench.action.createTerminalEditorSameGroup', CreateTerminalEditorSide = 'workbench.action.createTerminalEditorSide', FocusTabs = 'workbench.action.terminal.focusTabs', FocusNextPane = 'workbench.action.terminal.focusNextPane', From 8f5c76f5e053055dc251241be92a18edf0572c85 Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Mon, 29 May 2023 07:16:02 -0700 Subject: [PATCH 2/2] Update src/vs/workbench/contrib/terminal/browser/terminalActions.ts Co-authored-by: John Murray --- src/vs/workbench/contrib/terminal/browser/terminalActions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 4dfd0de4f0a..7899c466422 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -233,7 +233,7 @@ export function registerTerminalActions() { title: { value: localize('workbench.action.terminal.createTerminalEditor', "Create New Terminal in Editor Area"), original: 'Create New Terminal in Editor Area' }, f1: false, run: async (c, accessor, args) => { - // Force the editor into the same editor group is it's locked. This command is only ever + // Force the editor into the same editor group if it's locked. This command is only ever // called when a terminal is the active editor const editorGroupsService = accessor.get(IEditorGroupsService); const instance = await c.service.createTerminal({