提交 887b3067 编写于 作者: S Sandeep Somavarapu

#31034 Register resource configurations schema

上级 c73d4d34
...@@ -83,6 +83,7 @@ export interface IDefaultConfigurationExtension { ...@@ -83,6 +83,7 @@ export interface IDefaultConfigurationExtension {
export const schemaId = 'vscode://schemas/settings'; export const schemaId = 'vscode://schemas/settings';
export const editorConfigurationSchemaId = 'vscode://schemas/settings/editor'; export const editorConfigurationSchemaId = 'vscode://schemas/settings/editor';
export const resourceConfigurationSchemaId = 'vscode://schemas/settings/resource';
const contributionRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution); const contributionRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);
class ConfigurationRegistry implements IConfigurationRegistry { class ConfigurationRegistry implements IConfigurationRegistry {
...@@ -90,6 +91,7 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -90,6 +91,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
private configurationProperties: { [qualifiedKey: string]: IJSONSchema }; private configurationProperties: { [qualifiedKey: string]: IJSONSchema };
private configurationSchema: IJSONSchema; private configurationSchema: IJSONSchema;
private editorConfigurationSchema: IJSONSchema; private editorConfigurationSchema: IJSONSchema;
private resourceConfigurationSchema: IJSONSchema;
private _onDidRegisterConfiguration: Emitter<IConfigurationRegistry>; private _onDidRegisterConfiguration: Emitter<IConfigurationRegistry>;
private overrideIdentifiers: string[] = []; private overrideIdentifiers: string[] = [];
private overridePropertyPattern: string; private overridePropertyPattern: string;
...@@ -98,12 +100,14 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -98,12 +100,14 @@ class ConfigurationRegistry implements IConfigurationRegistry {
this.configurationContributors = []; this.configurationContributors = [];
this.configurationSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown configuration setting' }; this.configurationSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown configuration setting' };
this.editorConfigurationSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown editor configuration setting' }; this.editorConfigurationSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown editor configuration setting' };
this.resourceConfigurationSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Not a resource configuration setting' };
this._onDidRegisterConfiguration = new Emitter<IConfigurationRegistry>(); this._onDidRegisterConfiguration = new Emitter<IConfigurationRegistry>();
this.configurationProperties = {}; this.configurationProperties = {};
this.computeOverridePropertyPattern(); this.computeOverridePropertyPattern();
contributionRegistry.registerSchema(schemaId, this.configurationSchema); contributionRegistry.registerSchema(schemaId, this.configurationSchema);
contributionRegistry.registerSchema(editorConfigurationSchemaId, this.editorConfigurationSchema); contributionRegistry.registerSchema(editorConfigurationSchemaId, this.editorConfigurationSchema);
contributionRegistry.registerSchema(resourceConfigurationSchemaId, this.resourceConfigurationSchema);
} }
public get onDidRegisterConfiguration() { public get onDidRegisterConfiguration() {
...@@ -223,8 +227,9 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -223,8 +227,9 @@ class ConfigurationRegistry implements IConfigurationRegistry {
private updateSchemaForOverrideSettingsConfiguration(configuration: IConfigurationNode): void { private updateSchemaForOverrideSettingsConfiguration(configuration: IConfigurationNode): void {
if (configuration.id !== SETTINGS_OVERRRIDE_NODE_ID) { if (configuration.id !== SETTINGS_OVERRRIDE_NODE_ID) {
this.update(configuration, this.editorConfigurationSchema); this.update(configuration);
contributionRegistry.registerSchema(editorConfigurationSchemaId, this.editorConfigurationSchema); contributionRegistry.registerSchema(editorConfigurationSchemaId, this.editorConfigurationSchema);
contributionRegistry.registerSchema(resourceConfigurationSchemaId, this.resourceConfigurationSchema);
} }
} }
...@@ -244,18 +249,23 @@ class ConfigurationRegistry implements IConfigurationRegistry { ...@@ -244,18 +249,23 @@ class ConfigurationRegistry implements IConfigurationRegistry {
contributionRegistry.registerSchema(schemaId, this.configurationSchema); contributionRegistry.registerSchema(schemaId, this.configurationSchema);
} }
private update(configuration: IConfigurationNode, overridePropertiesSchema: IJSONSchema): void { private update(configuration: IConfigurationNode): void {
let properties = configuration.properties; let properties = configuration.properties;
if (properties) { if (properties) {
for (let key in properties) { for (let key in properties) {
if (properties[key].overridable) { if (properties[key].overridable) {
overridePropertiesSchema.properties[key] = this.getConfigurationProperties()[key]; this.editorConfigurationSchema.properties[key] = this.getConfigurationProperties()[key];
}
switch (properties[key].scope) {
case ConfigurationScope.RESOURCE:
this.resourceConfigurationSchema.properties[key] = this.getConfigurationProperties()[key];
break;
} }
} }
} }
let subNodes = configuration.allOf; let subNodes = configuration.allOf;
if (subNodes) { if (subNodes) {
subNodes.forEach(subNode => this.update(subNode, overridePropertiesSchema)); subNodes.forEach(subNode => this.update(subNode));
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册