Skip to content

Commit 25bc0bf

Browse files
committed
try to fire property change aliases after shell integration injection happens to no avail
1 parent 37dec18 commit 25bc0bf

File tree

6 files changed

+22
-7
lines changed

6 files changed

+22
-7
lines changed

src/vs/platform/terminal/common/terminal.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ export const IPtyService = createDecorator<IPtyService>('ptyService');
217217

218218
export const enum ProcessPropertyType {
219219
Cwd = 'cwd',
220+
Aliases = 'aliases',
220221
InitialCwd = 'initialCwd',
221222
FixedDimensions = 'fixedDimensions',
222223
Title = 'title',
@@ -244,6 +245,7 @@ export interface IProcessPropertyMap {
244245
[ProcessPropertyType.OverrideDimensions]: ITerminalDimensionsOverride | undefined;
245246
[ProcessPropertyType.FailedShellIntegrationActivation]: boolean | undefined;
246247
[ProcessPropertyType.UsedShellIntegrationInjection]: boolean | undefined;
248+
[ProcessPropertyType.Aliases]: string | undefined;
247249
}
248250

249251
export interface IFixedTerminalDimensions {
@@ -612,7 +614,6 @@ export interface IProcessReadyEvent {
612614
pid: number;
613615
cwd: string;
614616
requiresWindowsMode?: boolean;
615-
aliases?: string;
616617
}
617618

618619
/**

src/vs/platform/terminal/node/terminalProcess.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
8989
readonly shouldPersist = false;
9090

9191
private _properties: IProcessPropertyMap = {
92+
aliases: '',
9293
cwd: '',
9394
initialCwd: '',
9495
fixedDimensions: { cols: undefined, rows: undefined },
@@ -231,6 +232,8 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
231232

232233
try {
233234
await this.setupPtyProcess(this.shellLaunchConfig, this._ptyOptions, injection);
235+
this._aliases = this._ptyOptions?.env?.['USER_ALIASES'] || undefined;
236+
this._onDidChangeProperty.fire({ type: ProcessPropertyType.Aliases, value: this._aliases });
234237
return undefined;
235238
} catch (err) {
236239
this._logService.trace('IPty#spawn native exception', err);
@@ -294,7 +297,6 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
294297
this._logService.trace('IPty#spawn', shellLaunchConfig.executable, args, options);
295298
const ptyProcess = (await import('node-pty')).spawn(shellLaunchConfig.executable!, args, options);
296299
this._ptyProcess = ptyProcess;
297-
this._aliases = options.env ? options.env['USER_ALIASES'] : undefined;
298300
this._childProcessMonitor = this._register(new ChildProcessMonitor(ptyProcess.pid, this._logService));
299301
this._childProcessMonitor.onDidChangeHasChildProcesses(value => this._onDidChangeProperty.fire({ type: ProcessPropertyType.HasChildProcesses, value }));
300302
this._processStartupComplete = new Promise<void>(c => {
@@ -396,7 +398,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
396398
}
397399

398400
private _sendProcessId(pid: number) {
399-
this._onProcessReady.fire({ pid, cwd: this._initialCwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376, aliases: this._aliases });
401+
this._onProcessReady.fire({ pid, cwd: this._initialCwd, requiresWindowsMode: isWindows && getWindowsBuildNumber() < 21376 });
400402
}
401403

402404
private _sendProcessTitle(ptyProcess: pty.IPty): void {

src/vs/workbench/contrib/terminal/browser/media/shellIntegration-bash.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,3 +206,4 @@ if [[ -z "${bash_preexec_imported:-}" ]]; then
206206
PROMPT_COMMAND=__vsc_prompt_cmd
207207
fi
208208
fi
209+
export USER_ALIASES=$(alias)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export class RemotePty extends Disposable implements ITerminalChildProcess {
3030
private _inReplay = false;
3131

3232
private _properties: IProcessPropertyMap = {
33+
aliases: '',
3334
cwd: '',
3435
initialCwd: '',
3536
fixedDimensions: { cols: undefined, rows: undefined },

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -826,8 +826,17 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
826826
const aliases: string[][] = [];
827827
const rows = aliasString.split('\n');
828828
for (const row of rows) {
829-
aliases.push(row.split('='));
829+
if (this.shellType === 'zsh') {
830+
aliases.push(row.split('='));
831+
} else if (this.shellType === 'bash') {
832+
// trim off 'alias '
833+
aliases.push(row.substring(6).split('='));
834+
}
835+
}
836+
if (aliases.length) {
837+
this._aliases = aliases;
830838
}
839+
console.log(this._aliases);
831840
return aliases;
832841
}
833842

@@ -1418,9 +1427,6 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
14181427
const processManager = this._scopedInstantiationService.createInstance(TerminalProcessManager, this._instanceId, this._configHelper, this.shellLaunchConfig?.cwd, deserializedCollections);
14191428
this.capabilities.add(processManager.capabilities);
14201429
processManager.onProcessReady(async (e) => {
1421-
if (e.aliases) {
1422-
this._aliases = this._parseAliases(e.aliases);
1423-
}
14241430
this._onProcessIdReady.fire(this);
14251431
this._initialCwd = await this.getInitialCwd();
14261432
// Set the initial name based on the _resolved_ shell launch config, this will also
@@ -1476,6 +1482,9 @@ export class TerminalInstance extends Disposable implements ITerminalInstance {
14761482
case ProcessPropertyType.UsedShellIntegrationInjection:
14771483
this._usedShellIntegrationInjection = true;
14781484
break;
1485+
case ProcessPropertyType.Aliases:
1486+
this._parseAliases(value);
1487+
break;
14791488
}
14801489
});
14811490

src/vs/workbench/contrib/terminal/electron-sandbox/localPty.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { IPtyHostProcessReplayEvent, ISerializedCommandDetectionCapability } fro
1717
export class LocalPty extends Disposable implements ITerminalChildProcess {
1818
private _inReplay = false;
1919
private _properties: IProcessPropertyMap = {
20+
aliases: '',
2021
cwd: '',
2122
initialCwd: '',
2223
fixedDimensions: { cols: undefined, rows: undefined },

0 commit comments

Comments
 (0)