Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/microsoft/vscode.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts')
-rw-r--r--src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts
index ba6540e654c..901505cb26a 100644
--- a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts
+++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts
@@ -113,9 +113,10 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
readonly onRestoreCommands = this._onRestoreCommands.event;
get persistentProcessId(): number | undefined { return this._process?.id; }
- get shouldPersist(): boolean { return this._process ? this._process.shouldPersist : false; }
+ get shouldPersist(): boolean { return !!this.reconnectionOwner || (this._process ? this._process.shouldPersist : false); }
get hasWrittenData(): boolean { return this._hasWrittenData; }
get hasChildProcesses(): boolean { return this._hasChildProcesses; }
+ get reconnectionOwner(): string | undefined { return this._shellLaunchConfig?.attachPersistentProcess?.reconnectionOwner || this._shellLaunchConfig?.reconnectionOwner || undefined; }
constructor(
private readonly _instanceId: number,
@@ -245,7 +246,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
// this is a copy of what the merged environment collection is on the remote side
const env = await this._resolveEnvironment(backend, variableResolver, shellLaunchConfig);
- const shouldPersist = !shellLaunchConfig.isFeatureTerminal && this._configHelper.config.enablePersistentSessions && !shellLaunchConfig.isTransient;
+ const shouldPersist = (!!shellLaunchConfig.reconnectionOwner || !shellLaunchConfig.isFeatureTerminal) && this._configHelper.config.enablePersistentSessions && !shellLaunchConfig.isTransient;
if (shellLaunchConfig.attachPersistentProcess) {
const result = await backend.attachToProcess(shellLaunchConfig.attachPersistentProcess.id);
if (result) {
@@ -461,7 +462,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
windowsEnableConpty: this._configHelper.config.windowsEnableConpty && !isScreenReaderModeEnabled,
environmentVariableCollections: this._extEnvironmentVariableCollection ? serializeEnvironmentVariableCollections(this._extEnvironmentVariableCollection.collections) : undefined
};
- const shouldPersist = this._configHelper.config.enablePersistentSessions && !shellLaunchConfig.isFeatureTerminal;
+ const shouldPersist = this._configHelper.config.enablePersistentSessions && (!!this.reconnectionOwner || !shellLaunchConfig.isFeatureTerminal);
return await backend.createProcess(shellLaunchConfig, initialCwd, cols, rows, this._configHelper.config.unicodeVersion, env, options, shouldPersist);
}
@@ -494,7 +495,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
this._ptyResponsiveListener?.dispose();
this._ptyResponsiveListener = undefined;
if (this._shellLaunchConfig) {
- if (this._shellLaunchConfig.isFeatureTerminal) {
+ if (this._shellLaunchConfig.isFeatureTerminal && !this.reconnectionOwner) {
// Indicate the process is exited (and gone forever) only for feature terminals
// so they can react to the exit, this is particularly important for tasks so
// that it knows that the process is not still active. Note that this is not