Skip to content

Commit aca4a0c

Browse files
committed
Evaluate term proc remoteAuthority in ctor
Fixes microsoft#141599
1 parent f1fb100 commit aca4a0c

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

src/vs/workbench/contrib/terminal/browser/terminalInstance.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1383,7 +1383,7 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
13831383
}
13841384

13851385
protected _createProcessManager(): TerminalProcessManager {
1386-
const processManager = this._instantiationService.createInstance(TerminalProcessManager, this._instanceId, this._configHelper);
1386+
const processManager = this._instantiationService.createInstance(TerminalProcessManager, this._instanceId, this._configHelper, this.shellLaunchConfig?.cwd);
13871387
this.capabilities.add(processManager.capabilities);
13881388
processManager.onProcessReady(async (e) => {
13891389
this._onProcessIdReady.fire(this);

src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { ITerminalInstanceService } from 'vs/workbench/contrib/terminal/browser/
3131
import { TerminalCapabilityStore } from 'vs/workbench/contrib/terminal/common/capabilities/terminalCapabilityStore';
3232
import { NaiveCwdDetectionCapability } from 'vs/workbench/contrib/terminal/common/capabilities/naiveCwdDetectionCapability';
3333
import { TerminalCapability } from 'vs/workbench/contrib/terminal/common/capabilities/capabilities';
34+
import { URI } from 'vs/base/common/uri';
3435

3536
/** The amount of time to consider terminal errors to be related to the launch */
3637
const LAUNCHING_DURATION = 500;
@@ -57,7 +58,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
5758
processState: ProcessState = ProcessState.Uninitialized;
5859
ptyProcessReady: Promise<void>;
5960
shellProcessId: number | undefined;
60-
remoteAuthority: string | undefined;
61+
readonly remoteAuthority: string | undefined;
6162
os: OperatingSystem | undefined;
6263
userHome: string | undefined;
6364
isDisconnected: boolean = false;
@@ -114,6 +115,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
114115
constructor(
115116
private readonly _instanceId: number,
116117
private readonly _configHelper: ITerminalConfigHelper,
118+
cwd: string | URI | undefined,
117119
@IHistoryService private readonly _historyService: IHistoryService,
118120
@IInstantiationService private readonly _instantiationService: IInstantiationService,
119121
@ILogService private readonly _logService: ILogService,
@@ -146,6 +148,12 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
146148
this._onProcessData.fire(typeof ev !== 'string' ? ev : { data: beforeProcessDataEvent.data, trackCommit: false });
147149
}
148150
});
151+
152+
if (cwd && typeof cwd === 'object') {
153+
this.remoteAuthority = getRemoteAuthority(cwd);
154+
} else {
155+
this.remoteAuthority = this._workbenchEnvironmentService.remoteAuthority;
156+
}
149157
}
150158

151159
override dispose(immediate: boolean = false): void {
@@ -194,11 +202,6 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
194202
this._processType = ProcessType.PsuedoTerminal;
195203
newProcess = shellLaunchConfig.customPtyImplementation(this._instanceId, cols, rows);
196204
} else {
197-
if (shellLaunchConfig.cwd && typeof shellLaunchConfig.cwd === 'object') {
198-
this.remoteAuthority = getRemoteAuthority(shellLaunchConfig.cwd);
199-
} else {
200-
this.remoteAuthority = this._workbenchEnvironmentService.remoteAuthority;
201-
}
202205
const backend = this._terminalInstanceService.getBackend(this.remoteAuthority);
203206
if (!backend) {
204207
throw new Error(`No terminal backend registered for remote authority '${this.remoteAuthority}'`);

src/vs/workbench/contrib/terminal/test/browser/terminalProcessManager.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ suite('Workbench - TerminalProcessManager', () => {
104104
instantiationService.stub(ITerminalInstanceService, new TestTerminalInstanceService());
105105

106106
const configHelper = instantiationService.createInstance(TerminalConfigHelper);
107-
manager = instantiationService.createInstance(TerminalProcessManager, 1, configHelper);
107+
manager = instantiationService.createInstance(TerminalProcessManager, 1, configHelper, undefined);
108108
});
109109

110110
teardown(() => {

0 commit comments

Comments
 (0)