open/close dev tools when escape sequence logging toggled (#137746)

This commit is contained in:
Megan Rogge
2021-11-23 14:49:33 -05:00
committed by GitHub
parent d1640b7850
commit f86e5d14af
5 changed files with 20 additions and 6 deletions

View File

@@ -194,12 +194,14 @@ export interface ITerminalService extends ITerminalInstanceHost {
resolveLocation(location?: ITerminalLocationOptions): TerminalLocation | undefined
setNativeDelegate(nativeCalls: ITerminalServiceNativeDelegate): void;
toggleDevTools(open?: boolean): Promise<void>;
handleNewRegisteredBackend(backend: ITerminalBackend): void;
}
export interface ITerminalServiceNativeDelegate {
getWindowCount(): Promise<number>;
openDevTools(): Promise<void>;
toggleDevTools(): Promise<void>;
}
/**
@@ -754,7 +756,7 @@ export interface ITerminalInstance {
addDisposable(disposable: IDisposable): void;
toggleEscapeSequenceLogging(): void;
toggleEscapeSequenceLogging(): Promise<boolean>;
getInitialCwd(): Promise<string>;
getCwd(): Promise<string>;

View File

@@ -1156,8 +1156,10 @@ export function registerTerminalActions() {
precondition: TerminalContextKeys.processSupported
});
}
run(accessor: ServicesAccessor) {
accessor.get(ITerminalService).activeInstance?.toggleEscapeSequenceLogging();
async run(accessor: ServicesAccessor) {
const terminalService = accessor.get(ITerminalService);
const toggledOn = await terminalService.activeInstance?.toggleEscapeSequenceLogging();
terminalService.toggleDevTools(toggledOn);
}
});
registerAction2(class extends Action2 {

View File

@@ -1751,9 +1751,10 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
}
}
async toggleEscapeSequenceLogging(): Promise<void> {
async toggleEscapeSequenceLogging(): Promise<boolean> {
const xterm = await this._xtermReadyPromise;
xterm.raw.options.logLevel = xterm.raw.options.logLevel === 'debug' ? 'info' : 'debug';
return xterm.raw.options.logLevel === 'debug';
}
async getInitialCwd(): Promise<string> {

View File

@@ -540,6 +540,13 @@ export class TerminalService implements ITerminalService {
this._nativeDelegate = nativeDelegate;
}
async toggleDevTools(open?: boolean): Promise<void> {
if (open) {
this._nativeDelegate?.openDevTools();
} else {
this._nativeDelegate?.toggleDevTools();
}
}
private _shouldReviveProcesses(reason: ShutdownReason): boolean {
if (!this._configHelper.config.enablePersistentSessions) {
return false;

View File

@@ -31,7 +31,9 @@ export class TerminalNativeContribution extends Disposable implements IWorkbench
this._register(nativeHostService.onDidResumeOS(() => this._onOsResume()));
this._terminalService.setNativeDelegate({
getWindowCount: () => nativeHostService.getWindowCount()
getWindowCount: () => nativeHostService.getWindowCount(),
openDevTools: () => nativeHostService.openDevTools(),
toggleDevTools: () => nativeHostService.toggleDevTools()
});
const connection = remoteAgentService.getConnection();