From 49bdd4fdc8ca3963c380205d032ffa2aaba7fbe4 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Tue, 7 Mar 2017 09:17:16 -0800 Subject: [PATCH] Add confirmOnExit terminal setting --- src/vs/workbench/parts/terminal/common/terminal.ts | 4 +++- src/vs/workbench/parts/terminal/common/terminalService.ts | 4 ++++ .../terminal/electron-browser/terminal.contribution.ts | 6 +++++- .../parts/terminal/electron-browser/terminalConfigHelper.ts | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/parts/terminal/common/terminal.ts b/src/vs/workbench/parts/terminal/common/terminal.ts index 3bdb90e6195..864ba5e7ed8 100644 --- a/src/vs/workbench/parts/terminal/common/terminal.ts +++ b/src/vs/workbench/parts/terminal/common/terminal.ts @@ -58,7 +58,8 @@ export interface ITerminalConfiguration { setLocaleVariables: boolean, scrollback: number, commandsToSkipShell: string[], - cwd: string + cwd: string, + confirmOnExit: boolean } }; } @@ -72,6 +73,7 @@ export interface ITerminalConfigHelper { getCommandsToSkipShell(): string[]; getScrollback(): number; getCwd(): string; + getConfirmOnExit(): boolean; } export interface ITerminalFont { diff --git a/src/vs/workbench/parts/terminal/common/terminalService.ts b/src/vs/workbench/parts/terminal/common/terminalService.ts index 04bce7f408a..95409944cdf 100644 --- a/src/vs/workbench/parts/terminal/common/terminalService.ts +++ b/src/vs/workbench/parts/terminal/common/terminalService.ts @@ -64,6 +64,10 @@ export abstract class TerminalService implements ITerminalService { public abstract setContainers(panelContainer: HTMLElement, terminalContainer: HTMLElement): void; private _onWillShutdown(): boolean { + if (!this.configHelper.getConfirmOnExit()) { + // Don't veto if configured to skip confirmation + return false; + } if (this.terminalInstances.length === 0) { // No terminal instances, don't veto return false; diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts index b2ab3a88f42..08d21048f45 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminal.contribution.ts @@ -129,6 +129,11 @@ configurationRegistry.registerConfiguration({ 'type': 'string', 'default': undefined }, + 'terminal.integrated.confirmOnExit': { + 'description': nls.localize('terminal.integrated.confirmOnExit', "Whether to confirm on exit if there are active terminal sessions."), + 'type': 'boolean', + 'default': false + }, 'terminal.integrated.commandsToSkipShell': { 'description': nls.localize('terminal.integrated.commandsToSkipShell', "A set of command IDs whose keybindings will not be sent to the shell and instead always be handled by Code. This allows the use of keybindings that would normally be consumed by the shell to act the same as when the terminal is not focused, for example ctrl+p to launch Quick Open."), 'type': 'array', @@ -174,7 +179,6 @@ configurationRegistry.registerConfiguration({ debugActions.PauseAction.ID, OpenNextRecentlyUsedEditorInGroupAction.ID, OpenPreviousRecentlyUsedEditorInGroupAction.ID - ].sort() } } diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts index c62cdccdcf2..11c1db93134 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalConfigHelper.ts @@ -194,6 +194,11 @@ export class TerminalConfigHelper implements ITerminalConfigHelper { return config.terminal.integrated.cwd; } + public getConfirmOnExit(): boolean { + const config = this._configurationService.getConfiguration(); + return config.terminal.integrated.confirmOnExit; + } + private _toInteger(source: any, minimum?: number): number { let r = parseInt(source, 10); if (isNaN(r)) {