From 97c870b855b0781e00567f9e181acc3cfbecf857 Mon Sep 17 00:00:00 2001 From: morning-star <1453017105@qq.com> Date: Thu, 22 Dec 2022 07:48:22 +0800 Subject: [PATCH] feat: support syntax highlighting for `lang="json5"` (#2244) --- .../vscode-vue-language-features/package.json | 6 ++++ .../syntaxes/vue.tmLanguage.json | 32 +++++++++++++++++++ .../vue-language-service/src/plugins/vue.ts | 1 + 3 files changed, 39 insertions(+) diff --git a/extensions/vscode-vue-language-features/package.json b/extensions/vscode-vue-language-features/package.json index 1dd601510..353a6245c 100644 --- a/extensions/vscode-vue-language-features/package.json +++ b/extensions/vscode-vue-language-features/package.json @@ -182,6 +182,7 @@ "meta.tag.without-attributes.tsx": "jsx-tags", "source.json": "json", "source.json.comments": "jsonc", + "source.json5": "json5", "source.yaml": "yaml", "source.toml": "toml", "source.graphql": "graphql" @@ -224,6 +225,7 @@ "meta.tag.without-attributes.tsx": "jsx-tags", "source.json": "json", "source.json.comments": "jsonc", + "source.json5": "json5", "source.yaml": "yaml", "source.toml": "toml", "source.graphql": "graphql" @@ -467,6 +469,10 @@ "jsonc": { "type": "boolean", "default": false + }, + "json5": { + "type": "boolean", + "default": false } } }, diff --git a/extensions/vscode-vue-language-features/syntaxes/vue.tmLanguage.json b/extensions/vscode-vue-language-features/syntaxes/vue.tmLanguage.json index e5ebd4ff7..352ae1be3 100644 --- a/extensions/vscode-vue-language-features/syntaxes/vue.tmLanguage.json +++ b/extensions/vscode-vue-language-features/syntaxes/vue.tmLanguage.json @@ -503,6 +503,38 @@ } ] }, + { + "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json5\\b\\2)", + "beginCaptures": { + "1": { + "name": "entity.name.tag.$1.html.vue" + } + }, + "end": "()", + "endCaptures": { + "1": { + "name": "punctuation.definition.tag.begin.html.vue" + }, + "2": { + "name": "entity.name.tag.$2.html.vue" + } + }, + "patterns": [ + { + "include": "#tag-stuff" + }, + { + "begin": "(?<=>)", + "end": "(?=<\\/)", + "name": "source.json5", + "patterns": [ + { + "include": "source.json5" + } + ] + } + ] + }, { "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)yaml\\b\\2)", "beginCaptures": { diff --git a/vue-language-tools/vue-language-service/src/plugins/vue.ts b/vue-language-tools/vue-language-service/src/plugins/vue.ts index c0c178846..1f84213db 100644 --- a/vue-language-tools/vue-language-service/src/plugins/vue.ts +++ b/vue-language-tools/vue-language-service/src/plugins/vue.ts @@ -101,6 +101,7 @@ const dataProvider: html.IHTMLDataProvider = { { name: 'md' }, { name: 'json' }, { name: 'jsonc' }, + { name: 'json5' }, { name: 'yaml' }, { name: 'toml' }, { name: 'gql' },