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.scm | 165 |
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 |