diff options
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/queries/erlang/highlights.scm | 118 | ||||
-rw-r--r-- | runtime/queries/erlang/injections.scm | 2 |
2 files changed, 120 insertions, 0 deletions
diff --git a/runtime/queries/erlang/highlights.scm b/runtime/queries/erlang/highlights.scm new file mode 100644 index 00000000..fc742f3a --- /dev/null +++ b/runtime/queries/erlang/highlights.scm @@ -0,0 +1,118 @@ +; Attributes +; module declaration +(attribute + name: (atom) @keyword + (arguments (atom) @module) + (#eq? @keyword "module")) + +(attribute + name: (atom) @keyword + (arguments + . + (atom) @module) + (#eq? @keyword "import")) + +(attribute + name: (atom) @keyword + (arguments + . + (atom) @type + [ + (tuple (atom) @variable.other.member) + (tuple + (binary_operator + left: (atom) @variable.other.member + operator: "=")) + (tuple + (binary_operator + left: + (binary_operator + left: (atom) @variable.other.member + operator: "=") + operator: "::")) + ]) + (#eq? @keyword "record")) + +(attribute + name: (atom) @keyword + (arguments + . + [ + (atom) @keyword.directive + (variable) @keyword.directive + (call + function: + [(variable) (atom)] @keyword.directive) + ]) + (#eq? @keyword "define")) + +(attribute + name: (atom) @keyword + module: (atom) @module + (#eq? @keyword "spec")) + +; 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 + (binary_operator + left: (atom) @variable.other.member + operator: "=")) + +(record field: (atom) @variable.other.member) +(record name: (atom) @type) + +; Keywords +((attribute name: (atom) @keyword) + (#match? + @keyword + "^(define|export|export_type|include|include_lib|ifdef|ifndef|if|elif|else|endif|vsn|on_load|behaviour|record|file|type|opaque|spec)$")) + +["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after"] @keyword + +; Operators +(binary_operator + left: (atom) @function + operator: "/" + right: (integer) @constant.numeric.integer) + +(binary_operator operator: _ @operator) +(unary_operator operator: _ @operator) +["/" ":" "#" "->"] @operator + +; Comments +((variable) @comment.discard + (#match? @comment.discard "^_")) + +(tripledot) @comment.discard + +(comment) @comment + +; Macros +(macro + "?"+ @keyword.directive + name: (_) @keyword.directive) + +; Basic types +(variable) @variable +[ + (atom) + (quoted_atom) +] @string.special.symbol +(string) @string +(character) @constant.character + +(integer) @constant.numeric.integer +(float) @constant.numeric.float + +; Punctuation +["," "." "-" ";"] @punctuation.delimiter +["(" ")" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket + +; (ERROR) @error diff --git a/runtime/queries/erlang/injections.scm b/runtime/queries/erlang/injections.scm new file mode 100644 index 00000000..321c90ad --- /dev/null +++ b/runtime/queries/erlang/injections.scm @@ -0,0 +1,2 @@ +((comment) @injection.content + (#set! injection.language "comment")) |