diff --git a/src/vs/workbench/api/browser/mainThreadTerminalService.ts b/src/vs/workbench/api/browser/mainThreadTerminalService.ts index 68913bca466453b4194ababccfd81320a7b57e49..372db8a6af2e1c0e67d05d09f38a946d7485fa35 100644 --- a/src/vs/workbench/api/browser/mainThreadTerminalService.ts +++ b/src/vs/workbench/api/browser/mainThreadTerminalService.ts @@ -309,15 +309,16 @@ export class MainThreadTerminalService implements MainThreadTerminalServiceShape return true; } - private async _onRequestAvailableShells(callback: IAvailableShellsRequest): Promise { + private async _onRequestAvailableShells(req: IAvailableShellsRequest): Promise { if (this._isPrimaryExtHost()) { - callback(await this._proxy.$getAvailableShells()); + req.callback(await this._proxy.$getAvailableShells()); } } - private _onRequestDefaultShellAndArgs(request: IDefaultShellAndArgsRequest): void { + private async _onRequestDefaultShellAndArgs(req: IDefaultShellAndArgsRequest): Promise { if (this._isPrimaryExtHost()) { - this._proxy.$requestDefaultShellAndArgs(request.useAutomationShell).then(e => request.callback(e.shell, e.args)); + const res = await this._proxy.$getDefaultShellAndArgs(req.useAutomationShell); + req.callback(res.shell, res.args); } } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 74abb50cd7daa24fcebf547f7238f83359e10de5..a18fdb0a0e68915036b002cb4a6eb6ff3032709c 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1288,7 +1288,7 @@ export interface ExtHostTerminalServiceShape { $acceptProcessRequestLatency(id: number): number; $acceptWorkspacePermissionsChanged(isAllowed: boolean): void; $getAvailableShells(): Promise; - $requestDefaultShellAndArgs(useAutomationShell: boolean): Promise; + $getDefaultShellAndArgs(useAutomationShell: boolean): Promise; } export interface ExtHostSCMShape { diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index 1287e9dc8d73c5cf51edf2dfb8c9f26c4279eaf5..16000c4f0c923f8f17d6d241420315aadbe4d260 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -326,7 +326,7 @@ export abstract class BaseExtHostTerminalService implements IExtHostTerminalServ public abstract getDefaultShellArgs(useAutomationShell: boolean, configProvider: ExtHostConfigProvider): string[] | string; public abstract $spawnExtHostProcess(id: number, shellLaunchConfigDto: IShellLaunchConfigDto, activeWorkspaceRootUriComponents: UriComponents, cols: number, rows: number, isWorkspaceShellAllowed: boolean): Promise; public abstract $getAvailableShells(): Promise; - public abstract $requestDefaultShellAndArgs(useAutomationShell: boolean): Promise; + public abstract $getDefaultShellAndArgs(useAutomationShell: boolean): Promise; public abstract $acceptWorkspacePermissionsChanged(isAllowed: boolean): void; public createExtensionTerminal(options: vscode.ExtensionTerminalOptions): vscode.Terminal { @@ -610,7 +610,7 @@ export class WorkerExtHostTerminalService extends BaseExtHostTerminalService { throw new Error('Not implemented'); } - public async $requestDefaultShellAndArgs(useAutomationShell: boolean): Promise { + public async $getDefaultShellAndArgs(useAutomationShell: boolean): Promise { throw new Error('Not implemented'); } diff --git a/src/vs/workbench/api/node/extHostTask.ts b/src/vs/workbench/api/node/extHostTask.ts index 3dfa716f0b45e54f4d14a16c26bbef4916c4e599..5ec632cc283c458e7ae96f7ace348a0b583466e3 100644 --- a/src/vs/workbench/api/node/extHostTask.ts +++ b/src/vs/workbench/api/node/extHostTask.ts @@ -179,7 +179,7 @@ export class ExtHostTask extends ExtHostTaskBase { } public $getDefaultShellAndArgs(): Promise<{ shell: string, args: string[] | string | undefined }> { - return this._terminalService.$requestDefaultShellAndArgs(true); + return this._terminalService.$getDefaultShellAndArgs(true); } public async $jsonTasksSupported(): Promise { diff --git a/src/vs/workbench/api/node/extHostTerminalService.ts b/src/vs/workbench/api/node/extHostTerminalService.ts index 25caa61049ee8a3e3f0e62861b65d6929945da98..ca790979d289ddcc6912643a1009a7525ff78e9d 100644 --- a/src/vs/workbench/api/node/extHostTerminalService.ts +++ b/src/vs/workbench/api/node/extHostTerminalService.ts @@ -204,12 +204,12 @@ export class ExtHostTerminalService extends BaseExtHostTerminalService { return detectAvailableShells(); } - public async $requestDefaultShellAndArgs(useAutomationShell: boolean): Promise { + public async $getDefaultShellAndArgs(useAutomationShell: boolean): Promise { const configProvider = await this._extHostConfiguration.getConfigProvider(); - return Promise.resolve({ + return { shell: this.getDefaultShell(useAutomationShell, configProvider), args: this.getDefaultShellArgs(useAutomationShell, configProvider) - }); + }; } public $acceptWorkspacePermissionsChanged(isAllowed: boolean): void { diff --git a/src/vs/workbench/contrib/terminal/browser/terminalService.ts b/src/vs/workbench/contrib/terminal/browser/terminalService.ts index 78e242801bd79df0e563138ae1a809a52ace09f4..0e6439e7f1c452862cb6f727283c585c7bcb96c5 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalService.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalService.ts @@ -600,7 +600,7 @@ export class TerminalService implements ITerminalService { } private _detectWindowsShells(): Promise { - return new Promise(r => this._onRequestAvailableShells.fire(r)); + return new Promise(r => this._onRequestAvailableShells.fire({ callback: r })); } diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 21522a35bd5913f57451b992f7916a6aa19c19be..4346ae1784cb37f6c39a4eb739d26337cc058365 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -360,7 +360,7 @@ export interface IStartExtensionTerminalRequest { } export interface IAvailableShellsRequest { - (shells: IShellDefinition[]): void; + callback: (shells: IShellDefinition[]) => void; } export interface IDefaultShellAndArgsRequest {