diff --git a/extensions/configuration-editing/package.json b/extensions/configuration-editing/package.json index 67c6c899c16..9659fdcbc96 100644 --- a/extensions/configuration-editing/package.json +++ b/extensions/configuration-editing/package.json @@ -10,7 +10,7 @@ "Other" ], "activationEvents": [ - "onLanguage:json" + "onLanguage:json", "onLanguage:jsonc" ], "main": "./out/extension", "scripts": { diff --git a/extensions/configuration-editing/src/extension.ts b/extensions/configuration-editing/src/extension.ts index ea0655e5bf3..e215f0fb5a9 100644 --- a/extensions/configuration-editing/src/extension.ts +++ b/extensions/configuration-editing/src/extension.ts @@ -60,7 +60,7 @@ function registerKeybindingsCompletions(): vscode.Disposable { } function registerSettingsCompletions(): vscode.Disposable { - return vscode.languages.registerCompletionItemProvider({ language: 'json', pattern: '**/settings.json' }, { + return vscode.languages.registerCompletionItemProvider({ language: 'jsonc', pattern: '**/settings.json' }, { provideCompletionItems(document, position, token) { return new SettingsDocument(document).provideCompletionItems(position, token); } @@ -173,7 +173,7 @@ function updateLaunchJsonDecorations(editor: vscode.TextEditor | undefined): voi editor.setDecorations(decoration, ranges); } -vscode.languages.registerDocumentSymbolProvider({ pattern: '**/launch.json', language: 'json' }, { +vscode.languages.registerDocumentSymbolProvider({ pattern: '**/launch.json', language: 'jsonc' }, { provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult { const result: vscode.SymbolInformation[] = []; let name: string = ''; diff --git a/extensions/json/package.json b/extensions/json/package.json index 66f89cb5539..18eaa763cf8 100644 --- a/extensions/json/package.json +++ b/extensions/json/package.json @@ -56,7 +56,7 @@ "filenames": [ "settings.json", "launch.json", - "debug.json", + "tasks.json", "keybindings.json" ], "configuration": "./language-configuration.json" diff --git a/extensions/json/server/package.json b/extensions/json/server/package.json index ffdf3f2340f..9a2f495bc37 100644 --- a/extensions/json/server/package.json +++ b/extensions/json/server/package.json @@ -10,7 +10,7 @@ "dependencies": { "jsonc-parser": "^1.0.0", "request-light": "^0.2.1", - "vscode-json-languageservice": "^3.0.2", + "vscode-json-languageservice": "^3.0.3", "vscode-languageserver": "^3.5.0", "vscode-nls": "^2.0.2", "vscode-uri": "^1.0.1" diff --git a/extensions/json/server/src/jsonServerMain.ts b/extensions/json/server/src/jsonServerMain.ts index 157f68cecd0..7bc0bbcf273 100644 --- a/extensions/json/server/src/jsonServerMain.ts +++ b/extensions/json/server/src/jsonServerMain.ts @@ -161,7 +161,7 @@ connection.onDidChangeConfiguration((change) => { let enableFormatter = settings && settings.json && settings.json.format && settings.json.format.enable; if (enableFormatter) { if (!formatterRegistration) { - formatterRegistration = connection.client.register(DocumentRangeFormattingRequest.type, { documentSelector: [{ language: 'json' }] }); + formatterRegistration = connection.client.register(DocumentRangeFormattingRequest.type, { documentSelector: [{ language: 'json' }, { language: 'jsonc' }] }); } } else if (formatterRegistration) { formatterRegistration.then(r => r.dispose()); diff --git a/extensions/json/server/yarn.lock b/extensions/json/server/yarn.lock index 610127737bd..a7e8e6e1229 100644 --- a/extensions/json/server/yarn.lock +++ b/extensions/json/server/yarn.lock @@ -52,9 +52,9 @@ request-light@^0.2.1: https-proxy-agent "^0.3.5" vscode-nls "^2.0.2" -vscode-json-languageservice@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.2.tgz#66762127f24d32709ea5f410c58080ed8059d1e2" +vscode-json-languageservice@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.3.tgz#d865450a86dd3229bfac83a4245b38281e2dffb3" dependencies: jsonc-parser "^1.0.0" vscode-languageserver-types "^3.5.0" diff --git a/src/vs/base/common/jsonSchema.ts b/src/vs/base/common/jsonSchema.ts index 538858e0c0d..5bec1537db2 100644 --- a/src/vs/base/common/jsonSchema.ts +++ b/src/vs/base/common/jsonSchema.ts @@ -55,6 +55,7 @@ export interface IJSONSchema { markdownEnumDescriptions?: string[]; // VSCode extension markdownDescription?: string; // VSCode extension doNotSuggest?: boolean; // VSCode extension + allowComments?: boolean; // VSCode extension } export interface IJSONSchemaMap { diff --git a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts index c8b1ca7eb1a..2cbb48bb0a0 100644 --- a/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts +++ b/src/vs/workbench/parts/debug/electron-browser/debugConfigurationManager.ts @@ -379,7 +379,7 @@ export class ConfigurationManager implements IConfigurationManager { public canSetBreakpointsIn(model: IModel): boolean { const modeId = model ? model.getLanguageIdentifier().language : null; - if (!modeId || modeId === 'json') { + if (!modeId || modeId === 'jsonc') { // do not allow breakpoints in our settings files return false; } diff --git a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts index ed9b66aade8..60ea35dc725 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts @@ -606,7 +606,7 @@ export class FeedbackWidgetRenderer extends Disposable { JSON.stringify(feedbackQuery, undefined, ' ') + '\n\n' + actualResultNames.map(name => `// ${name}: ${result.metadata.scoredResults[name]}`).join('\n'); - this.editorService.openEditor({ contents, language: 'json' }, /*sideBySide=*/true).then(feedbackEditor => { + this.editorService.openEditor({ contents, language: 'jsonc' }, /*sideBySide=*/true).then(feedbackEditor => { const sendFeedbackWidget = this._register(this.instantiationService.createInstance(FloatingClickWidget, feedbackEditor.getControl(), 'Send feedback', null)); sendFeedbackWidget.render(); diff --git a/src/vs/workbench/parts/preferences/browser/preferencesService.ts b/src/vs/workbench/parts/preferences/browser/preferencesService.ts index c1f56fe9e76..3c3892467af 100644 --- a/src/vs/workbench/parts/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/parts/preferences/browser/preferencesService.ts @@ -111,7 +111,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic if (this.isDefaultSettingsResource(uri) || this.isDefaultResourceSettingsResource(uri)) { const scope = this.isDefaultSettingsResource(uri) ? ConfigurationScope.WINDOW : ConfigurationScope.RESOURCE; - const mode = this.modeService.getOrCreateMode('json'); + const mode = this.modeService.getOrCreateMode('jsonc'); const model = this._register(this.modelService.createModel('', mode, uri)); let defaultSettings: DefaultSettings; @@ -139,14 +139,14 @@ export class PreferencesService extends Disposable implements IPreferencesServic if (this.defaultSettingsRawResource.toString() === uri.toString()) { let defaultSettings: DefaultSettings = this.getDefaultSettings(ConfigurationScope.WINDOW); - const mode = this.modeService.getOrCreateMode('json'); + const mode = this.modeService.getOrCreateMode('jsonc'); const model = this._register(this.modelService.createModel(defaultSettings.raw, mode, uri)); return TPromise.as(model); } if (this.defaultKeybindingsResource.toString() === uri.toString()) { const defaultKeybindingsEditorModel = this.instantiationService.createInstance(DefaultKeybindingsEditorModel, uri); - const mode = this.modeService.getOrCreateMode('json'); + const mode = this.modeService.getOrCreateMode('jsonc'); const model = this._register(this.modelService.createModel(defaultKeybindingsEditorModel.content, mode, uri)); return TPromise.as(model); } diff --git a/src/vs/workbench/parts/preferences/common/preferencesContribution.ts b/src/vs/workbench/parts/preferences/common/preferencesContribution.ts index c4caf066e46..9023b766375 100644 --- a/src/vs/workbench/parts/preferences/common/preferencesContribution.ts +++ b/src/vs/workbench/parts/preferences/common/preferencesContribution.ts @@ -125,7 +125,7 @@ export class PreferencesContribution implements IWorkbenchContribution { let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()]; if (schema) { const modelContent = JSON.stringify(schema); - const mode = this.modeService.getOrCreateMode('json'); + const mode = this.modeService.getOrCreateMode('jsonc'); const model = this.modelService.createModel(modelContent, mode, uri); let disposables = []; diff --git a/src/vs/workbench/parts/snippets/electron-browser/snippets.contribution.ts b/src/vs/workbench/parts/snippets/electron-browser/snippets.contribution.ts index d9341f13c3e..fa0e7cd8a3a 100644 --- a/src/vs/workbench/parts/snippets/electron-browser/snippets.contribution.ts +++ b/src/vs/workbench/parts/snippets/electron-browser/snippets.contribution.ts @@ -210,6 +210,7 @@ export class Snippet { const schemaId = 'vscode://schemas/snippets'; const schema: IJSONSchema = { 'id': schemaId, + 'allowComments': true, 'defaultSnippets': [{ 'label': nls.localize('snippetSchema.json.default', "Empty snippet"), 'body': { '${1:snippetName}': { 'prefix': '${2:prefix}', 'body': '${3:snippet}', 'description': '${4:description}' } } diff --git a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts index ef5d0a5455f..24c535364b7 100644 --- a/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts +++ b/src/vs/workbench/parts/themes/electron-browser/themes.contribution.ts @@ -198,7 +198,7 @@ class GenerateColorThemeAction extends Action { colors: resultingColors, tokenColors: theme.tokenColors }, null, '\t'); - return this.editorService.openEditor({ contents, language: 'json' }); + return this.editorService.openEditor({ contents, language: 'jsonc' }); } }