Add parameter highlights to Erlang
This doesn't work robustly (within pattern matches). Only regular bindings are highlighted as parameters. In order to highlight all parameters even in matches, we would need an arbitrary nesting operator in queries which doesn't exist yet in tree-sitter.
This commit is contained in:
parent
452f7d071c
commit
5a1bed2b70
@ -65,6 +65,37 @@
|
|||||||
(function_capture module: (atom) @namespace)
|
(function_capture module: (atom) @namespace)
|
||||||
(function_capture function: (atom) @function)
|
(function_capture function: (atom) @function)
|
||||||
|
|
||||||
|
; Ignored variables
|
||||||
|
((variable) @comment.discard
|
||||||
|
(#match? @comment.discard "^_"))
|
||||||
|
|
||||||
|
; Parameters
|
||||||
|
; specs
|
||||||
|
((attribute
|
||||||
|
name: (atom) @keyword
|
||||||
|
(stab_clause
|
||||||
|
pattern: (arguments (variable) @variable.parameter)
|
||||||
|
body: (variable)? @variable.parameter))
|
||||||
|
(#match? @keyword "(spec|callback)"))
|
||||||
|
; functions
|
||||||
|
(function_clause pattern: (arguments (variable) @variable.parameter))
|
||||||
|
; anonymous functions
|
||||||
|
(stab_clause pattern: (arguments (variable) @variable.parameter))
|
||||||
|
; parametric types
|
||||||
|
((attribute
|
||||||
|
name: (atom) @keyword
|
||||||
|
(arguments
|
||||||
|
(binary_operator
|
||||||
|
left: (call (arguments (variable) @variable.parameter))
|
||||||
|
operator: "::")))
|
||||||
|
(#match? @keyword "(type|opaque)"))
|
||||||
|
; macros
|
||||||
|
((attribute
|
||||||
|
name: (atom) @keyword
|
||||||
|
(arguments
|
||||||
|
(call (arguments (variable) @variable.parameter))))
|
||||||
|
(#eq? @keyword "define"))
|
||||||
|
|
||||||
; Records
|
; Records
|
||||||
(record_content
|
(record_content
|
||||||
(binary_operator
|
(binary_operator
|
||||||
@ -105,9 +136,6 @@
|
|||||||
name: (_) @keyword.directive)
|
name: (_) @keyword.directive)
|
||||||
|
|
||||||
; Comments
|
; Comments
|
||||||
((variable) @comment.discard
|
|
||||||
(#match? @comment.discard "^_"))
|
|
||||||
|
|
||||||
(tripledot) @comment.discard
|
(tripledot) @comment.discard
|
||||||
|
|
||||||
[(comment) (line_comment) (shebang)] @comment
|
[(comment) (line_comment) (shebang)] @comment
|
||||||
|
30
runtime/queries/erlang/locals.scm
Normal file
30
runtime/queries/erlang/locals.scm
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
; Specs and Callbacks
|
||||||
|
(attribute
|
||||||
|
(stab_clause
|
||||||
|
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
|
||||||
|
|
||||||
|
; parametric `-type`s
|
||||||
|
((attribute
|
||||||
|
name: (atom) @_type
|
||||||
|
(arguments
|
||||||
|
(binary_operator
|
||||||
|
left: (call (arguments (variable) @local.definition))
|
||||||
|
operator: "::") @local.scope))
|
||||||
|
(#match? @_type "(type|opaque)"))
|
||||||
|
|
||||||
|
; macros
|
||||||
|
((attribute
|
||||||
|
name: (atom) @_define
|
||||||
|
(arguments
|
||||||
|
(call (arguments (variable) @local.definition)))) @local.scope
|
||||||
|
(#eq? @_define "define"))
|
||||||
|
|
||||||
|
; `fun`s
|
||||||
|
(anonymous_function (stab_clause pattern: (arguments (variable) @local.definition))) @local.scope
|
||||||
|
|
||||||
|
; Ordinary functions
|
||||||
|
(function_clause pattern: (arguments (variable) @local.definition)) @local.scope
|
||||||
|
|
||||||
|
(variable) @local.reference
|
Loading…
Reference in New Issue
Block a user