From b7985f4157336a4b075b4af7f76bc7b35ffafc90 Mon Sep 17 00:00:00 2001 From: Daniel Imms Date: Wed, 18 Apr 2018 14:02:41 -0700 Subject: [PATCH] Polish exit, fix input --- .../api/electron-browser/mainThreadTerminalService.ts | 1 + src/vs/workbench/api/node/extHostTerminalService.ts | 11 ++++++++--- .../terminal/node/terminalProcessExtHostProxy.ts | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts index 482ab29cf44..2086db18928 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadTerminalService.ts @@ -129,5 +129,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape public $sendProcessExit(terminalId: number, exitCode: number): void { this._terminalProcesses[terminalId].emitExit(exitCode); + delete this._terminalProcesses[terminalId]; } } diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 035f4c42664..cb546c2e8d8 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -243,9 +243,15 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public $acceptProcessResize(id: number, cols: number, rows: number): void { - console.log('send resize'); if (this._terminalProcesses[id].connected) { - this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + try { + this._terminalProcesses[id].send({ event: 'resize', cols, rows }); + } catch (error) { + // We tried to write to a closed pipe / channel. + if (error.code !== 'EPIPE' && error.code !== 'ERR_IPC_CHANNEL_CLOSED') { + throw (error); + } + } } } @@ -256,7 +262,6 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } private _onProcessExit(id: number, exitCode: number): void { - console.log('exit'); // Remove listeners const process = this._terminalProcesses[id]; process.removeAllListeners('message'); diff --git a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts index a302b7df10b..b03a15e8f69 100644 --- a/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/parts/terminal/node/terminalProcessExtHostProxy.ts @@ -52,7 +52,7 @@ export class TerminalProcessExtHostProxy extends EventEmitter implements ITermin public onInput(listener: (data: string) => void): IDisposable { const outerListener = (data) => listener(data); - this.on('input', data => outerListener); + this.on('input', outerListener); return toDisposable(() => this.removeListener('input', outerListener)); } -- GitLab