260 lines · 3.7 KB · Scheme
RawDownload
(identifier) @variable (metavariable) @variable (type_identifier) @type (fragment_specifier) @type (primitive_type) @type.builtin (self) @variable.special (field_identifier) @property (shorthand_field_identifier) @property (trait_item  name: (type_identifier) @type.interface) (impl_item  trait: (type_identifier) @type.interface) (abstract_type  trait: (type_identifier) @type.interface) (dynamic_type  trait: (type_identifier) @type.interface) (trait_bounds  (type_identifier) @type.interface) (call_expression  function: [    (identifier) @function    (scoped_identifier      name: (identifier) @function)    (field_expression      field: (field_identifier) @function.method)  ]) (generic_function  function: [    (identifier) @function    (scoped_identifier      name: (identifier) @function)    (field_expression      field: (field_identifier) @function.method)  ]) (function_item  name: (identifier) @function.definition) (function_signature_item  name: (identifier) @function.definition) (macro_invocation  macro: [    (identifier) @function.special    (scoped_identifier      name: (identifier) @function.special)  ]) (macro_invocation  "!" @function.special) (macro_definition  name: (identifier) @function.special.definition) ; Identifier conventions; Assume uppercase names are types/enum-constructors((identifier) @type  (#match? @type "^[A-Z]")) ; Assume all-caps names are constants((identifier) @constant  (#match? @constant "^_*[A-Z][A-Z\\d_]*$")) ; Ensure enum variants are highlighted correctly regardless of naming convention(enum_variant  name: (identifier) @type) [  "("  ")"  "{"  "}"  "["  "]"] @punctuation.bracket (_  .  "<" @punctuation.bracket  ">" @punctuation.bracket) [  "."  ";"  ","  "::"] @punctuation.delimiter "#" @punctuation.special [  "as"  "async"  "const"  "default"  "dyn"  "enum"  "extern"  "fn"  "impl"  "let"  "macro_rules!"  "mod"  "move"  "pub"  "raw"  "ref"  "static"  "struct"  "for"  "trait"  "type"  "union"  "unsafe"  "use"  "where"  (crate)  (mutable_specifier)  (super)] @keyword [  "await"  "break"  "continue"  "else"  "if"  "in"  "loop"  "match"  "return"  "while"  "yield"] @keyword.control (for_expression  "for" @keyword.control) [  (string_literal)  (raw_string_literal)  (char_literal)] @string (escape_sequence) @string.escape [  (integer_literal)  (float_literal)] @number (boolean_literal) @boolean [  (line_comment)  (block_comment)] @comment [  (line_comment    (doc_comment))  (block_comment    (doc_comment))] @comment.doc [  "!="  "%"  "%="  "&"  "&="  "&&"  "*"  "*="  "+"  "+="  "-"  "-="  "->"  ".."  "..="  "..."  "/="  ":"  "<<"  "<<="  "<"  "<="  "="  "=="  "=>"  ">"  ">="  ">>"  ">>="  "@"  "^"  "^="  "|"  "|="  "||"  "?"] @operator ; Avoid highlighting these as operators when used in doc comments.(unary_expression  "!" @operator) operator: "/" @operator (lifetime  "'" @lifetime  (identifier) @lifetime) (parameter  (identifier) @variable.parameter) (attribute_item  (attribute    [      (identifier) @attribute      (scoped_identifier        name: (identifier) @attribute)      (token_tree        (identifier) @attribute        (#match? @attribute "^[a-z\\d_]*$"))      (token_tree        (identifier) @none        "::"        (#match? @none "^[a-z\\d_]*$"))    ])) (inner_attribute_item  (attribute    [      (identifier) @attribute      (scoped_identifier        name: (identifier) @attribute)      (token_tree        (identifier) @attribute        (#match? @attribute "^[a-z\\d_]*$"))      (token_tree        (identifier) @none        "::"        (#match? @none "^[a-z\\d_]*$"))    ]))