Unnamed repository; edit this file 'description' to name the repository.
Improve Edoc highlighting within Erlang
This highlights edoc within Erlang comments. The trick was to have the Erlang grammar consume newlines and then give them to EDoc in the injection to use so that line-wise elements could be parsed accurately.
Michael Davis 2022-11-24
parent a3f321a · commit 452f7d0
-rw-r--r--languages.toml4
-rw-r--r--runtime/queries/edoc/highlights.scm2
-rw-r--r--runtime/queries/edoc/injections.scm4
-rw-r--r--runtime/queries/erlang/highlights.scm10
-rw-r--r--runtime/queries/erlang/injections.scm9
5 files changed, 19 insertions, 10 deletions
diff --git a/languages.toml b/languages.toml
index 1e7dcbf79..9007cc657 100644
--- a/languages.toml
+++ b/languages.toml
@@ -1184,7 +1184,7 @@ language-server = { command = "erlang_ls" }
[[grammar]]
name = "erlang"
-source = { git = "https://github.com/the-mikedavis/tree-sitter-erlang", rev = "0e7d677d11a7379686c53c616825714ccb728059" }
+source = { git = "https://github.com/the-mikedavis/tree-sitter-erlang", rev = "ce0ed253d72c199ab93caba7542b6f62075339c4" }
[[language]]
name = "kotlin"
@@ -1574,7 +1574,7 @@ indent = { tab-width = 4, unit = " " }
[[grammar]]
name = "edoc"
-source = { git = "https://github.com/the-mikedavis/tree-sitter-edoc", rev = "1691ec0aa7ad1ed9fa295590545f27e570d12d60" }
+source = { git = "https://github.com/the-mikedavis/tree-sitter-edoc", rev = "74774af7b45dd9cefbf9510328fc6ff2374afc50" }
[[language]]
name = "jsdoc"
diff --git a/runtime/queries/edoc/highlights.scm b/runtime/queries/edoc/highlights.scm
index 4267cb9e0..5bab79928 100644
--- a/runtime/queries/edoc/highlights.scm
+++ b/runtime/queries/edoc/highlights.scm
@@ -48,3 +48,5 @@
(language_identifier)
(quote_content)
] @markup.raw.block
+
+(parameter) @variable.parameter
diff --git a/runtime/queries/edoc/injections.scm b/runtime/queries/edoc/injections.scm
index 9630995b6..28c44b9f4 100644
--- a/runtime/queries/edoc/injections.scm
+++ b/runtime/queries/edoc/injections.scm
@@ -16,5 +16,5 @@
(tag) @_tag
(argument) @injection.content)
(#eq? @_tag "@type")
- (#set injection.language "erlang")
- (#set injection.include-children))
+ (#set! injection.language "erlang")
+ (#set! injection.include-children))
diff --git a/runtime/queries/erlang/highlights.scm b/runtime/queries/erlang/highlights.scm
index 58c8fb8af..050fb613c 100644
--- a/runtime/queries/erlang/highlights.scm
+++ b/runtime/queries/erlang/highlights.scm
@@ -94,10 +94,6 @@
(unary_operator operator: _ @operator)
["/" ":" "->"] @operator
-(tripledot) @comment.discard
-
-(comment) @comment
-
; Macros
(macro
"?"+ @constant
@@ -112,8 +108,14 @@
((variable) @comment.discard
(#match? @comment.discard "^_"))
+(tripledot) @comment.discard
+
+[(comment) (line_comment) (shebang)] @comment
+
; Basic types
(variable) @variable
+((atom) @constant.builtin.boolean
+ (#match? @constant.builtin.boolean "^(true|false)$"))
(atom) @string.special.symbol
(string) @string
(character) @constant.character
diff --git a/runtime/queries/erlang/injections.scm b/runtime/queries/erlang/injections.scm
index 07858185e..11cbd01e3 100644
--- a/runtime/queries/erlang/injections.scm
+++ b/runtime/queries/erlang/injections.scm
@@ -1,2 +1,7 @@
-((comment_content) @injection.content
- (#set! injection.language "edoc"))
+((line_comment (comment_content) @injection.content)
+ (#set! injection.language "edoc")
+ (#set! injection.include-children)
+ (#set! injection.combined))
+
+((comment (comment_content) @injection.content)
+ (#set! injection.language "comment"))