{"action":"opened","issue":{"url":"https://api.github.com/repos/Microsoft/vscode/issues/30762","repository_url":"https://api.github.com/repos/Microsoft/vscode","labels_url":"https://api.github.com/repos/Microsoft/vscode/issues/30762/labels{/name}","comments_url":"https://api.github.com/repos/Microsoft/vscode/issues/30762/comments","events_url":"https://api.github.com/repos/Microsoft/vscode/issues/30762/events","html_url":"https://github.com/Microsoft/vscode/issues/30762","id":243172429,"number":30762,"title":"Extensions can break other extensions' validation schemas","user":{"login":"hoovercj","id":2957173,"avatar_url":"https://avatars6.githubusercontent.com/u/2957173?v=4","gravatar_id":"","url":"https://api.github.com/users/hoovercj","html_url":"https://github.com/hoovercj","followers_url":"https://api.github.com/users/hoovercj/followers","following_url":"https://api.github.com/users/hoovercj/following{/other_user}","gists_url":"https://api.github.com/users/hoovercj/gists{/gist_id}","starred_url":"https://api.github.com/users/hoovercj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hoovercj/subscriptions","organizations_url":"https://api.github.com/users/hoovercj/orgs","repos_url":"https://api.github.com/users/hoovercj/repos","events_url":"https://api.github.com/users/hoovercj/events{/privacy}","received_events_url":"https://api.github.com/users/hoovercj/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-07-15T12:27:29Z","updated_at":"2017-07-15T12:27:29Z","closed_at":null,"body":"Steps to Reproduce:\r\n\r\n1. Create a new extension\r\n2. Add this block to the `contributes` section of `package.json`\r\n```\r\n\"jsonValidation\": [\r\n    {\r\n        \"fileMatch\": \"settings.json\",\r\n        \"url\": \"badurl\"\r\n    }\r\n],\r\n```\r\n3. Launch the extension\r\n4. Go to `settings.json`\r\n5. Try to get intellisense for ANY settings\r\n\r\n**Expected:** Existing intellisense will still work\r\n**Actual:** No intellisense works\r\n\r\nThere are two problems here:\r\n1) It's problematic that extensions can clobber other extensions validations rather than their results being merged. It's doubly problematic that an extension can break built-in validations\r\n\r\n2) It's tedious to include a complex configuration schema inside the package.json but the only documented way of registering a schema that I've found is the way above. I can try to do it in a way that will only contribute the specific section I want, but given the damage that can be caused if I mess up, I would rather not, at least not without clear documentation on how to do it properly. I would actually prefer to reference it directly in the contributes section using something like what I have below, but the local path would need to be resolved by VS Code to the extension installation path.\r\n```\r\n\"contributes\": {\r\n  \"configuration\": {\r\n    \"properties\": {\r\n      \"extension.configuration\": {\r\n        \"$ref\": \"config-schema.json#/schema-id\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```"}}
{"actor":{"display_login":"hoovercj"}}