mirror of
https://github.com/helix-editor/helix
synced 2026-08-04 14:27:07 +02:00
252 lines
7.4 KiB
Scheme
252 lines
7.4 KiB
Scheme
; Packages
|
|
|
|
(package_identifier) @namespace
|
|
|
|
; Variables
|
|
|
|
(positional_parameter (lowercase_identifier) @variable.parameter)
|
|
(labelled_parameter (label (lowercase_identifier)) @variable.parameter)
|
|
(optional_parameter (optional_label (lowercase_identifier)) @variable.parameter)
|
|
(optional_parameter_with_default (label (lowercase_identifier)) @variable.parameter)
|
|
((positional_parameter (lowercase_identifier) @variable.builtin)
|
|
(#any-of? @variable.builtin "self"))
|
|
((labelled_parameter (label (lowercase_identifier)) @variable.builtin)
|
|
(#any-of? @variable.builtin "self"))
|
|
((optional_parameter (optional_label (lowercase_identifier)) @variable.builtin)
|
|
(#any-of? @variable.builtin "self"))
|
|
((optional_parameter_with_default (label (lowercase_identifier)) @variable.builtin)
|
|
(#any-of? @variable.builtin "self"))
|
|
|
|
(tuple_pattern (lowercase_identifier) @variable)
|
|
(constructor_pattern_argument . (lowercase_identifier) @variable .)
|
|
(constructor_pattern_argument "=" (lowercase_identifier) @variable)
|
|
(constructor_pattern_argument (label (lowercase_identifier) @variable))
|
|
(case_clause (lowercase_identifier) @variable "=>")
|
|
(matrix_case_clause (lowercase_identifier) @variable "=>")
|
|
(let_expression (lowercase_identifier) @variable)
|
|
|
|
(qualified_identifier (lowercase_identifier) @variable)
|
|
((qualified_identifier (lowercase_identifier) @variable.builtin)
|
|
(#any-of? @variable.builtin "self"))
|
|
(qualified_identifier (dot_lowercase_identifier) @variable)
|
|
|
|
(value_definition (lowercase_identifier) @variable)
|
|
(let_mut_expression (lowercase_identifier) @variable)
|
|
(for_in_expression "for" (lowercase_identifier) @variable "in")
|
|
(for_binder (lowercase_identifier) @variable)
|
|
(package_statement_identifier) @variable
|
|
(package_assignment_statement
|
|
name: (package_statement_identifier) @variable)
|
|
|
|
; Constructors
|
|
|
|
(enum_constructor) @constructor
|
|
(constructor_expression (uppercase_identifier) @constructor)
|
|
(constructor_expression (dot_uppercase_identifier) @constructor)
|
|
|
|
; Constants
|
|
|
|
(const_definition (uppercase_identifier) @constant)
|
|
((constructor_expression (uppercase_identifier) @constant)
|
|
(#match? @constant "^[A-Z][A-Z_]+$"))
|
|
((constructor_expression (dot_uppercase_identifier) @constant)
|
|
(#match? @constant "^\.[A-Z][A-Z_]+$"))
|
|
|
|
; Types
|
|
|
|
(type_identifier) @type
|
|
(qualified_type_identifier) @type
|
|
|
|
(enum_definition (identifier) @type)
|
|
(struct_definition (identifier) @type)
|
|
(tuple_struct_definition (identifier) @type)
|
|
(type_definition (identifier) @type)
|
|
(trait_definition (identifier) @type)
|
|
(type_alias_targets (identifier) @type)
|
|
(type_alias_targets (dot_identifier) @type)
|
|
(type_alias_target (identifier) @type)
|
|
(error_type_definition (identifier) @type)
|
|
(trait_alias_targets (identifier) @type)
|
|
(trait_alias_targets (dot_identifier) @type)
|
|
(trait_alias_target (identifier) @type)
|
|
|
|
((qualified_type_identifier) @type.builtin
|
|
(#any-of? @type.builtin
|
|
"Unit" "Bool" "Byte"
|
|
"Int16" "UInt16" "Int" "UInt" "Int64" "UInt64"
|
|
"Float" "Double"
|
|
"FixedArray" "Array" "Bytes" "String" "Error" "Self"))
|
|
|
|
((qualified_type_identifier) @type.builtin
|
|
(#any-of? @type.builtin
|
|
"Eq" "Compare" "Hash" "Show" "Default" "ToJson" "FromJson"))
|
|
|
|
; Fields
|
|
|
|
(struct_field_declaration (lowercase_identifier) @variable.other.member)
|
|
(struct_expression (labeled_expression (lowercase_identifier) @variable.other.member))
|
|
(struct_expression (labeled_expression_pun (lowercase_identifier) @variable.other.member))
|
|
(struct_field_expression (labeled_expression (lowercase_identifier) @variable.other.member))
|
|
(struct_field_expression (labeled_expression_pun (lowercase_identifier) @variable.other.member))
|
|
(struct_pattern (struct_field_pattern (labeled_pattern (lowercase_identifier) @variable.other.member)))
|
|
(struct_pattern (struct_field_pattern (labeled_pattern_pun (lowercase_identifier) @variable.other.member)))
|
|
(access_expression (accessor (dot_identifier) @variable.other.member))
|
|
(constructor_pattern_argument (lowercase_identifier) @variable.other.member "=")
|
|
(apply_expression (constructor_expression) (arguments (argument (labelled_argument (lowercase_identifier) @variable.other.member "="))))
|
|
|
|
; Attributes
|
|
|
|
(attribute) @attribute
|
|
|
|
; Function calls
|
|
|
|
(apply_expression (qualified_identifier (lowercase_identifier) @function))
|
|
(apply_expression (qualified_identifier (dot_lowercase_identifier) @function))
|
|
(package_apply_statement
|
|
name: (package_statement_identifier) @function)
|
|
|
|
; Method calls
|
|
|
|
(method_expression (lowercase_identifier) @function.method)
|
|
(dot_apply_expression (dot_identifier) @function.method)
|
|
(dot_dot_apply_expression (dot_dot_identifier) @function.method)
|
|
|
|
; Function definitions
|
|
|
|
(function_definition (function_identifier (lowercase_identifier) @function))
|
|
(struct_constructor_declaration (lowercase_identifier) @function)
|
|
(function_alias_targets (lowercase_identifier) @function)
|
|
(function_alias_targets (dot_lowercase_identifier) @function)
|
|
(function_alias_target (lowercase_identifier) @function)
|
|
(trait_method_declaration (function_identifier) @function)
|
|
(impl_definition (function_identifier) @function)
|
|
|
|
; Method definitions
|
|
|
|
(function_definition (function_identifier (type_name (qualified_type_identifier)) (lowercase_identifier) @function.method))
|
|
|
|
; Labels
|
|
|
|
(loop_label) @label
|
|
("continue" (label) @label)
|
|
("break" (label) @label)
|
|
(package_argument
|
|
label: (package_statement_identifier) @label)
|
|
(package_argument
|
|
label: (string_literal) @label)
|
|
(package_map_entry
|
|
key: (string_literal) @label)
|
|
(where_clause_field (lowercase_identifier) @label)
|
|
|
|
; Operators
|
|
|
|
[
|
|
"+" "-" "*" "/" "%"
|
|
"<<" ">>" "|" "&" "^"
|
|
"=" "+=" "-=" "*=" "/=" "%="
|
|
"<" ">" ">=" "<=" "==" "!="
|
|
"&&" "||"
|
|
"|>"
|
|
"=>" "->"
|
|
"!" "!!" "?"
|
|
] @operator
|
|
|
|
; Keywords
|
|
|
|
[ (mutability) "mut" ] @keyword.storage.modifier
|
|
|
|
[
|
|
"struct" "enum" "type" "trait" "typealias" "traitalias" "suberror"
|
|
] @keyword.storage.type
|
|
|
|
[
|
|
"pub" "priv" "readonly" "all" "open" "extern"
|
|
] @keyword.storage.modifier
|
|
|
|
[
|
|
"guard" "let" "letrec" "and" "const"
|
|
"with" "as" "is" "lexmatch?" "using" "where" "longest" "nobreak"
|
|
"defer"
|
|
] @keyword
|
|
|
|
"derive" @keyword
|
|
|
|
[ "package" "import" ] @keyword.control.import
|
|
|
|
[ "fn" "test" "impl" "fnalias" ] @keyword.function
|
|
"return" @keyword.control.return
|
|
[ "while" "loop" "for" "break" "continue" "in" ] @keyword.control.repeat
|
|
|
|
[
|
|
"if"
|
|
"else"
|
|
"match"
|
|
] @keyword.control.conditional
|
|
|
|
"async" @keyword
|
|
|
|
[ "try" "raise" "catch" "noraise" ] @keyword.control.exception
|
|
|
|
((lowercase_identifier) @keyword
|
|
(#any-of? @keyword
|
|
"import" "using"
|
|
"proof_assert" "proof_let"
|
|
"defer" "lexmatch" "recur"))
|
|
|
|
((lowercase_identifier) @keyword.control.exception
|
|
(#eq? @keyword.control.exception "except"))
|
|
|
|
; Delimiters
|
|
|
|
[
|
|
";"
|
|
","
|
|
] @punctuation.delimiter
|
|
|
|
":" @punctuation.delimiter
|
|
"::" @punctuation.delimiter
|
|
"." @punctuation.delimiter
|
|
".." @punctuation.delimiter
|
|
|
|
(array_sub_pattern "..") @operator
|
|
(dot_dot_apply_expression (dot_dot_identifier ".." @punctuation.delimiter))
|
|
|
|
[
|
|
"..<"
|
|
"..="
|
|
"..<="
|
|
"..>"
|
|
"..>="
|
|
] @operator
|
|
|
|
[
|
|
"(" ")"
|
|
"{" "}"
|
|
"[" "]"
|
|
] @punctuation.bracket
|
|
|
|
; Literals
|
|
|
|
(string_interpolation) @string
|
|
(string_literal) @string
|
|
(multiline_string_literal) @string
|
|
(escape_sequence) @constant.character.escape
|
|
|
|
(interpolator
|
|
"\\{" @punctuation.special
|
|
"}" @punctuation.special)
|
|
|
|
(integer_literal) @constant.numeric.integer
|
|
(float_literal) @constant.numeric.float
|
|
(boolean_literal) @constant.builtin.boolean
|
|
(char_literal) @constant.character
|
|
|
|
; Comments
|
|
|
|
(comment) @comment
|
|
(block_comment) @comment.block
|
|
|
|
; Errors
|
|
|
|
(ERROR) @error
|