提交 f957bf8a 编写于 作者: D Daniel Imms

Get onData working for renderers

上级 56d8e4f7
......@@ -16,8 +16,6 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
private _proxy: ExtHostTerminalServiceShape;
private _toDispose: IDisposable[] = [];
private _terminalProcesses: { [id: number]: ITerminalProcessExtHostProxy } = {};
private _dataListeners: { [id: number]: IDisposable } = {};
private _rendererInputListeners: { [id: number]: IDisposable } = {};
constructor(
extHostContext: IExtHostContext,
......@@ -112,8 +110,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
public $terminalRendererRegisterOnInputListener(terminalId: number): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance) {
this._rendererInputListeners[terminalId] = terminalInstance.onRendererInput(data => this._onTerminalRendererInput(terminalId, data));
terminalInstance.onDisposed(() => delete this._rendererInputListeners[terminalId]);
terminalInstance.addDisposable(terminalInstance.onRendererInput(data => this._onTerminalRendererInput(terminalId, data)));
}
}
......@@ -127,8 +124,7 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape
public $registerOnDataListener(terminalId: number): void {
const terminalInstance = this.terminalService.getInstanceFromId(terminalId);
if (terminalInstance) {
this._dataListeners[terminalId] = terminalInstance.onData(data => this._onTerminalData(terminalId, data));
terminalInstance.onDisposed(() => delete this._dataListeners[terminalId]);
terminalInstance.addDisposable(terminalInstance.onData(data => this._onTerminalData(terminalId, data)));
}
}
......
......@@ -99,6 +99,8 @@ export class TerminalInstance implements ITerminalInstance {
public get onProcessIdReady(): Event<ITerminalInstance> { return this._onProcessIdReady.event; }
private readonly _onTitleChanged: Emitter<string> = new Emitter<string>();
public get onTitleChanged(): Event<string> { return this._onTitleChanged.event; }
private readonly _onData: Emitter<string> = new Emitter<string>();
public get onData(): Event<string> { return this._onData.event; }
private readonly _onRequestExtHostProcess: Emitter<ITerminalInstance> = new Emitter<ITerminalInstance>();
public get onRequestExtHostProcess(): Event<ITerminalInstance> { return this._onRequestExtHostProcess.event; }
private readonly _onDimensionsChanged: Emitter<void> = new Emitter<void>();
......@@ -607,6 +609,10 @@ export class TerminalInstance implements ITerminalInstance {
return;
}
this._xterm.write(text);
if (this._shellLaunchConfig.isRendererOnly) {
// Fire onData API in the extension host
this._onData.fire(text);
}
});
}
......@@ -695,6 +701,8 @@ export class TerminalInstance implements ITerminalInstance {
this._processManager.onProcessExit(exitCode => this._onProcessExit(exitCode));
this._processManager.createProcess(this._shellLaunchConfig, this._cols, this._rows);
this._processManager.onProcessData(data => this._onData.fire(data));
if (this._shellLaunchConfig.name) {
this.setTitle(this._shellLaunchConfig.name, false);
} else {
......@@ -826,14 +834,6 @@ export class TerminalInstance implements ITerminalInstance {
this._shellLaunchConfig = shell;
}
public onData(listener: (data: string) => void): lifecycle.IDisposable {
// TODO: This should still work for renderers
if (!this._processManager) {
return null;
}
return this._processManager.onProcessData(data => listener(data));
}
public onRendererInput(listener: (data: string) => void): lifecycle.IDisposable {
this._onRendererInputListeners.push(listener);
return {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册