diff --git a/src/vs/platform/configuration/common/configurationRegistry.ts b/src/vs/platform/configuration/common/configurationRegistry.ts index 9d27ad2b76960f4ba565c16b06d42e1fe2f35373..48289b90edc4dc19f5e1ff0f6e83e0ef8897249c 100644 --- a/src/vs/platform/configuration/common/configurationRegistry.ts +++ b/src/vs/platform/configuration/common/configurationRegistry.ts @@ -50,15 +50,24 @@ export interface IConfigurationNode { definitions?: { [path: string]: IJSONSchema; }; } +const schemaId = 'vscode://schemas/settings'; +const contributionRegistry = platform.Registry.as(JSONContributionRegistry.Extensions.JSONContribution); + class ConfigurationRegistry implements IConfigurationRegistry { private configurationContributors: IConfigurationNode[]; - private hasJSONContributions: boolean; + private configurationSchema: IJSONSchema; private _onDidRegisterConfiguration: Emitter; constructor() { this.configurationContributors = []; - this.hasJSONContributions = false; + this.configurationSchema = { anyOf: [] }; this._onDidRegisterConfiguration = new Emitter(); + + contributionRegistry.registerSchema(schemaId, this.configurationSchema); + + contributionRegistry.addSchemaFileAssociation('vscode://defaultsettings/settings.json', schemaId); + contributionRegistry.addSchemaFileAssociation('%APP_SETTINGS_HOME%/settings.json', schemaId); + contributionRegistry.addSchemaFileAssociation('/.vscode/settings.json', schemaId); } public get onDidRegisterConfiguration() { @@ -77,17 +86,9 @@ class ConfigurationRegistry implements IConfigurationRegistry { } private registerJSONConfiguration(configuration: IConfigurationNode) { - var schemaId = strings.format('local://schemas/settings/{0}', configuration.id); - var schema = objects.clone(configuration); - schema.id = schemaId; - - var contributionRegistry = platform.Registry.as(JSONContributionRegistry.Extensions.JSONContribution); - contributionRegistry.registerSchema(schemaId, schema); - - contributionRegistry.addSchemaFileAssociation('inmemory://defaults/settings.json', schemaId); - contributionRegistry.addSchemaFileAssociation('%APP_SETTINGS_HOME%/settings.json', schemaId); - contributionRegistry.addSchemaFileAssociation('/.vscode/settings.json', schemaId); + this.configurationSchema.anyOf.push(schema); + contributionRegistry.registerSchema(schemaId, this.configurationSchema); } } diff --git a/src/vs/workbench/browser/actions/openSettings.ts b/src/vs/workbench/browser/actions/openSettings.ts index 2c5445aefa3639e82ebd4b3594f06130ba6d83dc..666e7d86eff84fa4048a91a532e2e62cd35b2b0d 100644 --- a/src/vs/workbench/browser/actions/openSettings.ts +++ b/src/vs/workbench/browser/actions/openSettings.ts @@ -182,7 +182,7 @@ class DefaultSettingsInput extends StringEditorInput { } protected getResource(): URI { - return URI.create(network.schemas.inMemory, 'defaults', '/settings.json'); // URI is used to register JSON schema support + return URI.create('vscode', 'defaultsettings', '/settings.json'); // URI is used to register JSON schema support } } @@ -201,7 +201,7 @@ class DefaultKeybindingsInput extends StringEditorInput { } protected getResource(): URI { - return URI.create(network.schemas.inMemory, 'defaults', '/keybindings.json'); // URI is used to register JSON schema support + return URI.create('vscode', 'defaultsettings', '/keybindings.json'); // URI is used to register JSON schema support } }