Skip to content

Commit c620463

Browse files
committed
protect against missing config
1 parent 13940e6 commit c620463

4 files changed

Lines changed: 18 additions & 22 deletions

File tree

src/vs/workbench/contrib/debug/common/debug.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import { TaskIdentifier } from 'vs/workbench/contrib/tasks/common/tasks';
2626
import { TelemetryService } from 'vs/platform/telemetry/common/telemetryService';
2727
import { ITerminalConfiguration } from 'vs/workbench/contrib/terminal/common/terminal';
2828
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
29+
import { IExternalTerminalSettings } from 'vs/workbench/contrib/externalTerminal/common/externalTerminal';
2930

3031
export const VIEWLET_ID = 'workbench.view.debug';
3132
export const VIEW_CONTAINER: ViewContainer = Registry.as<IViewContainersRegistry>(ViewContainerExtensions.ViewContainersRegistry).registerViewContainer(VIEWLET_ID);
@@ -576,11 +577,7 @@ export interface ITerminalLauncher {
576577
}
577578

578579
export interface ITerminalSettings {
579-
external: {
580-
windowsExec: string,
581-
osxExec: string,
582-
linuxExec: string
583-
};
580+
external: IExternalTerminalSettings;
584581
integrated: ITerminalConfiguration;
585582
}
586583

src/vs/workbench/contrib/debug/node/terminals.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function runInExternalTerminal(args: DebugProtocol.RunInTerminalRequestAr
2424
}
2525
}
2626
if (externalTerminalService) {
27-
externalTerminalService.runInTerminal(args.title!, args.cwd, args.args, args.env || {}, config);
27+
externalTerminalService.runInTerminal(args.title!, args.cwd, args.args, args.env || {}, config.external || {});
2828
}
2929
}
3030

src/vs/workbench/contrib/externalTerminal/common/externalTerminal.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,24 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
7-
import { ITerminalSettings } from 'vs/workbench/contrib/debug/common/debug';
87

98
export const IExternalTerminalService = createDecorator<IExternalTerminalService>('nativeTerminalService');
109

10+
export interface IExternalTerminalSettings {
11+
linuxExec?: string;
12+
osxExec?: string;
13+
windowsExec?: string;
14+
}
15+
1116
export interface IExternalTerminalService {
1217
_serviceBrand: any;
1318
openTerminal(path: string): void;
14-
runInTerminal(title: string, cwd: string, args: string[], env: { [key: string]: string | null; }, configuration: ITerminalSettings): Promise<number | undefined>;
19+
runInTerminal(title: string, cwd: string, args: string[], env: { [key: string]: string | null; }, settings: IExternalTerminalSettings): Promise<number | undefined>;
1520
}
1621

1722
export interface IExternalTerminalConfiguration {
1823
terminal: {
1924
explorerKind: 'integrated' | 'external',
20-
external: {
21-
linuxExec: string,
22-
osxExec: string,
23-
windowsExec: string
24-
}
25+
external: IExternalTerminalSettings;
2526
};
2627
}

src/vs/workbench/contrib/externalTerminal/node/externalTerminalService.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ import * as nls from 'vs/nls';
1010
import * as pfs from 'vs/base/node/pfs';
1111
import * as env from 'vs/base/common/platform';
1212
import { assign } from 'vs/base/common/objects';
13-
import { IExternalTerminalService, IExternalTerminalConfiguration } from 'vs/workbench/contrib/externalTerminal/common/externalTerminal';
13+
import { IExternalTerminalService, IExternalTerminalConfiguration, IExternalTerminalSettings } from 'vs/workbench/contrib/externalTerminal/common/externalTerminal';
1414
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1515
import { getPathFromAmdModule } from 'vs/base/common/amd';
1616
import { IConfigurationRegistry, Extensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry';
1717
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
1818
import { Registry } from 'vs/platform/registry/common/platform';
19-
import { ITerminalSettings } from 'vs/workbench/contrib/debug/common/debug';
2019
import { optional } from 'vs/platform/instantiation/common/instantiation';
2120

2221

@@ -40,9 +39,9 @@ export class WindowsExternalTerminalService implements IExternalTerminalService
4039
}
4140
}
4241

43-
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, configuration: ITerminalSettings): Promise<number | undefined> {
42+
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined> {
4443

45-
const exec = configuration.external.windowsExec || WindowsExternalTerminalService.getDefaultTerminalWindows();
44+
const exec = settings.windowsExec || WindowsExternalTerminalService.getDefaultTerminalWindows();
4645

4746
return new Promise<number | undefined>((resolve, reject) => {
4847

@@ -134,9 +133,9 @@ export class MacExternalTerminalService implements IExternalTerminalService {
134133
}
135134
}
136135

137-
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, configuration: ITerminalSettings): Promise<number | undefined> {
136+
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined> {
138137

139-
const terminalApp = configuration.external.osxExec || DEFAULT_TERMINAL_OSX;
138+
const terminalApp = settings.osxExec || DEFAULT_TERMINAL_OSX;
140139

141140
return new Promise<number | undefined>((resolve, reject) => {
142141

@@ -230,10 +229,9 @@ export class LinuxExternalTerminalService implements IExternalTerminalService {
230229
}
231230
}
232231

233-
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, configuration: ITerminalSettings): Promise<number | undefined> {
232+
public runInTerminal(title: string, dir: string, args: string[], envVars: env.IProcessEnvironment, settings: IExternalTerminalSettings): Promise<number | undefined> {
234233

235-
const terminalConfig = configuration.external;
236-
const execPromise = terminalConfig.linuxExec ? Promise.resolve(terminalConfig.linuxExec) : LinuxExternalTerminalService.getDefaultTerminalLinuxReady();
234+
const execPromise = settings.linuxExec ? Promise.resolve(settings.linuxExec) : LinuxExternalTerminalService.getDefaultTerminalLinuxReady();
237235

238236
return new Promise<number | undefined>((resolve, reject) => {
239237

0 commit comments

Comments
 (0)