From 919edfb323609e31aa6e1f296d621782858a8533 Mon Sep 17 00:00:00 2001 From: Erasin Date: Sun, 31 Jul 2022 01:34:00 +0800 Subject: [PATCH] Add Graphviz Dot lang support (#3241) Co-authored-by: Michael Davis --- book/src/generated/lang-support.md | 1 + languages.toml | 14 ++++++++++ runtime/queries/dot/highlights.scm | 43 ++++++++++++++++++++++++++++++ runtime/queries/dot/injections.scm | 2 ++ 4 files changed, 60 insertions(+) create mode 100644 runtime/queries/dot/highlights.scm create mode 100644 runtime/queries/dot/injections.scm diff --git a/book/src/generated/lang-support.md b/book/src/generated/lang-support.md index 0e150a674..581ccd647 100644 --- a/book/src/generated/lang-support.md +++ b/book/src/generated/lang-support.md @@ -13,6 +13,7 @@ | dart | ✓ | | ✓ | `dart` | | devicetree | ✓ | | ✓ | | | dockerfile | ✓ | | | `docker-langserver` | +| dot | ✓ | | | `dot-language-server` | | edoc | ✓ | | | | | eex | ✓ | | | | | ejs | ✓ | | | | diff --git a/languages.toml b/languages.toml index 67e607df6..7becb0204 100644 --- a/languages.toml +++ b/languages.toml @@ -1570,3 +1570,17 @@ indent = { tab-width = 2, unit = " " } [[grammar]] name = "ungrammar" source = { git = "https://github.com/Philipp-M/tree-sitter-ungrammar", rev = "0113de880a58ea14f2a75802e9b99fcc25003d9c" } + +[[language]] +name = "dot" +scope = "source.dot" +injection-regex = "dot" +file-types = ["dot"] +roots = [] +comment-token = "//" +indent = { tab-width = 4, unit = " " } +language-server = { command = "dot-language-server", args = ["--stdio"] } + +[[grammar]] +name = "dot" +source = { git = "https://github.com/rydesun/tree-sitter-dot", rev = "917230743aa10f45a408fea2ddb54bbbf5fbe7b7" } diff --git a/runtime/queries/dot/highlights.scm b/runtime/queries/dot/highlights.scm new file mode 100644 index 000000000..6ad64d287 --- /dev/null +++ b/runtime/queries/dot/highlights.scm @@ -0,0 +1,43 @@ +(keyword) @keyword +(string_literal) @string +(number_literal) @constant.numeric + +[ + (edgeop) + (operator) +] @operator + +[ + "," + ";" +] @punctuation.delimiter + +[ + "{" + "}" + "[" + "]" + "<" + ">" +] @punctuation.bracket + +(subgraph + id: (id + (identifier) @namespace) +) + +(attribute + name: (id + (identifier) @type) + value: (id + (identifier) @constant) +) + +[ + (comment) + (preproc) +] @comment + +(ERROR) @error + +(identifier) @variable diff --git a/runtime/queries/dot/injections.scm b/runtime/queries/dot/injections.scm new file mode 100644 index 000000000..1bfffa1b5 --- /dev/null +++ b/runtime/queries/dot/injections.scm @@ -0,0 +1,2 @@ +((html_internal) @injection.content + (#set! injection.language "html"))