diff --git a/extensions/terminal-suggest/src/terminalSuggestMain.ts b/extensions/terminal-suggest/src/terminalSuggestMain.ts index cc2caa5e9aa..1fa2c0035da 100644 --- a/extensions/terminal-suggest/src/terminalSuggestMain.ts +++ b/extensions/terminal-suggest/src/terminalSuggestMain.ts @@ -18,7 +18,7 @@ export const availableSpecs = [codeCompletionSpec, codeInsidersCompletionSpec, c function getBuiltinCommands(shell: string): string[] | undefined { try { - const shellType = path.basename(shell); + const shellType = path.basename(shell, path.extname(shell)); const cachedCommands = cachedBuiltinCommands?.get(shellType); if (cachedCommands) { return cachedCommands; @@ -76,7 +76,7 @@ export async function activate(context: vscode.ExtensionContext) { } // TODO: Leverage shellType when available https://github.com/microsoft/vscode/issues/230165 - const shellPath = 'shellPath' in terminal.creationOptions ? terminal.creationOptions.shellPath : vscode.env.shell; + const shellPath = ('shellPath' in terminal.creationOptions ? terminal.creationOptions.shellPath : undefined) ?? vscode.env.shell; if (!shellPath) { return; } diff --git a/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalCompletionService.ts b/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalCompletionService.ts index 4143699e399..19ac7672bd9 100644 --- a/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalCompletionService.ts +++ b/src/vs/workbench/contrib/terminalContrib/suggest/browser/terminalCompletionService.ts @@ -162,15 +162,8 @@ export class TerminalCompletionService extends Disposable implements ITerminalCo if (!completions) { return undefined; } - const devModeEnabled = this._configurationService.getValue(TerminalSettingId.DevMode); const completionItems = Array.isArray(completions) ? completions : completions.items ?? []; - - const itemsWithModifiedLabels = completionItems.map(completion => { - if (devModeEnabled && !completion.detail?.includes(provider.id)) { - completion.detail = `(${provider.id}) ${completion.detail ?? ''}`; - } - return completion; - }); + const itemsWithModifiedLabels = this._addDevModeLabel(completionItems, provider.id); if (Array.isArray(completions)) { return itemsWithModifiedLabels; @@ -178,7 +171,7 @@ export class TerminalCompletionService extends Disposable implements ITerminalCo if (completions.resourceRequestConfig) { const resourceCompletions = await this.resolveResources(completions.resourceRequestConfig, promptValue, cursorPosition); if (resourceCompletions) { - itemsWithModifiedLabels.push(...resourceCompletions); + itemsWithModifiedLabels.push(...this._addDevModeLabel(resourceCompletions, provider.id)); } return itemsWithModifiedLabels; } @@ -189,6 +182,18 @@ export class TerminalCompletionService extends Disposable implements ITerminalCo return results.filter(result => !!result).flat(); } + private _addDevModeLabel(completions: ITerminalCompletion[], providerId: string): ITerminalCompletion[] { + const devModeEnabled = this._configurationService.getValue(TerminalSettingId.DevMode); + return completions.map(completion => { + // TODO: This providerId check shouldn't be necessary, instead we should ensure this + // function is never called twice + if (devModeEnabled && !completion.detail?.includes(providerId)) { + completion.detail = `(${providerId}) ${completion.detail ?? ''}`; + } + return completion; + }); + } + async resolveResources(resourceRequestConfig: TerminalResourceRequestConfig, promptValue: string, cursorPosition: number): Promise { const cwd = URI.revive(resourceRequestConfig.cwd); const foldersRequested = resourceRequestConfig.foldersRequested ?? false;