Merge pull request #237524 from microsoft/tyriar/234672

Initialize shellIntegration and shellIntegration.cwd of existing terminals on startup
This commit is contained in:
Daniel Imms
2025-01-08 13:19:58 -08:00
committed by GitHub

View File

@@ -33,7 +33,18 @@ export class MainThreadTerminalShellIntegration extends Disposable implements Ma
}
}));
// onDidChangeTerminalShellIntegration
// onDidchangeTerminalShellIntegration initial state
for (const terminal of this._terminalService.instances) {
if (terminal.capabilities.has(TerminalCapability.CommandDetection)) {
this._proxy.$shellIntegrationChange(terminal.instanceId);
const cwdDetection = terminal.capabilities.get(TerminalCapability.CwdDetection);
if (cwdDetection) {
this._proxy.$cwdChange(terminal.instanceId, this._convertCwdToUri(cwdDetection.getCwd()));
}
}
}
// onDidChangeTerminalShellIntegration via command detection
const onDidAddCommandDetection = this._store.add(this._terminalService.createOnInstanceEvent(instance => {
return Event.map(
Event.filter(instance.capabilities.onDidAddCapabilityType, e => {
@@ -43,6 +54,12 @@ export class MainThreadTerminalShellIntegration extends Disposable implements Ma
})).event;
this._store.add(onDidAddCommandDetection(e => this._proxy.$shellIntegrationChange(e.instanceId)));
// onDidChangeTerminalShellIntegration via cwd
const cwdChangeEvent = this._store.add(this._terminalService.createOnInstanceCapabilityEvent(TerminalCapability.CwdDetection, e => e.onDidChangeCwd));
this._store.add(cwdChangeEvent.event(e => {
this._proxy.$cwdChange(e.instance.instanceId, this._convertCwdToUri(e.data));
}));
// onDidStartTerminalShellExecution
const commandDetectionStartEvent = this._store.add(this._terminalService.createOnInstanceCapabilityEvent(TerminalCapability.CommandDetection, e => e.onCommandExecuted));
let currentCommand: ITerminalCommand | undefined;
@@ -75,12 +92,6 @@ export class MainThreadTerminalShellIntegration extends Disposable implements Ma
});
}));
// onDidChangeTerminalShellIntegration via cwd
const cwdChangeEvent = this._store.add(this._terminalService.createOnInstanceCapabilityEvent(TerminalCapability.CwdDetection, e => e.onDidChangeCwd));
this._store.add(cwdChangeEvent.event(e => {
this._proxy.$cwdChange(e.instance.instanceId, this._convertCwdToUri(e.data));
}));
// Clean up after dispose
this._store.add(this._terminalService.onDidDisposeInstance(e => this._proxy.$closeTerminal(e.instanceId)));
}