From 6efcb92e347189eaf44897d3b9cb09c75780fe1d Mon Sep 17 00:00:00 2001 From: meganrogge Date: Sun, 4 Jul 2021 11:35:10 -0700 Subject: [PATCH] open or focus editor --- .../workbench/contrib/terminal/browser/terminal.ts | 1 + .../terminal/browser/terminalEditorService.ts | 14 ++++++++++++++ .../terminal/browser/terminalQuickAccess.ts | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminal.ts b/src/vs/workbench/contrib/terminal/browser/terminal.ts index 74892f6d7f1..3362712691f 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminal.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminal.ts @@ -197,6 +197,7 @@ export interface ITerminalEditorService extends ITerminalInstanceHost, ITerminal readonly instances: readonly ITerminalInstance[]; openEditor(instance: ITerminalInstance): Promise; + openOrFocusEditor(instance: ITerminalInstance): Promise; getOrCreateEditorInput(instance: ITerminalInstance | SerializedTerminalEditorInput): TerminalEditorInput; detachActiveEditorInstance(): ITerminalInstance; detachInstance(instance: ITerminalInstance): void; diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts index a2d1e74b844..6b3b2ab9cb4 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts @@ -145,6 +145,20 @@ export class TerminalEditorService extends Disposable implements ITerminalEditor ); } + async openOrFocusEditor(instance: ITerminalInstance): Promise { + const input = this.getOrCreateEditorInput(instance); + console.log(this._editorService.activeEditorPane?.group); + if (!this._editorService.activeEditorPane?.group.contains(input)) { + instance.focus(); + return; + } + await this._editorService.openEditor(input, { + pinned: true, + forceReload: true + } + ); + } + getOrCreateEditorInput(instance: ITerminalInstance | SerializedTerminalEditorInput, isFutureSplit: boolean = false): TerminalEditorInput { let cachedEditor; if ('id' in instance) { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts b/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts index 6f262d01a8c..24a4854a972 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalQuickAccess.ts @@ -121,7 +121,7 @@ export class TerminalQuickAccessProvider extends PickerQuickAccessProvider { if (terminal.target === TerminalLocation.Editor) { - terminal.focus(); + this._terminalEditorService.openOrFocusEditor(terminal); this._terminalEditorService.setActiveInstance(terminal); } else { this._terminalGroupService.showPanel(!event.inBackground);