Get terminal renderers working with name, onData

This commit is contained in:
Daniel Imms
2018-06-14 16:11:04 +02:00
parent ed5b3d5afb
commit 3465f18409
7 changed files with 100 additions and 9 deletions

View File

@@ -17,6 +17,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
private _toDispose: IDisposable[] = [];
private _terminalProcesses: { [id: number]: ITerminalProcessExtHostProxy } = {};
private _dataListeners: { [id: number]: IDisposable } = {};
private _rendererDataListeners: { [id: number]: IDisposable } = {};
constructor(
extHostContext: IExtHostContext,
@@ -85,13 +86,28 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
}
}
public $write(terminalId: number, text: string): void {
public $terminalRendererWrite(terminalId: number, text: string): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance && terminalInstance.shellLaunchConfig.isRendererOnly) {
terminalInstance.write(text);
}
}
public $terminalRendererSetName(terminalId: number, name: string): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance && terminalInstance.shellLaunchConfig.isRendererOnly) {
terminalInstance.setTitle(name, false);
}
}
public $terminalRendererRegisterOnDataListener(terminalId: number): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance) {
this._rendererDataListeners[terminalId] = terminalInstance.onRendererData(data => this._onTerminalRendererData(terminalId, data));
terminalInstance.onDisposed(() => delete this._dataListeners[terminalId]);
}
}
public $sendText(terminalId: number, text: string, addNewLine: boolean): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance) {
@@ -103,7 +119,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance) {
this._dataListeners[terminalId] = terminalInstance.onData(data => this._onTerminalData(terminalId, data));
terminalInstance.onDisposed(instance => delete this._dataListeners[terminalId]);
terminalInstance.onDisposed(() => delete this._dataListeners[terminalId]);
}
}
@@ -111,6 +127,10 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
this._proxy.$acceptTerminalProcessData(terminalId, data);
}
private _onTerminalRendererData(terminalId: number, data: string): void {
this._proxy.$acceptTerminalRendererData(terminalId, data);
}
private _onTerminalDisposed(terminalInstance: ITerminalInstance): void {
this._proxy.$acceptTerminalClosed(terminalInstance.id);
}