Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'runtime/queries/erlang/highlights.scm')
-rw-r--r--runtime/queries/erlang/highlights.scm165
1 files changed, 59 insertions, 106 deletions
diff --git a/runtime/queries/erlang/highlights.scm b/runtime/queries/erlang/highlights.scm
index 13b57e95..1e075349 100644
--- a/runtime/queries/erlang/highlights.scm
+++ b/runtime/queries/erlang/highlights.scm
@@ -1,73 +1,24 @@
-; Comments
-(tripledot) @comment.unused
-
-[(comment) (line_comment) (shebang)] @comment
-
-; Basic types
-(variable) @variable
-(atom) @string.special.symbol
-((atom) @constant.builtin.boolean
- (#match? @constant.builtin.boolean "^(true|false)$"))
-[(string) (sigil)] @string
-(character) @constant.character
-(escape_sequence) @constant.character.escape
-
-(integer) @constant.numeric.integer
-(float) @constant.numeric.float
-
-; Punctuation
-["," "." "-" ";"] @punctuation.delimiter
-["(" ")" "#" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
-
-; Operators
-(binary_operator operator: _ @operator)
-(unary_operator operator: _ @operator)
-["/" ":" "->"] @operator
-
-(binary_operator
- left: (atom) @function
- operator: "/"
- right: (integer) @constant.numeric.integer)
-
-((binary_operator operator: _ @keyword.operator)
- (#match? @keyword.operator "^\\w+$"))
-((unary_operator operator: _ @keyword.operator)
- (#match? @keyword.operator "^\\w+$"))
-
-; Functions
-(function_clause name: (atom) @function)
-(call module: (atom) @namespace)
-(call function: (atom) @function)
-(stab_clause name: (atom) @function)
-(function_capture module: (atom) @namespace)
-(function_capture function: (atom) @function)
-
-; Keywords
-(attribute name: (atom) @keyword)
-
-["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after" "begin" "maybe"] @keyword
-
; Attributes
; module declaration
(attribute
name: (atom) @keyword
- (arguments (atom) @namespace)
- (#any-of? @keyword "module" "behaviour" "behavior"))
+ (arguments (atom) @module)
+ (#eq? @keyword "module"))
(attribute
name: (atom) @keyword
(arguments
.
- (atom) @namespace)
+ (atom) @module)
(#eq? @keyword "import"))
(attribute
name: (atom) @keyword
(arguments
.
- [(atom) @type (macro)]
+ (atom) @type
[
- (tuple (atom)? @variable.other.member)
+ (tuple (atom) @variable.other.member)
(tuple
(binary_operator
left: (atom) @variable.other.member
@@ -87,8 +38,8 @@
(arguments
.
[
- (atom) @constant
- (variable) @constant
+ (atom) @keyword.directive
+ (variable) @keyword.directive
(call
function:
[(variable) (atom)] @keyword.directive)
@@ -99,57 +50,20 @@
name: (atom) @keyword
(arguments
(_) @keyword.directive)
- (#any-of? @keyword "ifndef" "ifdef"))
-
-(attribute
- name: (atom) @keyword
- module: (atom) @namespace
- (#any-of? @keyword "spec" "callback"))
+ (#match? @keyword "ifn?def"))
(attribute
name: (atom) @keyword
- (arguments [
- (string)
- (sigil)
- ] @comment.block.documentation)
- (#any-of? @keyword "doc" "moduledoc"))
-
-; Macros
-(macro
- "?"+ @keyword.directive
- name: (_) @keyword.directive)
+ module: (atom) @module
+ (#eq? @keyword "(spec|callback)"))
-(macro
- "?"+ @constant
- name: (_) @constant
- !arguments)
-
-; 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"))
+; Functions
+(function name: (atom) @function)
+(call module: (atom) @module)
+(call function: (atom) @function)
+(stab_clause name: (atom) @function)
+(function_capture module: (atom) @module)
+(function_capture function: (atom) @function)
; Records
(record_content
@@ -160,6 +74,45 @@
(record field: (atom) @variable.other.member)
(record name: (atom) @type)
-; Ignored variables
-((variable) @comment.unused
- (#match? @comment.unused "^_"))
+; Keywords
+(attribute name: (atom) @keyword)
+
+["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after" "begin" "maybe"] @keyword
+
+; Operators
+(binary_operator
+ left: (atom) @function
+ operator: "/"
+ right: (integer) @constant.numeric.integer)
+
+(binary_operator operator: _ @operator)
+(unary_operator operator: _ @operator)
+["/" ":" "#" "->"] @operator
+
+(tripledot) @comment.discard
+
+(comment) @comment
+
+; Macros
+(macro
+ "?"+ @keyword.directive
+ name: (_) @keyword.directive)
+
+; Comments
+((variable) @comment.discard
+ (#match? @comment.discard "^_"))
+
+; Basic types
+(variable) @variable
+(atom) @string.special.symbol
+(string) @string
+(character) @constant.character
+
+(integer) @constant.numeric.integer
+(float) @constant.numeric.float
+
+; Punctuation
+["," "." "-" ";"] @punctuation.delimiter
+["(" ")" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
+
+; (ERROR) @error