From e94d7fe8ab79a93c45e57dbd34f3c6bc6a3e3b24 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 29 Mar 2021 18:59:55 -0700 Subject: [PATCH 1/8] fix #120037 --- .../contrib/terminal/browser/terminal.ts | 2 +- .../terminal/browser/terminalActions.ts | 13 +++++++++++ .../terminal/browser/terminalService.ts | 23 ++++++++++++------- .../contrib/terminal/common/terminal.ts | 1 + 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 669bcec8f7928..ca50a79e51ab4 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -155,7 +155,7 @@ export interface ITerminalService { */ registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable; - selectDefaultProfile(): Promise; + selectDefaultProfile(quickCreate?: boolean): Promise; /** * Gets the detected terminal profiles for the platform diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 406a7170fa0e3..3f4c625b34d9b 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -129,6 +129,19 @@ export function registerTerminalActions() { await terminalService.showPanel(true); } }); + registerAction2(class extends Action2 { + constructor() { + super({ + id: TERMINAL_COMMAND_ID.NEW_WITH_PROFILE, + title: { value: localize('workbench.action.terminal.newWithProfile', "Create New Integrated Terminal With Profile"), original: 'Create New Integrated Terminal With Profile' }, + f1: true, + category, + }); + } + async run(accessor: ServicesAccessor) { + await accessor.get(ITerminalService).selectDefaultProfile(true); + } + }); registerAction2(class extends Action2 { constructor() { super({ diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 382a7b716129f..dc5299895c413 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -842,12 +842,12 @@ export class TerminalService implements ITerminalService { return isWindows ? 'windows' : (isMacintosh ? 'osx' : 'linux'); } - public async selectDefaultProfile(): Promise { + public async selectDefaultProfile(quickCreate?: boolean): Promise { const profiles = await this._detectProfiles(false); const platformKey = await this._getPlatformKey(); const options: IPickOptions = { - placeHolder: nls.localize('terminal.integrated.chooseWindowsShell', "Select your default terminal profile"), + placeHolder: quickCreate ? nls.localize('terminal.integrated.chooseQuickCreateProfile', "Select the terminal profile to create") : nls.localize('terminal.integrated.chooseDefaultProfile', "Select your default terminal profile"), onDidTriggerItemButton: async (context) => { const configKey = `terminal.integrated.profiles.${platformKey}`; const configProfiles = this._configurationService.inspect<{ [key: string]: ITerminalProfileObject }>(configKey); @@ -880,23 +880,30 @@ export class TerminalService implements ITerminalService { const autoDetectedProfiles = profiles.filter(e => e.isAutoDetected); if (configProfiles.length > 0) { quickPickItems.push({ type: 'separator', label: nls.localize('terminalProfiles', "profiles") }); - quickPickItems.push(...configProfiles.map(e => this._createProfileQuickPickItem(e))); + quickPickItems.push(...configProfiles.map(e => this._createProfileQuickPickItem(e, quickCreate))); } if (configProfiles.length > 0) { quickPickItems.push({ type: 'separator', label: nls.localize('terminalProfiles.detected', "detected") }); - quickPickItems.push(...autoDetectedProfiles.map(e => this._createProfileQuickPickItem(e))); + quickPickItems.push(...autoDetectedProfiles.map(e => this._createProfileQuickPickItem(e, quickCreate))); } const value = await this._quickInputService.pick(quickPickItems, options); if (!value) { return; } - await this._configurationService.updateValue(`terminal.integrated.shell.${platformKey}`, value.profile.path, ConfigurationTarget.USER); - await this._configurationService.updateValue(`terminal.integrated.shellArgs.${platformKey}`, value.profile.args, ConfigurationTarget.USER); + const profile = autoDetectedProfiles.find(profile => profile.profileName === value.profile.profileName) || configProfiles.find(profile => profile.profileName === value.profile.profileName); + if (quickCreate && profile) { + const instance = this.createTerminal({ executable: profile.path, args: profile.args, name: profile.overrideName ? profile.profileName : undefined }); + this.showPanel(true); + this.setActiveInstance(instance); + } else { + await this._configurationService.updateValue(`terminal.integrated.shell.${platformKey}`, value.profile.path, ConfigurationTarget.USER); + await this._configurationService.updateValue(`terminal.integrated.shellArgs.${platformKey}`, value.profile.args, ConfigurationTarget.USER); + } } - private _createProfileQuickPickItem(profile: ITerminalProfile): IProfileQuickPickItem { - const buttons: IQuickInputButton[] = [{ + private _createProfileQuickPickItem(profile: ITerminalProfile, quickCreate?: boolean): IProfileQuickPickItem { + const buttons: IQuickInputButton[] = quickCreate ? [] : [{ iconClass: ThemeIcon.asClassName(configureTerminalProfileIcon), tooltip: nls.localize('createQuickLaunchProfile', "Configure Terminal Profile") }]; diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index cfcf2184d3933..752bddbb25a58 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -400,6 +400,7 @@ export const enum TERMINAL_COMMAND_ID { NEW_WITH_CWD = 'workbench.action.terminal.newWithCwd', NEW_LOCAL = 'workbench.action.terminal.newLocal', NEW_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.newInActiveWorkspace', + NEW_WITH_PROFILE = 'workbench.action.terminal.newWithProfile', SPLIT = 'workbench.action.terminal.split', SPLIT_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.splitInActiveWorkspace', RELAUNCH = 'workbench.action.terminal.relaunch', From 0d4810cfeedc247d1e8b5276e3ebc5ad884dd03c Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 09:40:32 -0700 Subject: [PATCH 2/8] rename, tidy, and polish --- .../contrib/terminal/browser/terminal.ts | 2 +- .../terminal/browser/terminalActions.ts | 8 ++++---- .../terminal/browser/terminalService.ts | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index ca50a79e51ab4..9d7edc4bdf1ef 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -155,7 +155,7 @@ export interface ITerminalService { */ registerLinkProvider(linkProvider: ITerminalExternalLinkProvider): IDisposable; - selectDefaultProfile(quickCreate?: boolean): Promise; + showProfileQuickPick(type: 'setDefault' | 'createInstance'): Promise; /** * Gets the detected terminal profiles for the platform diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 3f4c625b34d9b..d307a404ad3e0 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -133,13 +133,13 @@ export function registerTerminalActions() { constructor() { super({ id: TERMINAL_COMMAND_ID.NEW_WITH_PROFILE, - title: { value: localize('workbench.action.terminal.newWithProfile', "Create New Integrated Terminal With Profile"), original: 'Create New Integrated Terminal With Profile' }, + title: { value: localize('workbench.action.terminal.newWithProfile', "Create New Integrated Terminal (With Profile)"), original: 'Create New Integrated Terminal (With Profile)' }, f1: true, category, }); } async run(accessor: ServicesAccessor) { - await accessor.get(ITerminalService).selectDefaultProfile(true); + await accessor.get(ITerminalService).showProfileQuickPick('createInstance'); } }); registerAction2(class extends Action2 { @@ -1358,7 +1358,7 @@ export function registerTerminalActions() { }); } async run(accessor: ServicesAccessor) { - await accessor.get(ITerminalService).selectDefaultProfile(); + await accessor.get(ITerminalService).showProfileQuickPick('setDefault'); } }); registerAction2(class extends Action2 { @@ -1466,7 +1466,7 @@ export function registerTerminalActions() { } if (item === selectDefaultProfileTitle) { terminalService.refreshActiveTab(); - return terminalService.selectDefaultProfile(); + return terminalService.showProfileQuickPick('setDefault'); } if (item === configureTerminalSettingsTitle) { await commandService.executeCommand(TERMINAL_COMMAND_ID.CONFIGURE_TERMINAL_SETTINGS); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index dc5299895c413..a1e6b9be7f428 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -842,12 +842,12 @@ export class TerminalService implements ITerminalService { return isWindows ? 'windows' : (isMacintosh ? 'osx' : 'linux'); } - public async selectDefaultProfile(quickCreate?: boolean): Promise { + public async showProfileQuickPick(type: 'setDefault' | 'createInstance'): Promise { const profiles = await this._detectProfiles(false); const platformKey = await this._getPlatformKey(); const options: IPickOptions = { - placeHolder: quickCreate ? nls.localize('terminal.integrated.chooseQuickCreateProfile', "Select the terminal profile to create") : nls.localize('terminal.integrated.chooseDefaultProfile', "Select your default terminal profile"), + placeHolder: 'createInstance' ? nls.localize('terminal.integrated.chooseQuickCreateProfile', "Select the terminal profile to create") : nls.localize('terminal.integrated.chooseDefaultProfile', "Select your default terminal profile"), onDidTriggerItemButton: async (context) => { const configKey = `terminal.integrated.profiles.${platformKey}`; const configProfiles = this._configurationService.inspect<{ [key: string]: ITerminalProfileObject }>(configKey); @@ -880,20 +880,20 @@ export class TerminalService implements ITerminalService { const autoDetectedProfiles = profiles.filter(e => e.isAutoDetected); if (configProfiles.length > 0) { quickPickItems.push({ type: 'separator', label: nls.localize('terminalProfiles', "profiles") }); - quickPickItems.push(...configProfiles.map(e => this._createProfileQuickPickItem(e, quickCreate))); + quickPickItems.push(...configProfiles.map(e => this._createProfileQuickPickItem(e))); } if (configProfiles.length > 0) { quickPickItems.push({ type: 'separator', label: nls.localize('terminalProfiles.detected', "detected") }); - quickPickItems.push(...autoDetectedProfiles.map(e => this._createProfileQuickPickItem(e, quickCreate))); + quickPickItems.push(...autoDetectedProfiles.map(e => this._createProfileQuickPickItem(e))); } const value = await this._quickInputService.pick(quickPickItems, options); if (!value) { return; } - const profile = autoDetectedProfiles.find(profile => profile.profileName === value.profile.profileName) || configProfiles.find(profile => profile.profileName === value.profile.profileName); - if (quickCreate && profile) { - const instance = this.createTerminal({ executable: profile.path, args: profile.args, name: profile.overrideName ? profile.profileName : undefined }); + + if ('createInstance' && value.profile) { + const instance = this.createTerminal({ executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }); this.showPanel(true); this.setActiveInstance(instance); } else { @@ -902,8 +902,8 @@ export class TerminalService implements ITerminalService { } } - private _createProfileQuickPickItem(profile: ITerminalProfile, quickCreate?: boolean): IProfileQuickPickItem { - const buttons: IQuickInputButton[] = quickCreate ? [] : [{ + private _createProfileQuickPickItem(profile: ITerminalProfile): IProfileQuickPickItem { + const buttons: IQuickInputButton[] = [{ iconClass: ThemeIcon.asClassName(configureTerminalProfileIcon), tooltip: nls.localize('createQuickLaunchProfile', "Configure Terminal Profile") }]; From 7df40fbcdc357190d4fc4932c6a685d91056f3ee Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 13:55:53 -0700 Subject: [PATCH 3/8] alt modifier to split --- .../terminal/browser/terminalActions.ts | 2 +- .../terminal/browser/terminalService.ts | 22 +++++++++++++++---- .../contrib/terminal/common/terminal.ts | 1 + 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index d307a404ad3e0..4c5586a577afe 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -135,7 +135,7 @@ export function registerTerminalActions() { id: TERMINAL_COMMAND_ID.NEW_WITH_PROFILE, title: { value: localize('workbench.action.terminal.newWithProfile', "Create New Integrated Terminal (With Profile)"), original: 'Create New Integrated Terminal (With Profile)' }, f1: true, - category, + category }); } async run(accessor: ServicesAccessor) { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index a1e6b9be7f428..30a62e2e57647 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -15,7 +15,7 @@ import { ConfigurationTarget, IConfigurationService } from 'vs/platform/configur import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IInstantiationService, optional } from 'vs/platform/instantiation/common/instantiation'; -import { IPickOptions, IQuickInputButton, IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput'; +import { IKeyMods, IPickOptions, IQuickInputButton, IQuickInputService, IQuickPickItem, IQuickPickSeparator } from 'vs/platform/quickinput/common/quickInput'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ILocalTerminalService, IShellLaunchConfig, ITerminalLaunchError, ITerminalsLayoutInfo, ITerminalsLayoutInfoById, TerminalShellType, WindowsShellType } from 'vs/platform/terminal/common/terminal'; import { ThemeIcon } from 'vs/platform/theme/common/themeService'; @@ -843,6 +843,7 @@ export class TerminalService implements ITerminalService { } public async showProfileQuickPick(type: 'setDefault' | 'createInstance'): Promise { + let keyMods: IKeyMods | undefined; const profiles = await this._detectProfiles(false); const platformKey = await this._getPlatformKey(); @@ -871,6 +872,9 @@ export class TerminalService implements ITerminalService { args: context.item.profile.args }; await this._configurationService.updateValue(configKey, newConfigValue, ConfigurationTarget.USER); + }, + onKeyMods: (mods: IKeyMods) => { + keyMods = mods; } }; @@ -891,11 +895,21 @@ export class TerminalService implements ITerminalService { if (!value) { return; } - if ('createInstance' && value.profile) { - const instance = this.createTerminal({ executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }); + const launchConfig = { executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }; + let instance; + if (keyMods?.alt) { + const activeInstance = this.getActiveInstance(); + if (activeInstance) { + instance = this.splitInstance(activeInstance, instance); + } + } else { + instance = this.createTerminal(launchConfig); + } this.showPanel(true); - this.setActiveInstance(instance); + if (instance) { + this.setActiveInstance(instance); + } } else { await this._configurationService.updateValue(`terminal.integrated.shell.${platformKey}`, value.profile.path, ConfigurationTarget.USER); await this._configurationService.updateValue(`terminal.integrated.shellArgs.${platformKey}`, value.profile.args, ConfigurationTarget.USER); diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 752bddbb25a58..6e89862733928 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -401,6 +401,7 @@ export const enum TERMINAL_COMMAND_ID { NEW_LOCAL = 'workbench.action.terminal.newLocal', NEW_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.newInActiveWorkspace', NEW_WITH_PROFILE = 'workbench.action.terminal.newWithProfile', + NEW_SPLIT_WITH_PROFILE = 'workbench.action.terminal.newSplitWithProfile', SPLIT = 'workbench.action.terminal.split', SPLIT_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.splitInActiveWorkspace', RELAUNCH = 'workbench.action.terminal.relaunch', From 8dcfe508d9c2ccb0e64d16c210e25abc5ee4987f Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 14:42:53 -0700 Subject: [PATCH 4/8] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workbench/contrib/terminal/browser/terminalService.ts | 8 ++++---- src/vs/workbench/contrib/terminal/common/terminal.ts | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 30a62e2e57647..6efdf1889d951 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -848,7 +848,7 @@ export class TerminalService implements ITerminalService { const platformKey = await this._getPlatformKey(); const options: IPickOptions = { - placeHolder: 'createInstance' ? nls.localize('terminal.integrated.chooseQuickCreateProfile', "Select the terminal profile to create") : nls.localize('terminal.integrated.chooseDefaultProfile', "Select your default terminal profile"), + placeHolder: 'createInstance' ? nls.localize('terminal.integrated.selectProfileToCreate', "Select the terminal profile to create") : nls.localize('terminal.integrated.chooseDefaultProfile', "Select your default terminal profile"), onDidTriggerItemButton: async (context) => { const configKey = `terminal.integrated.profiles.${platformKey}`; const configProfiles = this._configurationService.inspect<{ [key: string]: ITerminalProfileObject }>(configKey); @@ -873,9 +873,7 @@ export class TerminalService implements ITerminalService { }; await this._configurationService.updateValue(configKey, newConfigValue, ConfigurationTarget.USER); }, - onKeyMods: (mods: IKeyMods) => { - keyMods = mods; - } + onKeyMods: mods => keyMods = mods, }; // Build quick pick items @@ -899,6 +897,7 @@ export class TerminalService implements ITerminalService { const launchConfig = { executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }; let instance; if (keyMods?.alt) { + // create split const activeInstance = this.getActiveInstance(); if (activeInstance) { instance = this.splitInstance(activeInstance, instance); @@ -911,6 +910,7 @@ export class TerminalService implements ITerminalService { this.setActiveInstance(instance); } } else { + // setDefault await this._configurationService.updateValue(`terminal.integrated.shell.${platformKey}`, value.profile.path, ConfigurationTarget.USER); await this._configurationService.updateValue(`terminal.integrated.shellArgs.${platformKey}`, value.profile.args, ConfigurationTarget.USER); } diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 6e89862733928..752bddbb25a58 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -401,7 +401,6 @@ export const enum TERMINAL_COMMAND_ID { NEW_LOCAL = 'workbench.action.terminal.newLocal', NEW_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.newInActiveWorkspace', NEW_WITH_PROFILE = 'workbench.action.terminal.newWithProfile', - NEW_SPLIT_WITH_PROFILE = 'workbench.action.terminal.newSplitWithProfile', SPLIT = 'workbench.action.terminal.split', SPLIT_IN_ACTIVE_WORKSPACE = 'workbench.action.terminal.splitInActiveWorkspace', RELAUNCH = 'workbench.action.terminal.relaunch', From 9372eb43e76d41cd7fb24669eeeec0603b91e5c6 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 14:49:43 -0700 Subject: [PATCH 5/8] fix bug --- .../workbench/contrib/terminal/browser/terminalService.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 6efdf1889d951..a18602b582e01 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -873,7 +873,7 @@ export class TerminalService implements ITerminalService { }; await this._configurationService.updateValue(configKey, newConfigValue, ConfigurationTarget.USER); }, - onKeyMods: mods => keyMods = mods, + onKeyMods: mods => keyMods = mods }; // Build quick pick items @@ -893,14 +893,14 @@ export class TerminalService implements ITerminalService { if (!value) { return; } - if ('createInstance' && value.profile) { + if ('createInstance') { const launchConfig = { executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }; let instance; if (keyMods?.alt) { // create split const activeInstance = this.getActiveInstance(); if (activeInstance) { - instance = this.splitInstance(activeInstance, instance); + instance = this.splitInstance(activeInstance, launchConfig); } } else { instance = this.createTerminal(launchConfig); From 9672c5ef1de0ee8f08e1b8fd799f39777418c8a0 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 14:52:22 -0700 Subject: [PATCH 6/8] move showPanel within conditional --- src/vs/workbench/contrib/terminal/browser/terminalService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index a18602b582e01..9b332950f62db 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -905,8 +905,8 @@ export class TerminalService implements ITerminalService { } else { instance = this.createTerminal(launchConfig); } - this.showPanel(true); if (instance) { + this.showPanel(true); this.setActiveInstance(instance); } } else { From 6dd81a224403755dab30e6410e8d498200a6ea9d Mon Sep 17 00:00:00 2001 From: meganrogge Date: Tue, 30 Mar 2021 15:00:06 -0700 Subject: [PATCH 7/8] cover case when alt is pressed and no active instance --- .../workbench/contrib/terminal/browser/terminalService.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 9b332950f62db..029d014d7a20d 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -896,9 +896,9 @@ export class TerminalService implements ITerminalService { if ('createInstance') { const launchConfig = { executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }; let instance; - if (keyMods?.alt) { - // create split - const activeInstance = this.getActiveInstance(); + const activeInstance = this.getActiveInstance(); + if (keyMods?.alt && activeInstance) { + // create split, only valid if there's an active instance if (activeInstance) { instance = this.splitInstance(activeInstance, launchConfig); } From 0b2c44c20df38c414ffcf90dcab1d9d98070ad41 Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Wed, 31 Mar 2021 09:52:13 -0700 Subject: [PATCH 8/8] Update src/vs/workbench/contrib/terminal/browser/terminalService.ts Co-authored-by: Daniel Imms <2193314+Tyriar@users.noreply.github.com> --- src/vs/workbench/contrib/terminal/browser/terminalService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 029d014d7a20d..a1fcf433670b8 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -893,7 +893,7 @@ export class TerminalService implements ITerminalService { if (!value) { return; } - if ('createInstance') { + if (type === 'createInstance') { const launchConfig = { executable: value.profile.path, args: value.profile.args, name: value.profile.overrideName ? value.profile.profileName : undefined }; let instance; const activeInstance = this.getActiveInstance();