From ae7a4ba555b640be4d76ed482f043a51418df3bb Mon Sep 17 00:00:00 2001 From: meganrogge Date: Wed, 15 Jun 2022 12:39:09 -0700 Subject: [PATCH] use terminals from the editorService --- .../contrib/terminal/browser/terminalEditorService.ts | 9 +++++++-- .../contrib/terminal/browser/terminalService.ts | 3 +-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts b/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts index aec68ee5d91a5..fb0e66d83b948 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalEditorService.ts @@ -7,10 +7,11 @@ import { Emitter } from 'vs/base/common/event'; import { Disposable, dispose, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { FindReplaceState } from 'vs/editor/contrib/find/browser/findState'; +import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { EditorActivation } from 'vs/platform/editor/common/editor'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IShellLaunchConfig, TerminalLocation } from 'vs/platform/terminal/common/terminal'; +import { IShellLaunchConfig, TerminalLocation, TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import { EditorInput } from 'vs/workbench/common/editor/editorInput'; import { IDeserializedTerminalEditorInput, ITerminalEditorService, ITerminalInstance, ITerminalInstanceService, TerminalEditorLocation } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TerminalEditor } from 'vs/workbench/contrib/terminal/browser/terminalEditor'; @@ -52,7 +53,8 @@ export class TerminalEditorService extends Disposable implements ITerminalEditor @IInstantiationService private readonly _instantiationService: IInstantiationService, @ILifecycleService lifecycleService: ILifecycleService, @IWorkbenchEnvironmentService private readonly _environmentService: IWorkbenchEnvironmentService, - @IContextKeyService contextKeyService: IContextKeyService + @IContextKeyService contextKeyService: IContextKeyService, + @IConfigurationService private readonly _configurationService: IConfigurationService ) { super(); this._terminalEditorActive = TerminalContextKeys.terminalEditorActive.bindTo(contextKeyService); @@ -93,6 +95,9 @@ export class TerminalEditorService extends Disposable implements ITerminalEditor // Remove the terminal from the managed instances when the editor closes. This fires when // dragging and dropping to another editor or closing the editor via cmd/ctrl+w. this._register(this._editorService.onDidCloseEditor(e => { + if (this._isShuttingDown && this._configurationService.getValue(TerminalSettingId.PersistentSessionReviveProcess)) { + return; + } const instance = e.editor instanceof TerminalEditorInput ? e.editor.terminalInstance : undefined; if (instance) { const instanceIndex = this.instances.findIndex(e => e === instance); diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 02072ae283cf3..d6b8751297310 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -663,8 +663,7 @@ export class TerminalService implements ITerminalService { seenPersistentProcessIds.push(term.terminal); } } - const otherInstances = this.instances.filter(instance => typeof instance.persistentProcessId === 'number' && instance.shouldPersist && seenPersistentProcessIds.indexOf(instance.persistentProcessId) === -1); - const editorTerminals = otherInstances.map((instance) => { + const editorTerminals = this._terminalEditorService.instances.map((instance) => { return { terminal: instance.persistentProcessId || 0 };