mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-27 10:37:38 +01:00
#28538 Prepare for sending configuration data to extension host
This commit is contained in:
@@ -8,7 +8,7 @@ import { Schemas } from 'vs/base/common/network';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import URI from 'vs/base/common/uri';
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { IConfigurationService, IConfigurationServiceEvent, IConfigurationValue, getConfigurationValue, IConfigurationKeys, IConfigurationValues, ConfigurationData, ConfigurationModel } from 'vs/platform/configuration/common/configuration';
|
||||
import { IConfigurationService, IConfigurationServiceEvent, IConfigurationValue, getConfigurationValue, IConfigurationKeys, IConfigurationValues, Configuration, IConfigurationData, ConfigurationModel } from 'vs/platform/configuration/common/configuration';
|
||||
import { IEditor, IEditorInput, IEditorOptions, IEditorService, IResourceInput, Position } from 'vs/platform/editor/common/editor';
|
||||
import { ICommandService, ICommand, ICommandEvent, ICommandHandler, CommandsRegistry } from 'vs/platform/commands/common/commands';
|
||||
import { AbstractKeybindingService } from 'vs/platform/keybinding/common/abstractKeybindingService';
|
||||
@@ -442,8 +442,8 @@ export class SimpleConfigurationService implements IConfigurationService {
|
||||
return this._config;
|
||||
}
|
||||
|
||||
public getConfigurationData(): ConfigurationData<any> {
|
||||
return new ConfigurationData(new ConfigurationModel(this._config), new ConfigurationModel());
|
||||
public getConfigurationData(): IConfigurationData<any> {
|
||||
return new Configuration(new ConfigurationModel(this._config), new ConfigurationModel()).toData();
|
||||
}
|
||||
|
||||
public reloadConfiguration<T>(section?: string): TPromise<T> {
|
||||
|
||||
@@ -25,7 +25,7 @@ export type IConfigurationValues = { [key: string]: IConfigurationValue<any> };
|
||||
export interface IConfigurationService {
|
||||
_serviceBrand: any;
|
||||
|
||||
getConfigurationData<T>(): ConfigurationData<T>;
|
||||
getConfigurationData<T>(): IConfigurationData<T>;
|
||||
|
||||
/**
|
||||
* Fetches the appropriate section of the configuration JSON file.
|
||||
@@ -204,7 +204,7 @@ export interface IConfigurationData<T> {
|
||||
workspaceUri: string;
|
||||
}
|
||||
|
||||
export class ConfigurationData<T> {
|
||||
export class Configuration<T> {
|
||||
|
||||
private _global: ConfigurationModel<T>;
|
||||
private _workspace: ConfigurationModel<T>;
|
||||
@@ -303,7 +303,7 @@ export class ConfigurationData<T> {
|
||||
return options.overrideIdentifier ? configurationModel.override<T>(options.overrideIdentifier) : configurationModel;
|
||||
}
|
||||
|
||||
public toJSON(): IConfigurationData<any> {
|
||||
public toData(): IConfigurationData<any> {
|
||||
return {
|
||||
defaults: {
|
||||
contents: this._defaults.contents,
|
||||
@@ -318,19 +318,19 @@ export class ConfigurationData<T> {
|
||||
result[folder.toString()] = { contents, overrides };
|
||||
return result;
|
||||
}, Object.create({})),
|
||||
workspaceUri: this.workspaceUri.toString()
|
||||
workspaceUri: this.workspaceUri ? this.workspaceUri.toString() : void 0
|
||||
};
|
||||
}
|
||||
|
||||
public static parse(data: IConfigurationData<any>): ConfigurationData<any> {
|
||||
const defaults = ConfigurationData.parseConfigurationModel(data.defaults);
|
||||
const user = ConfigurationData.parseConfigurationModel(data.user);
|
||||
public static parse(data: IConfigurationData<any>): Configuration<any> {
|
||||
const defaults = Configuration.parseConfigurationModel(data.defaults);
|
||||
const user = Configuration.parseConfigurationModel(data.user);
|
||||
const folders: StrictResourceMap<ConfigurationModel<any>> = Object.keys(data.folders).reduce((result, key) => {
|
||||
result.set(URI.parse(key), ConfigurationData.parseConfigurationModel(data.folders[key]));
|
||||
result.set(URI.parse(key), Configuration.parseConfigurationModel(data.folders[key]));
|
||||
return result;
|
||||
}, new StrictResourceMap<ConfigurationModel<any>>());
|
||||
const workspaceUri = data.workspaceUri ? URI.parse(data.workspaceUri) : void 0;
|
||||
return new ConfigurationData<any>(defaults, user, folders, workspaceUri);
|
||||
return new Configuration<any>(defaults, user, folders, workspaceUri);
|
||||
}
|
||||
|
||||
private static parseConfigurationModel(model: IConfiguraionModel<any>): ConfigurationModel<any> {
|
||||
|
||||
@@ -9,7 +9,7 @@ import { ConfigWatcher } from 'vs/base/node/config';
|
||||
import { Registry } from 'vs/platform/platform';
|
||||
import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/common/configurationRegistry';
|
||||
import { IDisposable, toDisposable, Disposable } from 'vs/base/common/lifecycle';
|
||||
import { ConfigurationSource, IConfigurationService, IConfigurationServiceEvent, IConfigurationValue, IConfigurationKeys, ConfigurationModel, IConfigurationOptions, ConfigurationData, IConfigurationValues } from 'vs/platform/configuration/common/configuration';
|
||||
import { ConfigurationSource, IConfigurationService, IConfigurationServiceEvent, IConfigurationValue, IConfigurationKeys, ConfigurationModel, IConfigurationOptions, Configuration, IConfigurationValues, IConfigurationData } from 'vs/platform/configuration/common/configuration';
|
||||
import { CustomConfigurationModel, DefaultConfigurationModel } from 'vs/platform/configuration/common/model';
|
||||
import Event, { Emitter } from 'vs/base/common/event';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
@@ -18,7 +18,7 @@ export class ConfigurationService<T> extends Disposable implements IConfiguratio
|
||||
|
||||
_serviceBrand: any;
|
||||
|
||||
private _configuration: ConfigurationData<T>;
|
||||
private _configuration: Configuration<T>;
|
||||
private userConfigModelWatcher: ConfigWatcher<ConfigurationModel<T>>;
|
||||
|
||||
private _onDidUpdateConfiguration: Emitter<IConfigurationServiceEvent> = this._register(new Emitter<IConfigurationServiceEvent>());
|
||||
@@ -43,10 +43,14 @@ export class ConfigurationService<T> extends Disposable implements IConfiguratio
|
||||
this._register(Registry.as<IConfigurationRegistry>(Extensions.Configuration).onDidRegisterConfiguration(() => this.onConfigurationChange(ConfigurationSource.Default)));
|
||||
}
|
||||
|
||||
public get configuration(): Configuration<any> {
|
||||
return this._configuration || (this._configuration = this.consolidateConfigurations());
|
||||
}
|
||||
|
||||
private onConfigurationChange(source: ConfigurationSource): void {
|
||||
this.reset(); // reset our caches
|
||||
|
||||
const cache = this.getConfigurationData();
|
||||
const cache = this.configuration;
|
||||
|
||||
this._onDidUpdateConfiguration.fire({
|
||||
source,
|
||||
@@ -66,23 +70,23 @@ export class ConfigurationService<T> extends Disposable implements IConfiguratio
|
||||
public getConfiguration<C>(section?: string): C
|
||||
public getConfiguration<C>(options?: IConfigurationOptions): C
|
||||
public getConfiguration<C>(arg?: any): C {
|
||||
return this.getConfigurationData().getValue<C>(this.toOptions(arg));
|
||||
return this.configuration.getValue<C>(this.toOptions(arg));
|
||||
}
|
||||
|
||||
public lookup<C>(key: string, overrideIdentifier?: string): IConfigurationValue<C> {
|
||||
return this.getConfigurationData().lookup<C>(key, overrideIdentifier);
|
||||
return this.configuration.lookup<C>(key, overrideIdentifier);
|
||||
}
|
||||
|
||||
public keys(): IConfigurationKeys {
|
||||
return this.getConfigurationData().keys();
|
||||
return this.configuration.keys();
|
||||
}
|
||||
|
||||
public values<V>(): IConfigurationValues {
|
||||
return this._configuration.values();
|
||||
}
|
||||
|
||||
public getConfigurationData(): ConfigurationData<T> {
|
||||
return this._configuration || (this._configuration = this.consolidateConfigurations());
|
||||
public getConfigurationData(): IConfigurationData<T> {
|
||||
return this.configuration.toData();
|
||||
}
|
||||
|
||||
private reset(): void {
|
||||
@@ -99,9 +103,9 @@ export class ConfigurationService<T> extends Disposable implements IConfiguratio
|
||||
return {};
|
||||
}
|
||||
|
||||
private consolidateConfigurations(): ConfigurationData<T> {
|
||||
private consolidateConfigurations(): Configuration<T> {
|
||||
const defaults = new DefaultConfigurationModel<T>();
|
||||
const user = this.userConfigModelWatcher.getConfig();
|
||||
return new ConfigurationData(defaults, user);
|
||||
return new Configuration(defaults, user);
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
import { TPromise } from 'vs/base/common/winjs.base';
|
||||
import { EventEmitter } from 'vs/base/common/eventEmitter';
|
||||
import { getConfigurationKeys } from 'vs/platform/configuration/common/model';
|
||||
import { IConfigurationService, getConfigurationValue, IConfigurationValue, IConfigurationKeys, IConfigurationValues, ConfigurationData, ConfigurationModel } from 'vs/platform/configuration/common/configuration';
|
||||
import { IConfigurationService, getConfigurationValue, IConfigurationValue, IConfigurationKeys, IConfigurationValues, IConfigurationData, Configuration, ConfigurationModel } from 'vs/platform/configuration/common/configuration';
|
||||
|
||||
export class TestConfigurationService extends EventEmitter implements IConfigurationService {
|
||||
public _serviceBrand: any;
|
||||
@@ -23,8 +23,8 @@ export class TestConfigurationService extends EventEmitter implements IConfigura
|
||||
return this.configuration;
|
||||
}
|
||||
|
||||
public getConfigurationData(): ConfigurationData<any> {
|
||||
return new ConfigurationData(new ConfigurationModel(), new ConfigurationModel(this.configuration));
|
||||
public getConfigurationData(): IConfigurationData<any> {
|
||||
return new Configuration(new ConfigurationModel(), new ConfigurationModel(this.configuration)).toData();
|
||||
}
|
||||
|
||||
public setUserConfiguration(key: any, value: any): Thenable<void> {
|
||||
|
||||
@@ -24,7 +24,7 @@ import { isLinux } from 'vs/base/common/platform';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { CustomConfigurationModel } from 'vs/platform/configuration/common/model';
|
||||
import { ScopedConfigurationModel, FolderConfigurationModel, FolderSettingsModel } from 'vs/workbench/services/configuration/common/configurationModels';
|
||||
import { IConfigurationServiceEvent, ConfigurationSource, IConfigurationKeys, IConfigurationValue, ConfigurationModel, IConfigurationOptions, ConfigurationData, IConfigurationValues } from 'vs/platform/configuration/common/configuration';
|
||||
import { IConfigurationServiceEvent, ConfigurationSource, IConfigurationKeys, IConfigurationValue, ConfigurationModel, IConfigurationOptions, Configuration as BaseConfiguration, IConfigurationValues, IConfigurationData } from 'vs/platform/configuration/common/configuration';
|
||||
import { IWorkspaceConfigurationService, WORKSPACE_CONFIG_FOLDER_DEFAULT_NAME, WORKSPACE_STANDALONE_CONFIGURATIONS, WORKSPACE_CONFIG_DEFAULT_PATH } from 'vs/workbench/services/configuration/common/configuration';
|
||||
import { ConfigurationService as GlobalConfigurationService } from 'vs/platform/configuration/node/configurationService';
|
||||
import { createHash } from "crypto";
|
||||
@@ -193,7 +193,11 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp
|
||||
return this.workspace ? this.legacyWorkspace.toResource(workspaceRelativePath) : null;
|
||||
}
|
||||
|
||||
public getConfigurationData<T>(): ConfigurationData<T> {
|
||||
public getConfigurationData<T>(): IConfigurationData<T> {
|
||||
return this._configuration.toData();
|
||||
}
|
||||
|
||||
public get configuration(): BaseConfiguration<any> {
|
||||
return this._configuration;
|
||||
}
|
||||
|
||||
@@ -275,7 +279,7 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp
|
||||
|
||||
private initCaches(): void {
|
||||
this.cachedFolderConfigs = new StrictResourceMap<FolderConfiguration<any>>();
|
||||
this._configuration = new Configuration(this.baseConfigurationService.getConfigurationData(), new StrictResourceMap<FolderConfigurationModel<any>>(), this.workspaceUri);
|
||||
this._configuration = new Configuration(<any>this.baseConfigurationService.configuration, new StrictResourceMap<FolderConfigurationModel<any>>(), this.workspaceUri);
|
||||
this.initCachesForFolders(this.workspace ? this.workspace.roots : []);
|
||||
}
|
||||
|
||||
@@ -298,7 +302,7 @@ export class WorkspaceConfigurationService extends Disposable implements IWorksp
|
||||
}
|
||||
}
|
||||
|
||||
if (this._configuration.updateBaseConfiguration(this.baseConfigurationService.getConfigurationData())) {
|
||||
if (this._configuration.updateBaseConfiguration(<any>this.baseConfigurationService.configuration)) {
|
||||
this.trigger(event.source, event.sourceConfig);
|
||||
}
|
||||
}
|
||||
@@ -517,13 +521,13 @@ function resolveStat(resource: URI): TPromise<IStat> {
|
||||
});
|
||||
}
|
||||
|
||||
class Configuration<T> extends ConfigurationData<T> {
|
||||
class Configuration<T> extends BaseConfiguration<T> {
|
||||
|
||||
constructor(private _baseConfiguration: ConfigurationData<T>, protected folders: StrictResourceMap<FolderConfigurationModel<T>>, workspaceUri: URI) {
|
||||
constructor(private _baseConfiguration: Configuration<T>, protected folders: StrictResourceMap<FolderConfigurationModel<T>>, workspaceUri: URI) {
|
||||
super(_baseConfiguration.defaults, _baseConfiguration.user, folders, workspaceUri);
|
||||
}
|
||||
|
||||
updateBaseConfiguration(baseConfiguration: ConfigurationData<T>): boolean {
|
||||
updateBaseConfiguration(baseConfiguration: Configuration<T>): boolean {
|
||||
const current = new Configuration(this._baseConfiguration, this.folders, this.workspaceUri);
|
||||
|
||||
this._defaults = baseConfiguration.defaults;
|
||||
|
||||
Reference in New Issue
Block a user