提交 5520af81 编写于 作者: S Sandeep Somavarapu

Fix #34254

上级 f80adf8a
......@@ -464,30 +464,30 @@ export class SimpleConfigurationService implements IConfigurationService {
getConfiguration<T>(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<C>(key: string, options?: IConfigurationOverrides): C {
return this.configuration().getValue(key, options);
public getValue<C>(key: string, options: IConfigurationOverrides = {}): C {
return this.configuration().getValue(key, options, null);
}
public updateValue(key: string, value: any, arg3?: any, arg4?: any): TPromise<void> {
return TPromise.as(null);
}
public inspect<C>(key: string, options?: IConfigurationOverrides): {
public inspect<C>(key: string, options: IConfigurationOverrides = {}): {
default: C,
user: C,
workspace: C,
workspaceFolder: C
value: C,
} {
return this.configuration().lookup<C>(key, options);
return this.configuration().lookup<C>(key, options, null);
}
public keys() {
return this.configuration().keys();
return this.configuration().keys(null);
}
public reloadConfiguration(): TPromise<void> {
......
......@@ -283,8 +283,7 @@ export class Configuration {
protected _workspaceConfiguration: ConfigurationModel = new ConfigurationModel(),
protected folders: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(),
protected _memoryConfiguration: ConfigurationModel = new ConfigurationModel(),
protected _memoryConfigurationByResource: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>(),
protected _workspace?: Workspace) {
protected _memoryConfigurationByResource: StrictResourceMap<ConfigurationModel> = new StrictResourceMap<ConfigurationModel>()) {
this.merge();
}
......@@ -317,13 +316,13 @@ export class Configuration {
this._foldersConsolidatedConfigurations.set(folder, this._workspaceConsolidatedConfiguration.merge(this.folders.get(folder)));
}
getSection<C>(section: string = '', overrides: IConfigurationOverrides = {}): C {
const configModel = this.getConsolidateConfigurationModel(overrides);
getSection<C>(section: string = '', overrides: IConfigurationOverrides, workspace: Workspace): C {
const configModel = this.getConsolidateConfigurationModel(overrides, workspace);
return objects.clone(section ? configModel.getSectionContents<C>(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<any>(consolidateConfigurationModel.contents, key));
}
......@@ -350,7 +349,7 @@ export class Configuration {
}
}
lookup<C>(key: string, overrides: IConfigurationOverrides = {}): {
lookup<C>(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<C>(overrides.overrideIdentifier ? this._defaults.override(overrides.overrideIdentifier).contents : this._defaults.contents, key),
user: getConfigurationValue<C>(overrides.overrideIdentifier ? this._user.override(overrides.overrideIdentifier).contents : this._user.contents, key),
workspace: this._workspace ? getConfigurationValue<C>(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<C>(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<C>(overrides.overrideIdentifier ? folderConfigurationModel.override(overrides.overrideIdentifier).contents : folderConfigurationModel.contents, key) : void 0,
memory: getConfigurationValue<C>(overrides.overrideIdentifier ? memoryConfigurationModel.override(overrides.overrideIdentifier).contents : memoryConfigurationModel.contents, key),
value: getConfigurationValue<C>(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<C>(overrides: IConfigurationOverrides): ConfigurationModel {
let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides);
private getConsolidateConfigurationModel<C>(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<ConfigurationModel>());
return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap<ConfigurationModel>(), workspace);
return new Configuration(defaultConfiguration, userConfiguration, workspaceConfiguration, folders, new ConfigurationModel(), new StrictResourceMap<ConfigurationModel>());
}
private static parseConfigurationModel(model: IConfigurationModel): ConfigurationModel {
......
......@@ -62,12 +62,12 @@ export class ConfigurationService extends Disposable implements IConfigurationSe
getConfiguration<T>(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<void>
......@@ -85,7 +85,7 @@ export class ConfigurationService extends Disposable implements IConfigurationSe
workspaceFolder: T
value: T
} {
return this.configuration.lookup<T>(key);
return this.configuration.lookup<T>(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<void> {
......@@ -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);
}
......
......@@ -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<void> {
......@@ -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: <T>(key: string): ConfigurationInspect<T> => {
key = section ? `${section}.${key}` : key;
const config = this._configuration.lookup<T>(key, { resource });
const config = this._configuration.lookup<T>(key, { resource }, this._extHostWorkspace.workspace);
if (config) {
return {
key,
......
......@@ -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<FolderConfigurationModel>,
memoryConfiguration: ConfigurationModel,
memoryConfigurationByResource: StrictResourceMap<ConfigurationModel>,
workspace: Workspace) {
super(defaults, user, workspaceConfiguration, folders, memoryConfiguration, memoryConfigurationByResource, workspace);
private readonly _workspace: Workspace) {
super(defaults, user, workspaceConfiguration, folders, memoryConfiguration, memoryConfigurationByResource);
}
getSection<C>(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<C>(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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册