
Hi, I bump the tree-sitter-erlang to a newest version and sync the hightlight query to fix long standing issue in the Zed erlang extension about incorrect function highlighting, not support the triple quote string and many more. Release Notes: - N/A Signed-off-by: Thanabodee Charoenpiriyakij <wingyminus@gmail.com>
231 lines
4.3 KiB
Scheme
231 lines
4.3 KiB
Scheme
;; Copyright (c) Facebook, Inc. and its affiliates.
|
|
;;
|
|
;; Licensed under the Apache License, Version 2.0 (the "License");
|
|
;; you may not use this file except in compliance with the License.
|
|
;; You may obtain a copy of the License at
|
|
;;
|
|
;; http://www.apache.org/licenses/LICENSE-2.0
|
|
;;
|
|
;; Unless required by applicable law or agreed to in writing, software
|
|
;; distributed under the License is distributed on an "AS IS" BASIS,
|
|
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
;; See the License for the specific language governing permissions and
|
|
;; limitations under the License.
|
|
;; ---------------------------------------------------------------------
|
|
|
|
;; Based initially on the contents of https://github.com/WhatsApp/tree-sitter-erlang/issues/2 by @Wilfred
|
|
;; and https://github.com/the-mikedavis/tree-sitter-erlang/blob/main/queries/highlights.scm
|
|
;;
|
|
;; The tests are also based on those in
|
|
;; https://github.com/the-mikedavis/tree-sitter-erlang/tree/main/test/highlight
|
|
;;
|
|
|
|
;; Last match wins in this file.
|
|
;; As of https://github.com/tree-sitter/tree-sitter/blob/master/CHANGELOG.md#breaking-1
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Primitive types
|
|
(string) @string
|
|
(char) @constant
|
|
(integer) @number
|
|
(var) @variable
|
|
(atom) @string.special.symbol
|
|
|
|
;;; Comments
|
|
((var) @comment.discard
|
|
(#match? @comment.discard "^_"))
|
|
|
|
(dotdotdot) @comment.discard
|
|
(comment) @comment
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Functions
|
|
(fa fun: (atom) @function)
|
|
(type_name name: (atom) @function)
|
|
(call expr: (atom) @function)
|
|
(function_clause name: (atom) @function)
|
|
(internal_fun fun: (atom) @function)
|
|
|
|
;; This is a fudge, we should check that the operator is '/'
|
|
;; But our grammar does not (currently) provide it
|
|
(binary_op_expr lhs: (atom) @function rhs: (integer))
|
|
|
|
;; Others
|
|
(remote_module module: (atom) @module)
|
|
(remote fun: (atom) @function)
|
|
(macro_call_expr name: (var) @constant)
|
|
(macro_call_expr name: (var) @keyword.directive args: (_) )
|
|
(macro_call_expr name: (atom) @keyword.directive)
|
|
(record_field_name name: (atom) @property)
|
|
(record_name name: (atom) @type)
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Attributes
|
|
|
|
;; module attribute
|
|
(module_attribute
|
|
name: (atom) @module)
|
|
|
|
;; behaviour
|
|
(behaviour_attribute name: (atom) @module)
|
|
|
|
;; export
|
|
|
|
;; Import attribute
|
|
(import_attribute
|
|
module: (atom) @module)
|
|
|
|
;; export_type
|
|
|
|
;; optional_callbacks
|
|
|
|
;; compile
|
|
(compile_options_attribute
|
|
options: (tuple
|
|
expr: (atom)
|
|
expr: (list
|
|
exprs: (binary_op_expr
|
|
lhs: (atom)
|
|
rhs: (integer)))))
|
|
|
|
;; file attribute
|
|
|
|
;; record
|
|
(record_decl name: (atom) @type)
|
|
(record_decl name: (macro_call_expr name: (var) @constant))
|
|
(record_field name: (atom) @property)
|
|
|
|
;; type alias
|
|
|
|
;; opaque
|
|
|
|
;; Spec attribute
|
|
(spec fun: (atom) @function)
|
|
(spec
|
|
module: (module name: (atom) @module)
|
|
fun: (atom) @function)
|
|
|
|
;; callback
|
|
(callback fun: (atom) @function)
|
|
|
|
;; wild attribute
|
|
(wild_attribute name: (attr_name name: (atom) @keyword))
|
|
|
|
;; fun decl
|
|
|
|
;; include/include_lib
|
|
|
|
;; ifdef/ifndef
|
|
(pp_ifdef name: (_) @keyword.directive)
|
|
(pp_ifndef name: (_) @keyword.directive)
|
|
|
|
;; define
|
|
(pp_define
|
|
lhs: (macro_lhs
|
|
name: (var) @constant))
|
|
(pp_define
|
|
lhs: (macro_lhs
|
|
name: (_) @keyword.directive
|
|
args: (var_args args: (var))))
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;; Reserved words
|
|
[ "after"
|
|
"and"
|
|
"band"
|
|
"begin"
|
|
"behavior"
|
|
"behaviour"
|
|
"bnot"
|
|
"bor"
|
|
"bsl"
|
|
"bsr"
|
|
"bxor"
|
|
"callback"
|
|
"case"
|
|
"catch"
|
|
"compile"
|
|
"define"
|
|
"deprecated"
|
|
"div"
|
|
"elif"
|
|
"else"
|
|
"end"
|
|
"endif"
|
|
"export"
|
|
"export_type"
|
|
"file"
|
|
"fun"
|
|
"if"
|
|
"ifdef"
|
|
"ifndef"
|
|
"import"
|
|
"include"
|
|
"include_lib"
|
|
"maybe"
|
|
"module"
|
|
"of"
|
|
"opaque"
|
|
"optional_callbacks"
|
|
"or"
|
|
"receive"
|
|
"record"
|
|
"spec"
|
|
"try"
|
|
"type"
|
|
"undef"
|
|
"unit"
|
|
"when"
|
|
"xor"] @keyword
|
|
|
|
["andalso" "orelse"] @keyword.operator
|
|
|
|
;; Punctuation
|
|
["," "." ";"] @punctuation.delimiter
|
|
["(" ")" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
|
|
|
|
;; Operators
|
|
["!"
|
|
"->"
|
|
"<-"
|
|
"#"
|
|
"::"
|
|
"|"
|
|
":"
|
|
"="
|
|
"||"
|
|
|
|
"+"
|
|
"-"
|
|
"bnot"
|
|
"not"
|
|
|
|
"/"
|
|
"*"
|
|
"div"
|
|
"rem"
|
|
"band"
|
|
"and"
|
|
|
|
"+"
|
|
"-"
|
|
"bor"
|
|
"bxor"
|
|
"bsl"
|
|
"bsr"
|
|
"or"
|
|
"xor"
|
|
|
|
"++"
|
|
"--"
|
|
|
|
"=="
|
|
"/="
|
|
"=<"
|
|
"<"
|
|
">="
|
|
">"
|
|
"=:="
|
|
"=/="
|
|
] @operator
|