From 8e0f326ebb98060deab7d454fab6fd9f4b217737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristoffer=20Plagborg=20Bak=20S=C3=B8rensen?= <57013304+kpbaks@users.noreply.github.com> Date: Thu, 10 Jul 2025 15:49:33 +0200 Subject: [PATCH] languages: create dedicated language for json-ld (#13925) --- book/src/generated/lang-support.md | 1 + languages.toml | 12 ++++++- runtime/queries/json-ld/highlights.scm | 43 +++++++++++++++++++++++++ runtime/queries/json-ld/indents.scm | 1 + runtime/queries/json-ld/textobjects.scm | 1 + 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 runtime/queries/json-ld/highlights.scm create mode 100644 runtime/queries/json-ld/indents.scm create mode 100644 runtime/queries/json-ld/textobjects.scm diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 907dd318e..1544c7683 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -120,6 +120,7 @@ | jq | ✓ | ✓ | | `jq-lsp` | | jsdoc | ✓ | | | | | json | ✓ | ✓ | ✓ | `vscode-json-language-server` | +| json-ld | ✓ | ✓ | ✓ | `vscode-json-language-server` | | json5 | ✓ | | | | | jsonc | ✓ | | ✓ | `vscode-json-language-server` | | jsonnet | ✓ | | | `jsonnet-language-server` | diff --git a/languages.toml b/languages.toml index 8b1c4bc08..b5d9c81a0 100644 --- a/languages.toml +++ b/languages.toml @@ -514,7 +514,6 @@ file-types = [ "css.map", { glob = ".jslintrc" }, "jsonl", - "jsonld", { glob = ".vuerc" }, { glob = "composer.lock" }, { glob = ".watchmanconfig" }, @@ -555,6 +554,17 @@ language-servers = [ "vscode-json-language-server" ] auto-format = true indent = { tab-width = 2, unit = " " } +# https://www.w3.org/TR/json-ld/ +[[language]] +name = "json-ld" +scope = "source.json-ld" +injection-regex = "json-ld" +grammar = "json" +file-types = ["jsonld"] +language-servers = ["vscode-json-language-server"] +auto-format = true +indent = { tab-width = 2, unit = " " } + [[language]] name = "json5" scope = "source.json5" diff --git a/runtime/queries/json-ld/highlights.scm b/runtime/queries/json-ld/highlights.scm new file mode 100644 index 000000000..8fccb10a2 --- /dev/null +++ b/runtime/queries/json-ld/highlights.scm @@ -0,0 +1,43 @@ +; inherits: json + +; https://www.w3.org/TR/json-ld/#syntax-tokens-and-keywords +((string (string_content) @keyword) + (#any-of? @keyword + "@base" + "@container" + "@context" + "@direction" + "@graph" + "@id" + "@import" + "@included" + "@index" + "@json" + "@language" + "@list" + "@nest" + "@none" + "@prefix" + "@propagate" + "@protected" + "@reverse" + "@set" + "@type" + "@value" + "@version" + "@vocab")) + +((pair + value: (string (string_content) @string.special.url)) + (#match? @string.special.url "^https?://")) + +((array + (string (string_content) @string.special.url)) + (#match? @string.special.url "^https?://")) + +; https://www.w3.org/TR/json-ld/#dfn-base-direction +((pair + key: (string (string_content) @keyword) + value: (string (string_content) @type.enum.variant)) + (#eq? @keyword "@direction") + (#any-of? @type.enum.variant "ltr" "rtl")) diff --git a/runtime/queries/json-ld/indents.scm b/runtime/queries/json-ld/indents.scm new file mode 100644 index 000000000..41269219e --- /dev/null +++ b/runtime/queries/json-ld/indents.scm @@ -0,0 +1 @@ +; inherits: json diff --git a/runtime/queries/json-ld/textobjects.scm b/runtime/queries/json-ld/textobjects.scm new file mode 100644 index 000000000..41269219e --- /dev/null +++ b/runtime/queries/json-ld/textobjects.scm @@ -0,0 +1 @@ +; inherits: json