Skip to content

Commit

Permalink
Update tree-sitter-erlang and highlights
Browse files Browse the repository at this point in the history
A few changes:

* 0-arity type specs like the following previously would not have the
  expected 'variable.parameter' highlighting for the return type:

    -spec foo() -> Value when Value :: term().

* Highlight module, type and function docs as documentation comments
  and inject markdown into them.

* Replace `#match?` predicates with `#any-of?` where possible.

* Remove custom auto-pairs. Now that Erlang uses markdown for
  documentation, the asciidoc-style backtick-singlequote pair is no
  longer useful.
  • Loading branch information
the-mikedavis authored and archseer committed Mar 21, 2024
1 parent 459eb9a commit fdcd461
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 14 deletions.
10 changes: 1 addition & 9 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1711,17 +1711,9 @@ comment-token = "%%"
indent = { tab-width = 4, unit = " " }
language-servers = [ "erlang-ls" ]

[language.auto-pairs]
'(' = ')'
'{' = '}'
'[' = ']'
'"' = '"'
"'" = "'"
'`' = "'"

[[grammar]]
name = "erlang"
source = { git = "https://github.com/the-mikedavis/tree-sitter-erlang", rev = "731e50555a51f0d8635992b0e60dc98cc47a58d7" }
source = { git = "https://github.com/the-mikedavis/tree-sitter-erlang", rev = "9d4b36a76d5519e3dbf1ec4f4b61bb1a293f584c" }

[[language]]
name = "kotlin"
Expand Down
16 changes: 12 additions & 4 deletions runtime/queries/erlang/highlights.scm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
(attribute
name: (atom) @keyword
(arguments (atom) @namespace)
(#match? @keyword "(module|behaviou?r)"))
(#any-of? @keyword "module" "behaviour" "behavior"))

(attribute
name: (atom) @keyword
Expand Down Expand Up @@ -50,12 +50,20 @@
name: (atom) @keyword
(arguments
(_) @keyword.directive)
(#match? @keyword "ifn?def"))
(#any-of? @keyword "ifndef" "ifdef"))

(attribute
name: (atom) @keyword
module: (atom) @namespace
(#match? @keyword "(spec|callback)"))
(#any-of? @keyword "spec" "callback"))

(attribute
name: (atom) @keyword
(arguments [
(string)
(sigil)
] @comment.block.documentation)
(#any-of? @keyword "doc" "moduledoc"))

; Functions
(function_clause name: (atom) @function)
Expand Down Expand Up @@ -84,7 +92,7 @@
((attribute
name: (atom) @keyword
(stab_clause
pattern: (arguments (variable) @variable.parameter)
pattern: (arguments (variable)? @variable.parameter)
body: (variable)? @variable.parameter))
(#match? @keyword "(spec|callback)"))
; functions
Expand Down
10 changes: 10 additions & 0 deletions runtime/queries/erlang/injections.scm
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,13 @@

((comment (comment_content) @injection.content)
(#set! injection.language "comment"))

; EEP-59 doc attributes use markdown by default.
(attribute
name: (atom) @_attribute
(arguments [
(string (quoted_content) @injection.content)
(sigil (quoted_content) @injection.content)
])
(#set! injection.language "markdown")
(#any-of? @_attribute "doc" "moduledoc"))
2 changes: 1 addition & 1 deletion runtime/queries/erlang/locals.scm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
; Specs and Callbacks
(attribute
(stab_clause
pattern: (arguments (variable) @local.definition)
pattern: (arguments (variable)? @local.definition)
; If a spec uses a variable as the return type (and later a `when` clause to type it):
body: (variable)? @local.definition)) @local.scope

Expand Down

0 comments on commit fdcd461

Please sign in to comment.