From adf73b89f2aaadd0e2eac39034070b059aeaa0a0 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Mon, 24 Jul 2017 19:45:02 +0530 Subject: [PATCH] #29462 IConfigurationService.keys - Provide folder specific keys --- src/vs/platform/configuration/common/configuration.ts | 9 ++++++--- .../platform/configuration/node/configurationService.ts | 8 ++++---- .../test/common/testConfigurationService.ts | 3 ++- .../test/electron-browser/telemetryService.test.ts | 2 +- .../test/electron-browser/terminalConfigHelper.test.ts | 2 +- .../services/configuration/node/configuration.ts | 4 ++-- .../test/node/configurationResolverService.test.ts | 2 +- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/vs/platform/configuration/common/configuration.ts b/src/vs/platform/configuration/common/configuration.ts index 5685e78cd41..85e3e00ff4c 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 5ce78912ee2..afe3e8d1cf7 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 2f7161f56df..a49f1aff2dd 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 6acd2f7754a..494159a5f56 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 c4b3e37919a..b370e03061b 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 4c506d62a25..2adfbfb452b 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 4ade2612bd4..f0b67873917 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; } -- GitLab