From f86e5d14afe60ceddb339ebc73bbd501f5029312 Mon Sep 17 00:00:00 2001 From: Megan Rogge Date: Tue, 23 Nov 2021 14:49:33 -0500 Subject: [PATCH] open/close dev tools when escape sequence logging toggled (#137746) --- src/vs/workbench/contrib/terminal/browser/terminal.ts | 6 ++++-- .../workbench/contrib/terminal/browser/terminalActions.ts | 6 ++++-- .../workbench/contrib/terminal/browser/terminalInstance.ts | 3 ++- .../workbench/contrib/terminal/browser/terminalService.ts | 7 +++++++ .../electron-sandbox/terminalNativeContribution.ts | 4 +++- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 0a8fe39a7da..c0d90d9e0df 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -194,12 +194,14 @@ export interface ITerminalService extends ITerminalInstanceHost { resolveLocation(location?: ITerminalLocationOptions): TerminalLocation | undefined setNativeDelegate(nativeCalls: ITerminalServiceNativeDelegate): void; - + toggleDevTools(open?: boolean): Promise; handleNewRegisteredBackend(backend: ITerminalBackend): void; } export interface ITerminalServiceNativeDelegate { getWindowCount(): Promise; + openDevTools(): Promise; + toggleDevTools(): Promise; } /** @@ -754,7 +756,7 @@ export interface ITerminalInstance { addDisposable(disposable: IDisposable): void; - toggleEscapeSequenceLogging(): void; + toggleEscapeSequenceLogging(): Promise; getInitialCwd(): Promise; getCwd(): Promise; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts index 0ee189630af..9fe28adb47d 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalActions.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalActions.ts @@ -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 { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 712e0057c7a..9c62e257294 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -1751,9 +1751,10 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { } } - async toggleEscapeSequenceLogging(): Promise { + async toggleEscapeSequenceLogging(): Promise { 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 { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index aadad171207..13ef04d3941 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -540,6 +540,13 @@ export class TerminalService implements ITerminalService { this._nativeDelegate = nativeDelegate; } + async toggleDevTools(open?: boolean): Promise { + if (open) { + this._nativeDelegate?.openDevTools(); + } else { + this._nativeDelegate?.toggleDevTools(); + } + } private _shouldReviveProcesses(reason: ShutdownReason): boolean { if (!this._configHelper.config.enablePersistentSessions) { return false; diff --git a/src/vs/workbench/contrib/terminal/electron-sandbox/terminalNativeContribution.ts b/src/vs/workbench/contrib/terminal/electron-sandbox/terminalNativeContribution.ts index a6fb2f96f1c..5b192f30c4a 100644 --- a/src/vs/workbench/contrib/terminal/electron-sandbox/terminalNativeContribution.ts +++ b/src/vs/workbench/contrib/terminal/electron-sandbox/terminalNativeContribution.ts @@ -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();