diff --git a/src/vs/platform/configuration/common/configuration.ts b/src/vs/platform/configuration/common/configuration.ts index 5685e78cd4172962a0d0343db840123c69483f8f..85e3e00ff4c29d21186fdb415405334422ad3772 100644 --- a/src/vs/platform/configuration/common/configuration.ts +++ b/src/vs/platform/configuration/common/configuration.ts @@ -43,7 +43,7 @@ export interface IConfigurationService { * Returns the defined keys of configurations in the different scopes * the key is defined. */ - keys(): IConfigurationKeys; + keys(overrides?: IConfigurationOverrides): IConfigurationKeys; /** * Similar to #getConfiguration() but ensures that the latest configuration @@ -91,6 +91,7 @@ export interface IConfigurationKeys { default: string[]; user: string[]; workspace: string[]; + folder: string[]; } /** @@ -268,11 +269,13 @@ export class Configuration { }; } - keys(): IConfigurationKeys { + keys(overrides: IConfigurationOverrides = {}): IConfigurationKeys { + const folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource); return { default: this._defaults.keys, user: this._user.keys, - workspace: this._workspaceConfiguration.keys + workspace: this._workspaceConfiguration.keys, + folder: folderConfigurationModel ? folderConfigurationModel.keys : [] }; } diff --git a/src/vs/platform/configuration/node/configurationService.ts b/src/vs/platform/configuration/node/configurationService.ts index 5ce78912ee23f9a00db5666c6646cbe9058bbce4..afe3e8d1cf7c69343cedbb2a992a537e9ebd5cf2 100644 --- a/src/vs/platform/configuration/node/configurationService.ts +++ b/src/vs/platform/configuration/node/configurationService.ts @@ -72,12 +72,12 @@ export class ConfigurationService extends Disposable implements IConfiguratio return this.configuration().getValue(section, options); } - public lookup(key: string, options?: IConfigurationOverrides): IConfigurationValue { - return this.configuration().lookup(key, options); + public lookup(key: string, overrides?: IConfigurationOverrides): IConfigurationValue { + return this.configuration().lookup(key, overrides); } - public keys(): IConfigurationKeys { - return this.configuration().keys(); + public keys(overrides?: IConfigurationOverrides): IConfigurationKeys { + return this.configuration().keys(overrides); } public values(): IConfigurationValues { diff --git a/src/vs/platform/configuration/test/common/testConfigurationService.ts b/src/vs/platform/configuration/test/common/testConfigurationService.ts index 2f7161f56df0f3bc05368e86310f0d0ecf32c7de..a49f1aff2ddbf6149ce39799dc4aac21c5139d0d 100644 --- a/src/vs/platform/configuration/test/common/testConfigurationService.ts +++ b/src/vs/platform/configuration/test/common/testConfigurationService.ts @@ -50,7 +50,8 @@ export class TestConfigurationService extends EventEmitter implements IConfigura return { default: getConfigurationKeys(), user: Object.keys(this.configuration), - workspace: [] + workspace: [], + folder: [] }; } diff --git a/src/vs/platform/telemetry/test/electron-browser/telemetryService.test.ts b/src/vs/platform/telemetry/test/electron-browser/telemetryService.test.ts index 6acd2f7754a2b925fcae1688d0fe1f592f2eb825..494159a5f564e0c88f21d718e4dd179d483eff2e 100644 --- a/src/vs/platform/telemetry/test/electron-browser/telemetryService.test.ts +++ b/src/vs/platform/telemetry/test/electron-browser/telemetryService.test.ts @@ -696,7 +696,7 @@ suite('TelemetryService', () => { folder: null }; }, - keys() { return { default: [], user: [], workspace: [] }; }, + keys() { return { default: [], user: [], workspace: [], folder: [] }; }, values() { return {}; }, onDidUpdateConfiguration: emitter.event }); diff --git a/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts b/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts index c4b3e37919a0a73f814f454f2061bad40418e527..b370e03061b143b55724a5be9ed9ee197c7c40d8 100644 --- a/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts +++ b/src/vs/workbench/parts/terminal/test/electron-browser/terminalConfigHelper.test.ts @@ -19,7 +19,7 @@ class MockConfigurationService implements IConfigurationService { public constructor(private configuration: any = {}) { } public reloadConfiguration(section?: string): TPromise { return TPromise.as(this.getConfiguration()); } public lookup(key: string, overrides?: IConfigurationOverrides): IConfigurationValue { return { value: getConfigurationValue(this.getConfiguration(), key), default: getConfigurationValue(this.getConfiguration(), key), user: getConfigurationValue(this.getConfiguration(), key), workspace: void 0, folder: void 0 }; } - public keys() { return { default: [], user: [], workspace: [] }; } + public keys() { return { default: [], user: [], workspace: [], folder: [] }; } public values() { return {}; } public getConfiguration(): any { return this.configuration; } public getConfigurationData(): any { return null; } diff --git a/src/vs/workbench/services/configuration/node/configuration.ts b/src/vs/workbench/services/configuration/node/configuration.ts index 4c506d62a25c775a5efc359cbe79d1778fcf8bc7..2adfbfb452b94dd7f22eb7508970ee22fe41b1b9 100644 --- a/src/vs/workbench/services/configuration/node/configuration.ts +++ b/src/vs/workbench/services/configuration/node/configuration.ts @@ -256,8 +256,8 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat return this._configuration.lookup(key, overrides); } - public keys(): IConfigurationKeys { - return this._configuration.keys(); + public keys(overrides?: IConfigurationOverrides): IConfigurationKeys { + return this._configuration.keys(overrides); } public values(): IConfigurationValues { diff --git a/src/vs/workbench/services/configurationResolver/test/node/configurationResolverService.test.ts b/src/vs/workbench/services/configurationResolver/test/node/configurationResolverService.test.ts index 4ade2612bd48190c187465cb2e5ee442b20091d1..f0b6787391735c78df3e320ade5a24db165391d4 100644 --- a/src/vs/workbench/services/configurationResolver/test/node/configurationResolverService.test.ts +++ b/src/vs/workbench/services/configurationResolver/test/node/configurationResolverService.test.ts @@ -343,7 +343,7 @@ class MockConfigurationService implements IConfigurationService { public constructor(private configuration: any = {}) { } public reloadConfiguration(section?: string): TPromise { return TPromise.as(this.getConfiguration()); } public lookup(key: string, overrides?: IConfigurationOverrides): IConfigurationValue { return { value: getConfigurationValue(this.getConfiguration(), key), default: getConfigurationValue(this.getConfiguration(), key), user: getConfigurationValue(this.getConfiguration(), key), workspace: void 0, folder: void 0 }; } - public keys() { return { default: [], user: [], workspace: [] }; } + public keys() { return { default: [], user: [], workspace: [], folder: [] }; } public values() { return {}; } public getConfiguration(): any { return this.configuration; } public getConfigurationData(): any { return null; }