diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 5c7499cf43b..d1f859c29e7 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -412,7 +412,7 @@ declare module 'vscode' { /** * The corressponding [Terminal](#Terminal) for this TerminalRenderer. */ - readonly terminal: Thenable; + readonly terminal: Terminal; /** * Write text to the terminal. Unlike [Terminal.sendText](#Terminal.sendText) which sends diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 4c16f048f99..f67e95e5a75 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -62,7 +62,7 @@ export class BaseExtHostTerminal { request.run(this._proxy, this._id); } - protected _runQueuedRequests(id: number): void { + public _runQueuedRequests(id: number): void { this._id = id; this._idPromiseComplete(id); this._queuedRequests.forEach((r) => { @@ -188,18 +188,19 @@ export class ExtHostTerminalRenderer extends BaseExtHostTerminal implements vsco return this._onDidChangeMaximumDimensions && this._onDidChangeMaximumDimensions.event; } - public get terminal(): Promise { - return this._idPromise.then(id => this._fetchTerminal(id)); + public get terminal(): ExtHostTerminal { + return this._terminal; } constructor( proxy: MainThreadTerminalServiceShape, private _name: string, - private _fetchTerminal: (id: number) => Promise + private _terminal: ExtHostTerminal ) { super(proxy); this._proxy.$createTerminalRenderer(this._name).then(id => { this._runQueuedRequests(id); + (this._terminal)._runQueuedRequests(id); }); } @@ -258,8 +259,13 @@ export class ExtHostTerminalService implements ExtHostTerminalServiceShape { } public createTerminalRenderer(name: string): vscode.TerminalRenderer { - const renderer = new ExtHostTerminalRenderer(this._proxy, name, (id) => this._getTerminalByIdEventually(id)); + const terminal = new ExtHostTerminal(this._proxy, name); + terminal._setProcessId(undefined); + this._terminals.push(terminal); + + const renderer = new ExtHostTerminalRenderer(this._proxy, name, terminal); this._terminalRenderers.push(renderer); + return renderer; }