From dbd709ceb57e55a941736f7724eea9805fd12762 Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Fri, 23 Jul 2021 16:32:22 -0500 Subject: [PATCH] de-duplicate isSplitTerminal/sideGroup (#129272) --- src/vs/platform/terminal/common/terminal.ts | 10 +++------- src/vs/workbench/contrib/terminal/browser/terminal.ts | 2 +- .../contrib/terminal/browser/terminalActions.ts | 2 +- .../contrib/terminal/browser/terminalEditor.ts | 2 +- .../contrib/terminal/browser/terminalService.ts | 10 +++++----- .../workbench/contrib/terminal/browser/terminalView.ts | 4 ++-- 6 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index e9a4480b6ef..3189bb07a49 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -402,18 +402,14 @@ export interface ICreateTerminalOptions { */ target?: TerminalLocation; /** - * Create the editor terminal in beside the current editor. + * Creates a split terminal without requiring a terminal instance to split, for example when splitting + * a terminal editor */ - sideGroup?: boolean; + forceSplit?: boolean; /** * The terminal's resource, passed when the terminal has moved windows. */ resource?: URI; - - /** - * Whether or not this terminal should be a split - */ - isSplitTerminal?: boolean; } export interface ICreateContributedTerminalProfileOptions { diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 8529093be58..a036bd9625e 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -141,7 +141,7 @@ export interface ITerminalService extends ITerminalInstanceHost { getActiveOrCreateInstance(): Promise; - splitInstance(instance: ITerminalInstance, shell?: ITerminalProfile | IShellLaunchConfig | IExtensionTerminalProfile | undefined, cwd?: string | URI): Promise; + splitInstance(instance: ITerminalInstance, shell?: ITerminalProfile | IShellLaunchConfig | IExtensionTerminalProfile | undefined, cwd?: string | URI): Promise; moveToEditor(source: ITerminalInstance): void; moveToTerminalView(source?: ITerminalInstance | URI): Promise; getOffProcessTerminalService(): IOffProcessTerminalService | undefined; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 0a2df6547a2..37e6cdd4a8a 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -256,7 +256,7 @@ export function registerTerminalActions() { const terminalService = accessor.get(ITerminalService); const instance = await terminalService.createTerminal({ target: TerminalLocation.Editor, - sideGroup: true + forceSplit: true }); instance.focusWhenReady(); } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts index f00354b3e89..46787f03364 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditor.ts @@ -253,7 +253,7 @@ export class TerminalEditor extends EditorPane { id: contributed.id, title: contributed.title.replace(/[\n\r\t]/g, '') }, - isSplitTerminal: true, + forceSplit: true, target: TerminalLocation.Editor }))); } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 3ada4e0f851..064a0fd990e 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -624,7 +624,7 @@ export class TerminalService implements ITerminalService { } } - async splitInstance(instanceToSplit: ITerminalInstance, shell?: IShellLaunchConfig, cwd?: string | URI): Promise { + async splitInstance(instanceToSplit: ITerminalInstance, shell?: IShellLaunchConfig, cwd?: string | URI): Promise { const shellLaunchConfig = this._convertProfileToShellLaunchConfig(shell); const contributedDefaultProfile = await this._getContributedDefaultProfile(shellLaunchConfig); @@ -652,7 +652,7 @@ export class TerminalService implements ITerminalService { default: const group = this._terminalGroupService.getGroupForInstance(instanceToSplit); if (!group) { - return null; + throw new Error(`Cannot split a terminal without a group ${instanceToSplit}`); } instance = group.split(shellLaunchConfig); break; @@ -1113,7 +1113,7 @@ export class TerminalService implements ITerminalService { } else if (Object.entries(options).length > 2) { return false; } - return Array.from(Object.keys(options)).filter(k => k !== 'target' && k !== 'isSplitTerminal').length === 0; + return Array.from(Object.keys(options)).filter(k => k !== 'target' && k !== 'forceSplit').length === 0; } async createTerminal(options?: ICreateTerminalOptions): Promise { @@ -1133,7 +1133,7 @@ export class TerminalService implements ITerminalService { // Launch the contributed profile if (contributedProfile) { await this._createContributedTerminalProfile(contributedProfile.extensionIdentifier, contributedProfile.id, { - isSplitTerminal: options?.isSplitTerminal || false, + isSplitTerminal: options?.forceSplit || false, icon: contributedProfile.icon, target: options?.target }); @@ -1166,7 +1166,7 @@ export class TerminalService implements ITerminalService { if (target === TerminalLocation.Editor) { instance = this._terminalInstanceService.createInstance(shellLaunchConfig, undefined, options?.resource); instance.target = TerminalLocation.Editor; - this._terminalEditorService.openEditor(instance, options?.sideGroup); + this._terminalEditorService.openEditor(instance, options?.forceSplit); } else { // TODO: pass resource? const group = this._terminalGroupService.createGroup(shellLaunchConfig); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalView.ts b/src/vs/workbench/contrib/terminal/browser/terminalView.ts index 51ebfac7048..bcc7d2060d3 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalView.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalView.ts @@ -258,7 +258,7 @@ export class TerminalViewPane extends ViewPane { id: contributed.id, title: contributed.title.replace(/[\n\r\t]/g, '') }, - isSplitTerminal: false + forceSplit: false }))); submenuActions.push(new Action(TerminalCommandId.NewWithProfile, contributed.title.replace(/[\n\r\t]/g, ''), undefined, true, () => this._terminalService.createTerminal({ config: { @@ -266,7 +266,7 @@ export class TerminalViewPane extends ViewPane { id: contributed.id, title: contributed.title.replace(/[\n\r\t]/g, '') }, - isSplitTerminal: true + forceSplit: true }))); }