提交 6884052c 编写于 作者: C chrmarti 提交者: GitHub

Merge pull request #8770 from chrmarti/master

Fixes #6938: Integrated terminal non-falsey shell exit codes should be reported to the UI, not just the console
......@@ -5,9 +5,11 @@
import DOM = require('vs/base/browser/dom');
import lifecycle = require('vs/base/common/lifecycle');
import nls = require('vs/nls');
import platform = require('vs/base/common/platform');
import xterm = require('xterm');
import {Dimension} from 'vs/base/browser/builder';
import {IMessageService, Severity} from 'vs/platform/message/common/message';
import {ITerminalFont} from 'vs/workbench/parts/terminal/electron-browser/terminalConfigHelper';
import {ITerminalProcess, ITerminalService} from 'vs/workbench/parts/terminal/electron-browser/terminal';
import {IWorkspaceContextService} from 'vs/platform/workspace/common/workspace';
......@@ -26,6 +28,7 @@ export class TerminalInstance {
private parentDomElement: HTMLElement,
private contextService: IWorkspaceContextService,
private terminalService: ITerminalService,
private messageService: IMessageService,
private onExitCallback: (TerminalInstance) => void
) {
this.toDispose = [];
......@@ -52,7 +55,7 @@ export class TerminalInstance {
this.isExiting = true;
this.dispose();
if (exitCode) {
console.error('Integrated terminal exited with code ' + exitCode);
this.messageService.show(Severity.Error, nls.localize('terminal.integrated.exitedWithCode', 'The terminal process terminated with exit code: {0}', exitCode));
}
this.onExitCallback(this);
}
......
......@@ -12,6 +12,7 @@ import {KillTerminalAction, CreateNewTerminalAction, SwitchTerminalInstanceActio
import {IActionItem} from 'vs/base/browser/ui/actionbar/actionbar';
import {IConfigurationService} from 'vs/platform/configuration/common/configuration';
import {IInstantiationService} from 'vs/platform/instantiation/common/instantiation';
import {IMessageService} from 'vs/platform/message/common/message';
import {ITelemetryService} from 'vs/platform/telemetry/common/telemetry';
import {ITerminalProcess, ITerminalService, TERMINAL_PANEL_ID} from 'vs/workbench/parts/terminal/electron-browser/terminal';
import {IThemeService} from 'vs/workbench/services/themes/common/themeService';
......@@ -38,7 +39,8 @@ export class TerminalPanel extends Panel {
@IInstantiationService private instantiationService: IInstantiationService,
@IWorkspaceContextService private contextService: IWorkspaceContextService,
@ITerminalService private terminalService: ITerminalService,
@IThemeService private themeService: IThemeService
@IThemeService private themeService: IThemeService,
@IMessageService private messageService: IMessageService
) {
super(TERMINAL_PANEL_ID, telemetryService);
}
......@@ -128,7 +130,7 @@ export class TerminalPanel extends Panel {
private createTerminal(terminalProcess: ITerminalProcess): TPromise<TerminalInstance> {
return new TPromise<TerminalInstance>(resolve => {
var terminalInstance = new TerminalInstance(terminalProcess, this.terminalContainer, this.contextService, this.terminalService, this.onTerminalInstanceExit.bind(this));
var terminalInstance = new TerminalInstance(terminalProcess, this.terminalContainer, this.contextService, this.terminalService, this.messageService, this.onTerminalInstanceExit.bind(this));
this.terminalInstances.push(terminalInstance);
this.setActiveTerminal(this.terminalInstances.length - 1);
this.toDispose.push(this.themeService.onDidThemeChange(this.updateTheme.bind(this)));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册