diff --git a/src/vs/editor/standalone/browser/simpleServices.ts b/src/vs/editor/standalone/browser/simpleServices.ts index 5bfb927109a9994fa20da138aa43cffdcea07b5d..e1d06c1220c314061958aa474d06c896932d6fcc 100644 --- a/src/vs/editor/standalone/browser/simpleServices.ts +++ b/src/vs/editor/standalone/browser/simpleServices.ts @@ -464,30 +464,30 @@ export class SimpleConfigurationService implements IConfigurationService { getConfiguration(section: string, overrides: IConfigurationOverrides): T getConfiguration(arg1?: any, arg2?: any): any { const section = typeof arg1 === 'string' ? arg1 : void 0; - const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : void 0; - return this.configuration().getSection(section, overrides); + const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {}; + return this.configuration().getSection(section, overrides, null); } - public getValue(key: string, options?: IConfigurationOverrides): C { - return this.configuration().getValue(key, options); + public getValue(key: string, options: IConfigurationOverrides = {}): C { + return this.configuration().getValue(key, options, null); } public updateValue(key: string, value: any, arg3?: any, arg4?: any): TPromise { return TPromise.as(null); } - public inspect(key: string, options?: IConfigurationOverrides): { + public inspect(key: string, options: IConfigurationOverrides = {}): { default: C, user: C, workspace: C, workspaceFolder: C value: C, } { - return this.configuration().lookup(key, options); + return this.configuration().lookup(key, options, null); } public keys() { - return this.configuration().keys(); + return this.configuration().keys(null); } public reloadConfiguration(): TPromise { diff --git a/src/vs/platform/configuration/common/configurationModels.ts b/src/vs/platform/configuration/common/configurationModels.ts index 98a195affaaaacd61a1b56ea92246570b736c6ab..dcd1c8eb569d165d8c8e017fbf1a3e31b06dcd46 100644 --- a/src/vs/platform/configuration/common/configurationModels.ts +++ b/src/vs/platform/configuration/common/configurationModels.ts @@ -283,8 +283,7 @@ export class Configuration { protected _workspaceConfiguration: ConfigurationModel = new ConfigurationModel(), protected folders: StrictResourceMap = new StrictResourceMap(), protected _memoryConfiguration: ConfigurationModel = new ConfigurationModel(), - protected _memoryConfigurationByResource: StrictResourceMap = new StrictResourceMap(), - protected _workspace?: Workspace) { + protected _memoryConfigurationByResource: StrictResourceMap = new StrictResourceMap()) { this.merge(); } @@ -317,13 +316,13 @@ export class Configuration { this._foldersConsolidatedConfigurations.set(folder, this._workspaceConsolidatedConfiguration.merge(this.folders.get(folder))); } - getSection(section: string = '', overrides: IConfigurationOverrides = {}): C { - const configModel = this.getConsolidateConfigurationModel(overrides); + getSection(section: string = '', overrides: IConfigurationOverrides, workspace: Workspace): C { + const configModel = this.getConsolidateConfigurationModel(overrides, workspace); return objects.clone(section ? configModel.getSectionContents(section) : configModel.contents); } - getValue(key: string, overrides: IConfigurationOverrides = {}): any { - const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides); + getValue(key: string, overrides: IConfigurationOverrides, workspace: Workspace): any { + const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace); return objects.clone(getConfigurationValue(consolidateConfigurationModel.contents, key)); } @@ -350,7 +349,7 @@ export class Configuration { } } - lookup(key: string, overrides: IConfigurationOverrides = {}): { + lookup(key: string, overrides: IConfigurationOverrides, workspace: Workspace): { default: C, user: C, workspace: C, @@ -358,26 +357,26 @@ export class Configuration { memory?: C value: C, } { - const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides); - const folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource); + const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace); + const folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace); const memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration; return objects.clone({ default: getConfigurationValue(overrides.overrideIdentifier ? this._defaults.override(overrides.overrideIdentifier).contents : this._defaults.contents, key), user: getConfigurationValue(overrides.overrideIdentifier ? this._user.override(overrides.overrideIdentifier).contents : this._user.contents, key), - workspace: this._workspace ? getConfigurationValue(overrides.overrideIdentifier ? this._workspaceConfiguration.override(overrides.overrideIdentifier).contents : this._workspaceConfiguration.contents, key) : void 0, //Check on workspace exists or not because _workspaceConfiguration is never null + workspace: workspace ? getConfigurationValue(overrides.overrideIdentifier ? this._workspaceConfiguration.override(overrides.overrideIdentifier).contents : this._workspaceConfiguration.contents, key) : void 0, //Check on workspace exists or not because _workspaceConfiguration is never null workspaceFolder: folderConfigurationModel ? getConfigurationValue(overrides.overrideIdentifier ? folderConfigurationModel.override(overrides.overrideIdentifier).contents : folderConfigurationModel.contents, key) : void 0, memory: getConfigurationValue(overrides.overrideIdentifier ? memoryConfigurationModel.override(overrides.overrideIdentifier).contents : memoryConfigurationModel.contents, key), value: getConfigurationValue(consolidateConfigurationModel.contents, key) }); } - keys(): { + keys(workspace: Workspace): { default: string[]; user: string[]; workspace: string[]; workspaceFolder: string[]; } { - const folderConfigurationModel = this.getFolderConfigurationModelForResource(); + const folderConfigurationModel = this.getFolderConfigurationModelForResource(null, workspace); return objects.clone({ default: this._defaults.keys, user: this._user.keys, @@ -386,13 +385,13 @@ export class Configuration { }); } - private getConsolidateConfigurationModel(overrides: IConfigurationOverrides): ConfigurationModel { - let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides); + private getConsolidateConfigurationModel(overrides: IConfigurationOverrides, workspace: Workspace): ConfigurationModel { + let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace); return overrides.overrideIdentifier ? configurationModel.override(overrides.overrideIdentifier) : configurationModel; } - private getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides): ConfigurationModel { - if (!this._workspace) { + private getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides, workspace: Workspace): ConfigurationModel { + if (!workspace) { return this._globalConfiguration; } @@ -401,7 +400,7 @@ export class Configuration { } let consolidateConfiguration = this._workspaceConsolidatedConfiguration; - const root = this._workspace.getFolder(resource); + const root = workspace.getFolder(resource); if (root) { consolidateConfiguration = this._foldersConsolidatedConfigurations.get(root.uri) || this._workspaceConsolidatedConfiguration; } @@ -414,12 +413,12 @@ export class Configuration { return consolidateConfiguration; } - private getFolderConfigurationModelForResource(resource?: URI): ConfigurationModel { - if (!this._workspace || !resource) { + private getFolderConfigurationModelForResource(resource: URI, workspace: Workspace): ConfigurationModel { + if (!workspace || !resource) { return null; } - const root = this._workspace.getFolder(resource); + const root = workspace.getFolder(resource); return root ? this.folders.get(root.uri) : null; } @@ -448,7 +447,7 @@ export class Configuration { }; } - public static parse(data: IConfigurationData, workspace: Workspace): Configuration { + public static parse(data: IConfigurationData): Configuration { const defaultConfiguration = Configuration.parseConfigurationModel(data.defaults); const userConfiguration = Configuration.parseConfigurationModel(data.user); const workspaceConfiguration = Configuration.parseConfigurationModel(data.workspace); @@ -456,7 +455,7 @@ export class Configuration { result.set(URI.parse(key), Configuration.parseConfigurationModel(data.folders[key])); return result; }, new StrictResourceMap()); - return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap(), workspace); + return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap()); } private static parseConfigurationModel(model: IConfigurationModel): ConfigurationModel { diff --git a/src/vs/platform/configuration/node/configurationService.ts b/src/vs/platform/configuration/node/configurationService.ts index 9fb8cfc6fa6041dbc913a8312542270ab3ec5eca..43ad33bce803149a95e5f9865fb4183a1f650ca9 100644 --- a/src/vs/platform/configuration/node/configurationService.ts +++ b/src/vs/platform/configuration/node/configurationService.ts @@ -62,12 +62,12 @@ export class ConfigurationService extends Disposable implements IConfigurationSe getConfiguration(section: string, overrides: IConfigurationOverrides): T getConfiguration(arg1?: any, arg2?: any): any { const section = typeof arg1 === 'string' ? arg1 : void 0; - const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : void 0; - return this.configuration.getSection(section, overrides); + const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {}; + return this.configuration.getSection(section, overrides, null); } - getValue(key: string, overrides: IConfigurationOverrides): any { - return this.configuration.getValue(key, overrides); + getValue(key: string, overrides: IConfigurationOverrides = {}): any { + return this.configuration.getValue(key, overrides, null); } updateValue(key: string, value: any): TPromise @@ -85,7 +85,7 @@ export class ConfigurationService extends Disposable implements IConfigurationSe workspaceFolder: T value: T } { - return this.configuration.lookup(key); + return this.configuration.lookup(key, {}, null); } keys(): { @@ -94,7 +94,7 @@ export class ConfigurationService extends Disposable implements IConfigurationSe workspace: string[]; workspaceFolder: string[]; } { - return this.configuration.keys(); + return this.configuration.keys(null); } reloadConfiguration(folder?: IWorkspaceFolder): TPromise { @@ -109,7 +109,7 @@ export class ConfigurationService extends Disposable implements IConfigurationSe if (changedKeys.length) { const oldConfiguartion = this._configuration; this.reset(); - changedKeys = changedKeys.filter(key => !equals(oldConfiguartion.getValue(key), this._configuration.getValue(key))); + changedKeys = changedKeys.filter(key => !equals(oldConfiguartion.getValue(key, {}, null), this._configuration.getValue(key, {}, null))); if (changedKeys.length) { this.trigger(changedKeys, ConfigurationTarget.USER); } diff --git a/src/vs/workbench/api/node/extHostConfiguration.ts b/src/vs/workbench/api/node/extHostConfiguration.ts index fde9013ed78ca12ada1ffb65b1d946a63239d770..f7b42446d55702ad4cd53aa28e9e851a8c90910a 100644 --- a/src/vs/workbench/api/node/extHostConfiguration.ts +++ b/src/vs/workbench/api/node/extHostConfiguration.ts @@ -45,7 +45,7 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { constructor(proxy: MainThreadConfigurationShape, extHostWorkspace: ExtHostWorkspace, data: IConfigurationData) { this._proxy = proxy; this._extHostWorkspace = extHostWorkspace; - this._configuration = Configuration.parse(data, extHostWorkspace.workspace); + this._configuration = Configuration.parse(data); } get onDidChangeConfiguration(): Event { @@ -53,14 +53,14 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { } $acceptConfigurationChanged(data: IConfigurationData, eventData: IWorkspaceConfigurationChangeEventData) { - this._configuration = Configuration.parse(data, this._extHostWorkspace.workspace); + this._configuration = Configuration.parse(data); this._onDidChangeConfiguration.fire(undefined); } getConfiguration(section?: string, resource?: URI): vscode.WorkspaceConfiguration { const config = section - ? lookUp(this._configuration.getSection(null, { resource }), section) - : this._configuration.getSection(null, { resource }); + ? lookUp(this._configuration.getSection(null, { resource }, this._extHostWorkspace.workspace), section) + : this._configuration.getSection(null, { resource }, this._extHostWorkspace.workspace); function parseConfigurationTarget(arg: boolean | ExtHostConfigurationTarget): ConfigurationTarget { if (arg === void 0 || arg === null) { @@ -99,7 +99,7 @@ export class ExtHostConfiguration implements ExtHostConfigurationShape { }, inspect: (key: string): ConfigurationInspect => { key = section ? `${section}.${key}` : key; - const config = this._configuration.lookup(key, { resource }); + const config = this._configuration.lookup(key, { resource }, this._extHostWorkspace.workspace); if (config) { return { key, diff --git a/src/vs/workbench/services/configuration/common/configurationModels.ts b/src/vs/workbench/services/configuration/common/configurationModels.ts index 3e72fc9fe57bb277edaccb1e19dd0aed23c016e5..033e039225b5d58a793603ed439a1322118cbf48 100644 --- a/src/vs/workbench/services/configuration/common/configurationModels.ts +++ b/src/vs/workbench/services/configuration/common/configurationModels.ts @@ -5,7 +5,7 @@ 'use strict'; import { clone, equals } from 'vs/base/common/objects'; -import { compare, toValuesTree, IConfigurationChangeEvent, ConfigurationTarget, IConfigurationModel } from 'vs/platform/configuration/common/configuration'; +import { compare, toValuesTree, IConfigurationChangeEvent, ConfigurationTarget, IConfigurationModel, IConfigurationOverrides } from 'vs/platform/configuration/common/configuration'; import { ConfigurationModel, Configuration as BaseConfiguration, CustomConfigurationModel, ConfigurationChangeEvent } from 'vs/platform/configuration/common/configurationModels'; import { Registry } from 'vs/platform/registry/common/platform'; import { IConfigurationRegistry, IConfigurationPropertySchema, Extensions, ConfigurationScope } from 'vs/platform/configuration/common/configurationRegistry'; @@ -193,8 +193,36 @@ export class Configuration extends BaseConfiguration { protected folders: StrictResourceMap, memoryConfiguration: ConfigurationModel, memoryConfigurationByResource: StrictResourceMap, - workspace: Workspace) { - super(defaults, user, workspaceConfiguration, folders, memoryConfiguration, memoryConfigurationByResource, workspace); + private readonly _workspace: Workspace) { + super(defaults, user, workspaceConfiguration, folders, memoryConfiguration, memoryConfigurationByResource); + } + + getSection(section: string = '', overrides: IConfigurationOverrides = {}): C { + return super.getSection(section, overrides, this._workspace); + } + + getValue(key: string, overrides: IConfigurationOverrides = {}): any { + return super.getValue(key, overrides, this._workspace); + } + + lookup(key: string, overrides: IConfigurationOverrides = {}): { + default: C, + user: C, + workspace: C, + workspaceFolder: C + memory?: C + value: C, + } { + return super.lookup(key, overrides, this._workspace); + } + + keys(): { + default: string[]; + user: string[]; + workspace: string[]; + workspaceFolder: string[]; + } { + return super.keys(this._workspace); } updateDefaultConfiguration(defaults: ConfigurationModel): void {