Fixes for jsonc mode. Fixes #39199
This commit is contained in:
parent
936f4f6a90
commit
76989b38ff
|
@ -10,7 +10,7 @@
|
||||||
"Other"
|
"Other"
|
||||||
],
|
],
|
||||||
"activationEvents": [
|
"activationEvents": [
|
||||||
"onLanguage:json"
|
"onLanguage:json", "onLanguage:jsonc"
|
||||||
],
|
],
|
||||||
"main": "./out/extension",
|
"main": "./out/extension",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -60,7 +60,7 @@ function registerKeybindingsCompletions(): vscode.Disposable {
|
||||||
}
|
}
|
||||||
|
|
||||||
function registerSettingsCompletions(): 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) {
|
provideCompletionItems(document, position, token) {
|
||||||
return new SettingsDocument(document).provideCompletionItems(position, token);
|
return new SettingsDocument(document).provideCompletionItems(position, token);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ function updateLaunchJsonDecorations(editor: vscode.TextEditor | undefined): voi
|
||||||
editor.setDecorations(decoration, ranges);
|
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<vscode.SymbolInformation[]> {
|
provideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.ProviderResult<vscode.SymbolInformation[]> {
|
||||||
const result: vscode.SymbolInformation[] = [];
|
const result: vscode.SymbolInformation[] = [];
|
||||||
let name: string = '';
|
let name: string = '';
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
"filenames": [
|
"filenames": [
|
||||||
"settings.json",
|
"settings.json",
|
||||||
"launch.json",
|
"launch.json",
|
||||||
"debug.json",
|
"tasks.json",
|
||||||
"keybindings.json"
|
"keybindings.json"
|
||||||
],
|
],
|
||||||
"configuration": "./language-configuration.json"
|
"configuration": "./language-configuration.json"
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jsonc-parser": "^1.0.0",
|
"jsonc-parser": "^1.0.0",
|
||||||
"request-light": "^0.2.1",
|
"request-light": "^0.2.1",
|
||||||
"vscode-json-languageservice": "^3.0.2",
|
"vscode-json-languageservice": "^3.0.3",
|
||||||
"vscode-languageserver": "^3.5.0",
|
"vscode-languageserver": "^3.5.0",
|
||||||
"vscode-nls": "^2.0.2",
|
"vscode-nls": "^2.0.2",
|
||||||
"vscode-uri": "^1.0.1"
|
"vscode-uri": "^1.0.1"
|
||||||
|
|
|
@ -161,7 +161,7 @@ connection.onDidChangeConfiguration((change) => {
|
||||||
let enableFormatter = settings && settings.json && settings.json.format && settings.json.format.enable;
|
let enableFormatter = settings && settings.json && settings.json.format && settings.json.format.enable;
|
||||||
if (enableFormatter) {
|
if (enableFormatter) {
|
||||||
if (!formatterRegistration) {
|
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) {
|
} else if (formatterRegistration) {
|
||||||
formatterRegistration.then(r => r.dispose());
|
formatterRegistration.then(r => r.dispose());
|
||||||
|
|
|
@ -52,9 +52,9 @@ request-light@^0.2.1:
|
||||||
https-proxy-agent "^0.3.5"
|
https-proxy-agent "^0.3.5"
|
||||||
vscode-nls "^2.0.2"
|
vscode-nls "^2.0.2"
|
||||||
|
|
||||||
vscode-json-languageservice@^3.0.2:
|
vscode-json-languageservice@^3.0.3:
|
||||||
version "3.0.2"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.2.tgz#66762127f24d32709ea5f410c58080ed8059d1e2"
|
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-3.0.3.tgz#d865450a86dd3229bfac83a4245b38281e2dffb3"
|
||||||
dependencies:
|
dependencies:
|
||||||
jsonc-parser "^1.0.0"
|
jsonc-parser "^1.0.0"
|
||||||
vscode-languageserver-types "^3.5.0"
|
vscode-languageserver-types "^3.5.0"
|
||||||
|
|
|
@ -55,6 +55,7 @@ export interface IJSONSchema {
|
||||||
markdownEnumDescriptions?: string[]; // VSCode extension
|
markdownEnumDescriptions?: string[]; // VSCode extension
|
||||||
markdownDescription?: string; // VSCode extension
|
markdownDescription?: string; // VSCode extension
|
||||||
doNotSuggest?: boolean; // VSCode extension
|
doNotSuggest?: boolean; // VSCode extension
|
||||||
|
allowComments?: boolean; // VSCode extension
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IJSONSchemaMap {
|
export interface IJSONSchemaMap {
|
||||||
|
|
|
@ -379,7 +379,7 @@ export class ConfigurationManager implements IConfigurationManager {
|
||||||
|
|
||||||
public canSetBreakpointsIn(model: IModel): boolean {
|
public canSetBreakpointsIn(model: IModel): boolean {
|
||||||
const modeId = model ? model.getLanguageIdentifier().language : null;
|
const modeId = model ? model.getLanguageIdentifier().language : null;
|
||||||
if (!modeId || modeId === 'json') {
|
if (!modeId || modeId === 'jsonc') {
|
||||||
// do not allow breakpoints in our settings files
|
// do not allow breakpoints in our settings files
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -606,7 +606,7 @@ export class FeedbackWidgetRenderer extends Disposable {
|
||||||
JSON.stringify(feedbackQuery, undefined, ' ') + '\n\n' +
|
JSON.stringify(feedbackQuery, undefined, ' ') + '\n\n' +
|
||||||
actualResultNames.map(name => `// ${name}: ${result.metadata.scoredResults[name]}`).join('\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));
|
const sendFeedbackWidget = this._register(this.instantiationService.createInstance(FloatingClickWidget, feedbackEditor.getControl(), 'Send feedback', null));
|
||||||
sendFeedbackWidget.render();
|
sendFeedbackWidget.render();
|
||||||
|
|
||||||
|
|
|
@ -111,7 +111,7 @@ export class PreferencesService extends Disposable implements IPreferencesServic
|
||||||
if (this.isDefaultSettingsResource(uri) || this.isDefaultResourceSettingsResource(uri)) {
|
if (this.isDefaultSettingsResource(uri) || this.isDefaultResourceSettingsResource(uri)) {
|
||||||
|
|
||||||
const scope = this.isDefaultSettingsResource(uri) ? ConfigurationScope.WINDOW : ConfigurationScope.RESOURCE;
|
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));
|
const model = this._register(this.modelService.createModel('', mode, uri));
|
||||||
|
|
||||||
let defaultSettings: DefaultSettings;
|
let defaultSettings: DefaultSettings;
|
||||||
|
@ -139,14 +139,14 @@ export class PreferencesService extends Disposable implements IPreferencesServic
|
||||||
|
|
||||||
if (this.defaultSettingsRawResource.toString() === uri.toString()) {
|
if (this.defaultSettingsRawResource.toString() === uri.toString()) {
|
||||||
let defaultSettings: DefaultSettings = this.getDefaultSettings(ConfigurationScope.WINDOW);
|
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));
|
const model = this._register(this.modelService.createModel(defaultSettings.raw, mode, uri));
|
||||||
return TPromise.as(model);
|
return TPromise.as(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.defaultKeybindingsResource.toString() === uri.toString()) {
|
if (this.defaultKeybindingsResource.toString() === uri.toString()) {
|
||||||
const defaultKeybindingsEditorModel = this.instantiationService.createInstance(DefaultKeybindingsEditorModel, uri);
|
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));
|
const model = this._register(this.modelService.createModel(defaultKeybindingsEditorModel.content, mode, uri));
|
||||||
return TPromise.as(model);
|
return TPromise.as(model);
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,7 +125,7 @@ export class PreferencesContribution implements IWorkbenchContribution {
|
||||||
let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()];
|
let schema = schemaRegistry.getSchemaContributions().schemas[uri.toString()];
|
||||||
if (schema) {
|
if (schema) {
|
||||||
const modelContent = JSON.stringify(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);
|
const model = this.modelService.createModel(modelContent, mode, uri);
|
||||||
|
|
||||||
let disposables = [];
|
let disposables = [];
|
||||||
|
|
|
@ -210,6 +210,7 @@ export class Snippet {
|
||||||
const schemaId = 'vscode://schemas/snippets';
|
const schemaId = 'vscode://schemas/snippets';
|
||||||
const schema: IJSONSchema = {
|
const schema: IJSONSchema = {
|
||||||
'id': schemaId,
|
'id': schemaId,
|
||||||
|
'allowComments': true,
|
||||||
'defaultSnippets': [{
|
'defaultSnippets': [{
|
||||||
'label': nls.localize('snippetSchema.json.default', "Empty snippet"),
|
'label': nls.localize('snippetSchema.json.default', "Empty snippet"),
|
||||||
'body': { '${1:snippetName}': { 'prefix': '${2:prefix}', 'body': '${3:snippet}', 'description': '${4:description}' } }
|
'body': { '${1:snippetName}': { 'prefix': '${2:prefix}', 'body': '${3:snippet}', 'description': '${4:description}' } }
|
||||||
|
|
|
@ -198,7 +198,7 @@ class GenerateColorThemeAction extends Action {
|
||||||
colors: resultingColors,
|
colors: resultingColors,
|
||||||
tokenColors: theme.tokenColors
|
tokenColors: theme.tokenColors
|
||||||
}, null, '\t');
|
}, null, '\t');
|
||||||
return this.editorService.openEditor({ contents, language: 'json' });
|
return this.editorService.openEditor({ contents, language: 'jsonc' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue