提交 7d9464d3 编写于 作者: S Sandeep Somavarapu

#49708 Fix schema

上级 5744e818
...@@ -34,6 +34,12 @@ export interface IConfigurationRegistry { ...@@ -34,6 +34,12 @@ export interface IConfigurationRegistry {
*/ */
notifyConfigurationSchemaUpdated(configuration: IConfigurationNode): void; notifyConfigurationSchemaUpdated(configuration: IConfigurationNode): void;
/**
* Event that fires whenver a configuration has been
* registered.
*/
onDidSchemaChange: Event<void>;
/** /**
* Event that fires whenver a configuration has been * Event that fires whenver a configuration has been
* registered. * registered.
...@@ -110,6 +116,9 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -110,6 +116,9 @@ class ConfigurationRegistry implements IConfigurationRegistry {
private overrideIdentifiers: string[] = []; private overrideIdentifiers: string[] = [];
private overridePropertyPattern: string; private overridePropertyPattern: string;
private readonly _onDidSchemaChange: Emitter<void> = new Emitter<void>();
readonly onDidSchemaChange: Event<void> = this._onDidSchemaChange.event;
private readonly _onDidRegisterConfiguration: Emitter<string[]> = new Emitter<string[]>(); private readonly _onDidRegisterConfiguration: Emitter<string[]> = new Emitter<string[]>();
readonly onDidRegisterConfiguration: Event<string[]> = this._onDidRegisterConfiguration.event; readonly onDidRegisterConfiguration: Event<string[]> = this._onDidRegisterConfiguration.event;
...@@ -176,7 +185,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -176,7 +185,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
} }
private validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, scope: ConfigurationScope = ConfigurationScope.WINDOW, overridable: boolean = false): string[] { private validateAndRegisterProperties(configuration: IConfigurationNode, validate: boolean = true, scope: ConfigurationScope = ConfigurationScope.WINDOW, overridable: boolean = false): string[] {
scope = configuration.scope !== void 0 && configuration.scope !== null ? configuration.scope : scope; scope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;
overridable = configuration.overridable || overridable; overridable = configuration.overridable || overridable;
let propertyKeys = []; let propertyKeys = [];
let properties = configuration.properties; let properties = configuration.properties;
...@@ -198,8 +207,11 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -198,8 +207,11 @@ class ConfigurationRegistry implements IConfigurationRegistry {
if (overridable) { if (overridable) {
property.overridable = true; property.overridable = true;
} }
if (property.scope === void 0) {
property.scope = scope; if (OVERRIDE_PROPERTY_PATTERN.test(key)) {
property.scope = void 0; // No scope for overridable properties `[${identifier}]`
} else {
property.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;
} }
// Add to properties maps // Add to properties maps
...@@ -240,7 +252,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -240,7 +252,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
function register(configuration: IConfigurationNode) { function register(configuration: IConfigurationNode) {
let properties = configuration.properties; let properties = configuration.properties;
if (properties) { if (properties) {
for (let key in properties) { for (const key in properties) {
allSettings.properties[key] = properties[key]; allSettings.properties[key] = properties[key];
switch (properties[key].scope) { switch (properties[key].scope) {
case ConfigurationScope.APPLICATION: case ConfigurationScope.APPLICATION:
...@@ -261,6 +273,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -261,6 +273,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
} }
} }
register(configuration); register(configuration);
this._onDidSchemaChange.fire();
} }
private updateSchemaForOverrideSettingsConfiguration(configuration: IConfigurationNode): void { private updateSchemaForOverrideSettingsConfiguration(configuration: IConfigurationNode): void {
...@@ -292,6 +305,8 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -292,6 +305,8 @@ class ConfigurationRegistry implements IConfigurationRegistry {
applicationSettings.patternProperties[this.overridePropertyPattern] = patternProperties; applicationSettings.patternProperties[this.overridePropertyPattern] = patternProperties;
windowSettings.patternProperties[this.overridePropertyPattern] = patternProperties; windowSettings.patternProperties[this.overridePropertyPattern] = patternProperties;
resourceSettings.patternProperties[this.overridePropertyPattern] = patternProperties; resourceSettings.patternProperties[this.overridePropertyPattern] = patternProperties;
this._onDidSchemaChange.fire();
} }
private update(configuration: IConfigurationNode): void { private update(configuration: IConfigurationNode): void {
......
...@@ -80,7 +80,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat ...@@ -80,7 +80,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
this._register(this.userConfiguration.onDidChangeConfiguration(() => this.onUserConfigurationChanged())); this._register(this.userConfiguration.onDidChangeConfiguration(() => this.onUserConfigurationChanged()));
this._register(this.workspaceConfiguration.onDidUpdateConfiguration(() => this.onWorkspaceConfigurationChanged())); this._register(this.workspaceConfiguration.onDidUpdateConfiguration(() => this.onWorkspaceConfigurationChanged()));
this._register(Registry.as<IConfigurationRegistry>(Extensions.Configuration).onDidRegisterConfiguration(e => this.registerConfigurationSchemas())); this._register(Registry.as<IConfigurationRegistry>(Extensions.Configuration).onDidSchemaChange(e => this.registerConfigurationSchemas()));
this._register(Registry.as<IConfigurationRegistry>(Extensions.Configuration).onDidRegisterConfiguration(configurationProperties => this.onDefaultConfigurationChanged(configurationProperties))); this._register(Registry.as<IConfigurationRegistry>(Extensions.Configuration).onDidRegisterConfiguration(configurationProperties => this.onDefaultConfigurationChanged(configurationProperties)));
this.workspaceEditingQueue = new Queue<void>(); this.workspaceEditingQueue = new Queue<void>();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册