diff --git a/src/vs/workbench/api/browser/mainThreadTerminalService.ts b/src/vs/workbench/api/browser/mainThreadTerminalService.ts index 9f430d4e99d..c60d2cb2c51 100644 --- a/src/vs/workbench/api/browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/browser/mainThreadTerminalService.ts @@ -10,7 +10,7 @@ import { URI } from 'vs/base/common/uri'; import { StopWatch } from 'vs/base/common/stopwatch'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ILogService } from 'vs/platform/log/common/log'; -import { IProcessProperty, IShellLaunchConfig, IShellLaunchConfigDto, TerminalLocation, TitleEventSource } from 'vs/platform/terminal/common/terminal'; +import { IProcessProperty, IShellLaunchConfig, IShellLaunchConfigDto, ProcessPropertyType, TerminalLocation, TitleEventSource } from 'vs/platform/terminal/common/terminal'; import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; import { ITerminalEditorService, ITerminalExternalLinkProvider, ITerminalGroupService, ITerminalInstance, ITerminalInstanceService, ITerminalLink, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TerminalProcessExtHostProxy } from 'vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy'; @@ -303,18 +303,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape proxy.onRequestLatency(() => this._onRequestLatency(proxy.instanceId)); } - public $sendProcessTitle(terminalId: number, title: string): void { - // Since title events can only come from vscode.Pseudoterminals right now, these are routed - // directly to the instance as API source events such that they will replace the initial - // `name` property provided for the Pseudoterminal. If we support showing both Api and - // Process titles at the same time we may want to pass this through as a Process source - // event. - const instance = this._terminalService.getInstanceFromId(terminalId); - if (instance) { - instance.refreshTabLabels(title, TitleEventSource.Api); - } - } - public $sendProcessData(terminalId: number, data: string): void { this._terminalProcessProxies.get(terminalId)?.emitData(data); } @@ -324,13 +312,15 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape } public $sendProcessProperty(terminalId: number, property: IProcessProperty): void { + if (property.type === ProcessPropertyType.Title) { + const instance = this._terminalService.getInstanceFromId(terminalId); + if (instance) { + instance.refreshTabLabels(property.value, TitleEventSource.Api); + } + } this._terminalProcessProxies.get(terminalId)?.emitProcessProperty(property); } - public $sendProcessExit(terminalId: number, exitCode: number | undefined): void { - this._terminalProcessProxies.get(terminalId)?.emitExit(exitCode); - } - private async _onRequestLatency(terminalId: number): Promise { const COUNT = 2; let sum = 0; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts index a9af01a144c..d2a3a60b7d0 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.ts @@ -16,8 +16,6 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal get capabilities(): ProcessCapability[] { return this._capabilities; } private readonly _onProcessData = this._register(new Emitter()); readonly onProcessData: Event = this._onProcessData.event; - private readonly _onProcessExit = this._register(new Emitter()); - readonly onProcessExit: Event = this._onProcessExit.event; private readonly _onProcessReady = this._register(new Emitter()); get onProcessReady(): Event { return this._onProcessReady.event; } @@ -85,11 +83,14 @@ export class TerminalProcessExtHostProxy extends Disposable implements ITerminal case ProcessPropertyType.ResolvedShellLaunchConfig: this.emitResolvedShellLaunchConfig(value); break; + case ProcessPropertyType.Exit: + this.emitExit(value); + break; } } emitExit(exitCode: number | undefined): void { - this._onProcessExit.fire(exitCode); + this._onDidChangeProperty.fire({ type: ProcessPropertyType.Exit, value: exitCode }); this.dispose(); } diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 14478a7027e..f91dbcf3856 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -341,7 +341,6 @@ export interface ITerminalProcessExtHostProxy extends IDisposable { emitData(data: string): void; emitProcessProperty(property: IProcessProperty): void; emitReady(pid: number, cwd: string): void; - emitExit(exitCode: number | undefined): void; emitLatency(latency: number): void; onInput: Event;