mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 01:16:18 +04:00
Merge d15fab75ea
into b8313da5a8
This commit is contained in:
commit
d6a75bd14c
@ -2481,15 +2481,17 @@ fn next(&mut self) -> Option<Self::Item> {
|
||||
}
|
||||
}
|
||||
|
||||
// Once a highlighting pattern is found for the current node, skip over
|
||||
// any later highlighting patterns that also match this node. Captures
|
||||
// Use the last capture found for the current node, skipping over any
|
||||
// highlight patterns that also match this node. Captures
|
||||
// for a given node are ordered by pattern index, so these subsequent
|
||||
// captures are guaranteed to be for highlighting, not injections or
|
||||
// local variables.
|
||||
while let Some((next_match, next_capture_index)) = captures.peek() {
|
||||
let next_capture = next_match.captures[*next_capture_index];
|
||||
if next_capture.node == capture.node {
|
||||
captures.next();
|
||||
match_.remove();
|
||||
capture = next_capture;
|
||||
match_ = captures.next().unwrap().0;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
@ -1172,7 +1172,7 @@ indent = { tab-width = 4, unit = " " }
|
||||
|
||||
[[grammar]]
|
||||
name = "julia"
|
||||
source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "8fb38abff74652c4faddbf04d2d5bbbc6b4bae25" }
|
||||
source = { git = "https://github.com/tree-sitter/tree-sitter-julia", rev = "e84f10db8eeb8b9807786bfc658808edaa1b4fa2" }
|
||||
|
||||
[[language]]
|
||||
name = "java"
|
||||
@ -1688,7 +1688,7 @@ language-servers = [ "docker-langserver" ]
|
||||
|
||||
[[grammar]]
|
||||
name = "dockerfile"
|
||||
source = { git = "https://github.com/camdencheek/tree-sitter-dockerfile", rev = "8ee3a0f7587b2bd8c45c8cb7d28bd414604aec62" }
|
||||
source = { git = "https://github.com/camdencheek/tree-sitter-dockerfile", rev = "868e44ce378deb68aac902a9db68ff82d2299dd0" }
|
||||
|
||||
[[language]]
|
||||
name = "docker-compose"
|
||||
@ -1948,7 +1948,7 @@ indent = { tab-width = 4, unit = " " }
|
||||
|
||||
[[grammar]]
|
||||
name = "ron"
|
||||
source = { git = "https://github.com/zee-editor/tree-sitter-ron", rev = "7762d709a0f7c1f9e269d0125a2e8a7a69006146" }
|
||||
source = { git = "https://github.com/tree-sitter-grammars/tree-sitter-ron", rev = "78938553b93075e638035f624973083451b29055" }
|
||||
|
||||
[[language]]
|
||||
name = "robot"
|
||||
@ -2439,7 +2439,7 @@ formatter = { command = "cue", args = ["fmt", "-"] }
|
||||
|
||||
[[grammar]]
|
||||
name = "cue"
|
||||
source = { git = "https://github.com/eonpatapon/tree-sitter-cue", rev = "61843e3beebf19417e4fede4e8be4df1084317ad" }
|
||||
source = { git = "https://github.com/eonpatapon/tree-sitter-cue", rev = "8a5f273bfa281c66354da562f2307c2d394b6c81" }
|
||||
|
||||
[[language]]
|
||||
name = "slint"
|
||||
|
@ -109,14 +109,15 @@
|
||||
(number) @constant.numeric
|
||||
(string) @string
|
||||
|
||||
(func_call name: (identifier) @function)
|
||||
(func_def name: (identifier) @function)
|
||||
|
||||
(field_ref (_) @variable)
|
||||
[
|
||||
(identifier)
|
||||
(field_ref)
|
||||
] @variable
|
||||
|
||||
(func_call name: (identifier) @function)
|
||||
(func_def name: (identifier) @function)
|
||||
|
||||
(field_ref (_) @variable)
|
||||
|
||||
(ns_qualified_name "::" @operator)
|
||||
(ns_qualified_name (namespace) @namespace)
|
||||
|
@ -12,7 +12,10 @@
|
||||
|
||||
(command_name) @function
|
||||
|
||||
(variable_name) @variable.other.member
|
||||
(variable_name) @variable
|
||||
|
||||
((variable_name) @constant
|
||||
(#match? @constant "^[A-Z][A-Z_0-9]*$"))
|
||||
|
||||
[
|
||||
"if"
|
||||
@ -48,6 +51,9 @@
|
||||
|
||||
(comment) @comment
|
||||
|
||||
((word) @constant.builtin.boolean
|
||||
(#any-of? @constant.builtin.boolean "true" "false"))
|
||||
|
||||
(function_definition name: (word) @function)
|
||||
|
||||
(file_descriptor) @constant.numeric.integer
|
||||
@ -56,7 +62,7 @@
|
||||
(command_substitution)
|
||||
(process_substitution)
|
||||
(expansion)
|
||||
]@embedded
|
||||
] @embedded
|
||||
|
||||
[
|
||||
"$"
|
||||
|
@ -1,3 +1,9 @@
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
((identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z\\d_]*$"))
|
||||
|
||||
"sizeof" @keyword
|
||||
|
||||
[
|
||||
@ -109,6 +115,12 @@
|
||||
(char_literal) @constant.character
|
||||
(escape_sequence) @constant.character.escape
|
||||
|
||||
(field_identifier) @variable.other.member
|
||||
(statement_identifier) @label
|
||||
(type_identifier) @type
|
||||
(primitive_type) @type.builtin
|
||||
(sized_type_specifier) @type.builtin
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
(call_expression
|
||||
@ -128,15 +140,4 @@
|
||||
(attribute
|
||||
name: (identifier) @attribute)
|
||||
|
||||
(field_identifier) @variable.other.member
|
||||
(statement_identifier) @label
|
||||
(type_identifier) @type
|
||||
(primitive_type) @type.builtin
|
||||
(sized_type_specifier) @type.builtin
|
||||
|
||||
((identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z\\d_]*$"))
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(comment) @comment
|
||||
|
@ -1,7 +1,9 @@
|
||||
; Preproc
|
||||
|
||||
(unique_id) @keyword.directive
|
||||
(top_level_annotation_body) @keyword.directive
|
||||
[
|
||||
(unique_id)
|
||||
(top_level_annotation_body)
|
||||
] @keyword.directive
|
||||
|
||||
; Includes
|
||||
|
||||
@ -9,6 +11,7 @@
|
||||
"import"
|
||||
"$import"
|
||||
"embed"
|
||||
"using"
|
||||
] @keyword.control.import
|
||||
|
||||
(import_path) @string
|
||||
@ -84,10 +87,10 @@
|
||||
"union"
|
||||
] @keyword.storage.type
|
||||
|
||||
"extends" @keyword
|
||||
|
||||
[
|
||||
"extends"
|
||||
"namespace"
|
||||
"using"
|
||||
(annotation_target)
|
||||
] @special
|
||||
|
||||
|
@ -22,16 +22,10 @@
|
||||
"in"
|
||||
] @keyword
|
||||
|
||||
; Function calls
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(member_call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
; Identifiers
|
||||
|
||||
(identifier) @variable.other.member
|
||||
|
||||
(select_expression
|
||||
operand: (identifier) @type)
|
||||
|
||||
@ -39,7 +33,13 @@
|
||||
operand: (select_expression
|
||||
member: (identifier) @type))
|
||||
|
||||
(identifier) @variable.other.member
|
||||
; Function calls
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(member_call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
; Literals
|
||||
|
||||
|
@ -10,6 +10,14 @@
|
||||
|
||||
(comment) @comment
|
||||
|
||||
;; other symbols
|
||||
(sym_lit) @variable
|
||||
|
||||
;; other calls
|
||||
(list_lit
|
||||
.
|
||||
(sym_lit) @function)
|
||||
|
||||
;; metadata experiment
|
||||
(meta_lit
|
||||
marker: "^" @punctuation)
|
||||
@ -61,20 +69,12 @@
|
||||
((sym_lit) @operator
|
||||
(#match? @operator "^%"))
|
||||
|
||||
;; other calls
|
||||
(list_lit
|
||||
.
|
||||
(sym_lit) @function)
|
||||
|
||||
;; interop-ish
|
||||
(list_lit
|
||||
.
|
||||
(sym_lit) @function.method
|
||||
(#match? @function.method "^\\."))
|
||||
|
||||
;; other symbols
|
||||
(sym_lit) @variable
|
||||
|
||||
;; quote
|
||||
(quoting_lit) @constant.character.escape
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
; inherits: c
|
||||
|
||||
; Functions
|
||||
|
||||
; These casts are parsed as function calls, but are not.
|
||||
@ -132,5 +134,3 @@
|
||||
; Strings
|
||||
|
||||
(raw_string_literal) @string
|
||||
|
||||
; inherits: c
|
||||
|
@ -1,12 +1,46 @@
|
||||
(package_clause "package" @keyword.control.import)
|
||||
; Includes
|
||||
[
|
||||
"package"
|
||||
"import"
|
||||
] @keyword.control.import
|
||||
|
||||
(package_identifier) @variable
|
||||
; Namespaces
|
||||
(package_identifier) @namespace
|
||||
|
||||
(import_declaration "import" @keyword.control.import)
|
||||
(import_spec
|
||||
[
|
||||
"."
|
||||
"_"
|
||||
] @punctuation.special)
|
||||
|
||||
[
|
||||
"!"
|
||||
(attr_path)
|
||||
(package_path)
|
||||
] @string.special.url ; In attributes
|
||||
|
||||
; Attributes
|
||||
(attribute) @attribute
|
||||
|
||||
; Conditionals
|
||||
"if" @keyword.control.conditional
|
||||
|
||||
; Repeats
|
||||
"for" @keyword.control.repeat
|
||||
|
||||
(for_clause
|
||||
"_" @punctuation.special)
|
||||
|
||||
; Keywords
|
||||
"let" @keyword
|
||||
|
||||
"in" @keyword.operator
|
||||
|
||||
; Operators
|
||||
[
|
||||
"+"
|
||||
"-"
|
||||
"*"
|
||||
"/"
|
||||
"|"
|
||||
"&"
|
||||
"||"
|
||||
@ -19,92 +53,103 @@
|
||||
">="
|
||||
"=~"
|
||||
"!~"
|
||||
"+"
|
||||
"-"
|
||||
"*"
|
||||
"/"
|
||||
"!"
|
||||
"="
|
||||
] @operator
|
||||
|
||||
(unary_expression "*" @operator.default)
|
||||
; Fields & Properties
|
||||
(field
|
||||
(label
|
||||
(identifier) @variable.other.member))
|
||||
|
||||
(unary_expression "=~" @operator.regexp)
|
||||
(selector_expression
|
||||
(_)
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
(unary_expression "!~" @operator.regexp)
|
||||
; Functions
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(binary_expression _ "&" @operator.unify _)
|
||||
(call_expression
|
||||
function: (selector_expression
|
||||
(_)
|
||||
(identifier) @function))
|
||||
|
||||
(binary_expression _ "|" @operator.disjunct _)
|
||||
(call_expression
|
||||
function: (builtin_function) @function)
|
||||
|
||||
(builtin) @function.builtin
|
||||
(builtin_function) @function.builtin
|
||||
|
||||
(qualified_identifier) @function.builtin
|
||||
; Variables
|
||||
(identifier) @variable
|
||||
|
||||
(let_clause "let" @keyword.storage.type)
|
||||
; Types
|
||||
(primitive_type) @type.builtin
|
||||
|
||||
(for_clause "for" @keyword.control.repeat)
|
||||
(for_clause "in" @keyword.control.repeat)
|
||||
|
||||
(guard_clause "if" @keyword.control.conditional)
|
||||
|
||||
(comment) @comment
|
||||
((identifier) @type
|
||||
(#match? @type "^_?#"))
|
||||
|
||||
[
|
||||
(string_type)
|
||||
(simple_string_lit)
|
||||
(multiline_string_lit)
|
||||
(bytes_type)
|
||||
(simple_bytes_lit)
|
||||
(multiline_bytes_lit)
|
||||
] @string
|
||||
|
||||
[
|
||||
(number_type)
|
||||
(int_lit)
|
||||
(int_type)
|
||||
(uint_type)
|
||||
] @constant.numeric.integer
|
||||
|
||||
[
|
||||
(float_lit)
|
||||
(float_type)
|
||||
] @constant.numeric.float
|
||||
|
||||
[
|
||||
(bool_type)
|
||||
(true)
|
||||
(false)
|
||||
] @constant.builtin.boolean
|
||||
|
||||
(null) @constant.builtin
|
||||
|
||||
(ellipsis) @punctuation.bracket
|
||||
(slice_type)
|
||||
(pointer_type)
|
||||
] @type ; In attributes
|
||||
|
||||
; Punctuation
|
||||
[
|
||||
","
|
||||
":"
|
||||
] @punctuation.delimiter
|
||||
|
||||
[
|
||||
"("
|
||||
")"
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
"["
|
||||
"]"
|
||||
"("
|
||||
")"
|
||||
"<"
|
||||
">"
|
||||
] @punctuation.bracket
|
||||
|
||||
(interpolation "\\(" @punctuation.bracket (_) ")" @punctuation.bracket) @variable.other.member
|
||||
[
|
||||
(ellipsis)
|
||||
"?"
|
||||
] @punctuation.special
|
||||
|
||||
(field (label (identifier) @variable.other.member))
|
||||
; Literals
|
||||
(string) @string
|
||||
|
||||
(
|
||||
(identifier) @keyword.storage.type
|
||||
(#match? @keyword.storage.type "^#")
|
||||
)
|
||||
[
|
||||
(escape_char)
|
||||
(escape_unicode)
|
||||
] @constant.character.escape
|
||||
|
||||
(field (label alias: (identifier) @label))
|
||||
(number) @constant.numeric
|
||||
|
||||
(let_clause left: (identifier) @label)
|
||||
(float) @constant.numeric.float
|
||||
|
||||
(si_unit
|
||||
(float)
|
||||
(_) @string.special.symbol)
|
||||
|
||||
(attribute (identifier) @tag)
|
||||
(boolean) @constant.builtin.boolean
|
||||
|
||||
[
|
||||
(null)
|
||||
(top)
|
||||
(bottom)
|
||||
] @constant.builtin
|
||||
|
||||
; Interpolations
|
||||
(interpolation
|
||||
"\\(" @punctuation.special
|
||||
(_)
|
||||
")" @punctuation.special)
|
||||
|
||||
(interpolation
|
||||
"\\("
|
||||
(identifier) @variable
|
||||
")")
|
||||
|
||||
; Comments
|
||||
(comment) @comment
|
||||
|
@ -51,14 +51,14 @@
|
||||
|
||||
(integer_literal) @constant.numeric.integer
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
|
||||
(labeled_item
|
||||
label: (identifier) @label)
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(unit_address) @tag
|
||||
|
||||
(reference) @constant
|
||||
|
@ -37,6 +37,15 @@
|
||||
|
||||
(double_quoted_string) @string
|
||||
|
||||
[
|
||||
(heredoc_marker)
|
||||
(heredoc_end)
|
||||
] @label
|
||||
|
||||
((heredoc_block
|
||||
(heredoc_line) @string)
|
||||
(#set! "priority" 90))
|
||||
|
||||
(expansion
|
||||
[
|
||||
"$"
|
||||
@ -52,3 +61,6 @@
|
||||
(param)
|
||||
(mount_param)
|
||||
] @constant
|
||||
|
||||
(expose_instruction
|
||||
(expose_port) @constant.numeric.integer)
|
||||
|
@ -1,3 +1,5 @@
|
||||
(identifier) @variable
|
||||
|
||||
(keyword) @keyword
|
||||
(string_literal) @string
|
||||
(number_literal) @constant.numeric
|
||||
@ -33,11 +35,9 @@
|
||||
(identifier) @constant)
|
||||
)
|
||||
|
||||
[
|
||||
(comment)
|
||||
(preproc)
|
||||
] @comment
|
||||
(comment) @comment
|
||||
|
||||
(preproc) @keyword.directive
|
||||
|
||||
(ERROR) @error
|
||||
|
||||
(identifier) @variable
|
||||
|
@ -1,3 +1,45 @@
|
||||
; Comments
|
||||
(tripledot) @comment.discard
|
||||
|
||||
[(comment) (line_comment) (shebang)] @comment
|
||||
|
||||
; Basic types
|
||||
(variable) @variable
|
||||
((atom) @constant.builtin.boolean
|
||||
(#match? @constant.builtin.boolean "^(true|false)$"))
|
||||
(atom) @string.special.symbol
|
||||
[(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
|
||||
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+$"))
|
||||
|
||||
(binary_operator operator: _ @operator)
|
||||
(unary_operator operator: _ @operator)
|
||||
["/" ":" "->"] @operator
|
||||
|
||||
|
||||
; Keywords
|
||||
(attribute name: (atom) @keyword)
|
||||
|
||||
["case" "fun" "if" "of" "when" "end" "receive" "try" "catch" "after" "begin" "maybe"] @keyword
|
||||
|
||||
; Attributes
|
||||
; module declaration
|
||||
(attribute
|
||||
@ -122,46 +164,3 @@
|
||||
|
||||
(record field: (atom) @variable.other.member)
|
||||
(record name: (atom) @type)
|
||||
|
||||
; 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: _ @keyword.operator)
|
||||
(#match? @keyword.operator "^\\w+$"))
|
||||
((unary_operator operator: _ @keyword.operator)
|
||||
(#match? @keyword.operator "^\\w+$"))
|
||||
|
||||
(binary_operator operator: _ @operator)
|
||||
(unary_operator operator: _ @operator)
|
||||
["/" ":" "->"] @operator
|
||||
|
||||
; Comments
|
||||
(tripledot) @comment.discard
|
||||
|
||||
[(comment) (line_comment) (shebang)] @comment
|
||||
|
||||
; Basic types
|
||||
(variable) @variable
|
||||
((atom) @constant.builtin.boolean
|
||||
(#match? @constant.builtin.boolean "^(true|false)$"))
|
||||
(atom) @string.special.symbol
|
||||
[(string) (sigil)] @string
|
||||
(character) @constant.character
|
||||
(escape_sequence) @constant.character.escape
|
||||
|
||||
(integer) @constant.numeric.integer
|
||||
(float) @constant.numeric.float
|
||||
|
||||
; Punctuation
|
||||
["," "." "-" ";"] @punctuation.delimiter
|
||||
["(" ")" "#" "{" "}" "[" "]" "<<" ">>"] @punctuation.bracket
|
||||
|
||||
; (ERROR) @error
|
||||
|
@ -1,8 +1,34 @@
|
||||
; Function calls
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function.builtin
|
||||
(#match? @function.builtin "^(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)$"))
|
||||
; Identifiers
|
||||
|
||||
(field_identifier) @variable.other.member
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(package_identifier) @namespace
|
||||
|
||||
(parameter_declaration (identifier) @variable.parameter)
|
||||
(variadic_parameter_declaration (identifier) @variable.parameter)
|
||||
|
||||
(const_spec
|
||||
name: (identifier) @constant)
|
||||
|
||||
(type_spec
|
||||
name: (type_identifier) @constructor)
|
||||
|
||||
(keyed_element (literal_element (identifier) @variable.other.member))
|
||||
(field_declaration
|
||||
name: (field_identifier) @variable.other.member)
|
||||
|
||||
(parameter_declaration (identifier) @variable.parameter)
|
||||
(variadic_parameter_declaration (identifier) @variable.parameter)
|
||||
|
||||
(label_name) @label
|
||||
|
||||
(const_spec
|
||||
name: (identifier) @constant)
|
||||
|
||||
; Function calls
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function)
|
||||
@ -11,9 +37,14 @@
|
||||
function: (selector_expression
|
||||
field: (field_identifier) @function.method))
|
||||
|
||||
(call_expression
|
||||
function: (identifier) @function.builtin
|
||||
(#match? @function.builtin "^(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)$"))
|
||||
|
||||
; Types
|
||||
|
||||
(type_identifier) @type
|
||||
|
||||
(type_parameter_list
|
||||
(parameter_declaration
|
||||
name: (identifier) @type.parameter))
|
||||
@ -21,8 +52,6 @@
|
||||
((type_identifier) @type.builtin
|
||||
(#match? @type.builtin "^(any|bool|byte|comparable|complex128|complex64|error|float32|float64|int|int16|int32|int64|int8|rune|string|uint|uint16|uint32|uint64|uint8|uintptr)$"))
|
||||
|
||||
(type_identifier) @type
|
||||
|
||||
; Function definitions
|
||||
|
||||
(function_declaration
|
||||
@ -34,28 +63,6 @@
|
||||
(method_spec
|
||||
name: (field_identifier) @function.method)
|
||||
|
||||
; Identifiers
|
||||
|
||||
(const_spec
|
||||
name: (identifier) @constant)
|
||||
|
||||
(parameter_declaration (identifier) @variable.parameter)
|
||||
(variadic_parameter_declaration (identifier) @variable.parameter)
|
||||
|
||||
(type_spec
|
||||
name: (type_identifier) @constructor)
|
||||
(field_identifier) @variable.other.member
|
||||
(keyed_element (literal_element (identifier) @variable.other.member))
|
||||
(identifier) @variable
|
||||
(package_identifier) @namespace
|
||||
|
||||
(parameter_declaration (identifier) @variable.parameter)
|
||||
(variadic_parameter_declaration (identifier) @variable.parameter)
|
||||
|
||||
(label_name) @label
|
||||
|
||||
(const_spec
|
||||
name: (identifier) @constant)
|
||||
|
||||
; Operators
|
||||
|
||||
|
@ -1,17 +1,3 @@
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Literals and comments
|
||||
|
||||
(integer) @constant.numeric.integer
|
||||
(exp_negation) @constant.numeric.integer
|
||||
(exp_literal (float)) @constant.numeric.float
|
||||
(char) @constant.character
|
||||
(string) @string
|
||||
|
||||
(con_unit) @constant.builtin ; unit, as in ()
|
||||
|
||||
(comment) @comment
|
||||
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Punctuation
|
||||
|
||||
@ -30,6 +16,20 @@
|
||||
] @punctuation.delimiter
|
||||
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Literals and comments
|
||||
|
||||
(integer) @constant.numeric.integer
|
||||
(exp_negation) @constant.numeric.integer
|
||||
(exp_literal (float)) @constant.numeric.float
|
||||
(char) @constant.character
|
||||
(string) @string
|
||||
|
||||
(comment) @comment
|
||||
|
||||
(con_unit [ "(" ")" ] @constant.builtin) ; unit, as in ()
|
||||
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Keywords, operators, includes
|
||||
|
||||
@ -103,6 +103,8 @@
|
||||
;; ----------------------------------------------------------------------------
|
||||
;; Functions and variables
|
||||
|
||||
(variable) @variable
|
||||
|
||||
(signature name: (variable) @type)
|
||||
(function
|
||||
name: (variable) @function
|
||||
@ -117,7 +119,6 @@
|
||||
(exp_apply . (exp_name (variable) @function))
|
||||
(exp_apply . (exp_name (qualified_variable (variable) @function)))
|
||||
|
||||
(variable) @variable
|
||||
(pat_wildcard) @variable
|
||||
|
||||
;; ----------------------------------------------------------------------------
|
||||
|
@ -10,12 +10,15 @@
|
||||
|
||||
(num_lit) @constant.numeric
|
||||
|
||||
[(bool_lit) (nil_lit)] @constant.builtin
|
||||
(bool_lit) @constant.builtin.boolean
|
||||
(nil_lit) @constant.builtin
|
||||
|
||||
(comment) @comment
|
||||
|
||||
((sym_lit) @variable
|
||||
(#match? @variable "^\\*.+\\*$"))
|
||||
(sym_lit) @variable
|
||||
|
||||
((sym_lit) @variable.builtin
|
||||
(#match? @variable.builtin "^\\*.+\\*$"))
|
||||
|
||||
(short_fn_lit
|
||||
.
|
||||
@ -57,8 +60,6 @@
|
||||
.
|
||||
(sym_lit) @function)
|
||||
|
||||
(sym_lit) @variable
|
||||
|
||||
["{" "@{" "}"
|
||||
"[" "@[" "]"
|
||||
"(" "@(" ")"] @punctuation.bracket
|
||||
|
@ -1,3 +1,5 @@
|
||||
(identifier) @variable
|
||||
|
||||
; Methods
|
||||
|
||||
(method_declaration
|
||||
@ -54,8 +56,6 @@
|
||||
((identifier) @constant
|
||||
(#match? @constant "^_*[A-Z][A-Z\\d_]+$"))
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(this) @variable.builtin
|
||||
|
||||
; Literals
|
||||
|
@ -1,11 +1,14 @@
|
||||
[
|
||||
(module_definition)
|
||||
(struct_definition)
|
||||
(macro_definition)
|
||||
(function_definition)
|
||||
(compound_expression) ; begin blocks
|
||||
(let_statement)
|
||||
(if_statement)
|
||||
(for_statement)
|
||||
(while_statement)
|
||||
(module_definition)
|
||||
(struct_definition)
|
||||
(macro_definition)
|
||||
(function_definition)
|
||||
(if_statement)
|
||||
(try_statement)
|
||||
(for_statement)
|
||||
(while_statement)
|
||||
(let_statement)
|
||||
(quote_statement)
|
||||
(do_clause)
|
||||
(compound_statement) ; begin block
|
||||
] @fold
|
||||
|
@ -1,38 +1,47 @@
|
||||
; ----------
|
||||
; Primitives
|
||||
; ----------
|
||||
; ------------
|
||||
; Variables identifiers
|
||||
; ------------
|
||||
|
||||
[
|
||||
(line_comment)
|
||||
(block_comment)
|
||||
] @comment
|
||||
(identifier) @variable
|
||||
|
||||
; Remaining identifiers that start with capital letters should be types (PascalCase)
|
||||
(
|
||||
((identifier) @constant.builtin)
|
||||
(#match? @constant.builtin "^(nothing|missing|undef)$"))
|
||||
|
||||
[
|
||||
(true)
|
||||
(false)
|
||||
] @constant.builtin.boolean
|
||||
|
||||
(integer_literal) @constant.numeric.integer
|
||||
(float_literal) @constant.numeric.float
|
||||
(identifier) @type
|
||||
(#match? @type "^[A-Z]"))
|
||||
|
||||
; SCREAMING_SNAKE_CASE
|
||||
(
|
||||
((identifier) @constant.numeric.float)
|
||||
(#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
|
||||
(identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z0-9_]*$"))
|
||||
|
||||
(character_literal) @constant.character
|
||||
(escape_sequence) @constant.character.escape
|
||||
(const_statement
|
||||
(assignment
|
||||
. (identifier) @constant))
|
||||
|
||||
(string_literal) @string
|
||||
|
||||
(prefixed_string_literal
|
||||
prefix: (identifier) @function.macro) @string
|
||||
; Field expressions are either module content or struct fields.
|
||||
; Module types and constants should already be captured, so this
|
||||
; assumes the remaining identifiers to be struct fields.
|
||||
(field_expression
|
||||
(_)
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
(quote_expression
|
||||
(identifier) @string.special.symbol)
|
||||
":" @string.special.symbol
|
||||
[
|
||||
(identifier)
|
||||
(operator)
|
||||
] @string.special.symbol)
|
||||
|
||||
; ------
|
||||
; Macros
|
||||
; ------
|
||||
|
||||
(macro_definition
|
||||
name: (identifier) @function.macro)
|
||||
|
||||
(macro_identifier
|
||||
"@" @function.macro
|
||||
(identifier) @function.macro)
|
||||
|
||||
; -------------------
|
||||
; Modules and Imports
|
||||
@ -50,49 +59,6 @@
|
||||
(scoped_identifier
|
||||
(identifier) @namespace)
|
||||
|
||||
; -----
|
||||
; Types
|
||||
; -----
|
||||
|
||||
(abstract_definition
|
||||
name: (identifier) @type)
|
||||
|
||||
(primitive_definition
|
||||
name: (identifier) @type)
|
||||
|
||||
(struct_definition
|
||||
name: (identifier) @type)
|
||||
|
||||
(struct_definition
|
||||
. (_)
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
(struct_definition
|
||||
. (_)
|
||||
(typed_expression
|
||||
. (identifier) @variable.other.member))
|
||||
|
||||
(type_parameter_list
|
||||
(identifier) @type)
|
||||
|
||||
(constrained_type_parameter
|
||||
(identifier) @type)
|
||||
|
||||
(subtype_clause
|
||||
(identifier) @type)
|
||||
|
||||
(typed_expression
|
||||
(identifier) @type . )
|
||||
|
||||
(parameterized_identifier
|
||||
(identifier) @type)
|
||||
|
||||
(type_argument_list
|
||||
(identifier) @type)
|
||||
|
||||
(where_clause
|
||||
(identifier) @type)
|
||||
|
||||
; -------------------
|
||||
; Function definition
|
||||
; -------------------
|
||||
@ -119,22 +85,6 @@
|
||||
; prevent constructors (PascalCase) to be highlighted as functions
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
(parameter_list
|
||||
(identifier) @variable.parameter)
|
||||
|
||||
(typed_parameter
|
||||
(identifier) @variable.parameter
|
||||
(identifier)? @type)
|
||||
|
||||
(optional_parameter
|
||||
. (identifier) @variable.parameter)
|
||||
|
||||
(slurp_parameter
|
||||
(identifier) @variable.parameter)
|
||||
|
||||
(function_expression
|
||||
. (identifier) @variable.parameter)
|
||||
|
||||
; ---------------
|
||||
; Functions calls
|
||||
; ---------------
|
||||
@ -145,93 +95,294 @@
|
||||
; prevent constructors (PascalCase) to be highlighted as functions
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
(
|
||||
(broadcast_call_expression
|
||||
(identifier) @function)
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
(
|
||||
(call_expression
|
||||
(field_expression (identifier) @function .))
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
(
|
||||
(broadcast_call_expression
|
||||
(identifier) @function)
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
(
|
||||
(broadcast_call_expression
|
||||
(field_expression (identifier) @function .))
|
||||
(#match? @function "^[^A-Z]"))
|
||||
|
||||
; ------
|
||||
; Macros
|
||||
; ------
|
||||
|
||||
(macro_definition
|
||||
name: (identifier) @function.macro)
|
||||
; -------------------
|
||||
; Functions builtins
|
||||
; -------------------
|
||||
|
||||
((identifier) @function.builtin
|
||||
(#any-of? @function.builtin
|
||||
"_abstracttype" "_apply_iterate" "_apply_pure" "_call_in_world" "_call_in_world_total"
|
||||
"_call_latest" "_equiv_typedef" "_expr" "_primitivetype" "_setsuper!" "_structtype" "_typebody!"
|
||||
"_typevar" "applicable" "apply_type" "arrayref" "arrayset" "arraysize" "const_arrayref"
|
||||
"donotdelete" "fieldtype" "get_binding_type" "getfield" "ifelse" "invoke" "isa" "isdefined"
|
||||
"modifyfield!" "nfields" "replacefield!" "set_binding_type!" "setfield!" "sizeof" "svec"
|
||||
"swapfield!" "throw" "tuple" "typeassert" "typeof"))
|
||||
|
||||
; -----------
|
||||
; Parameters
|
||||
; -----------
|
||||
|
||||
(parameter_list
|
||||
(identifier) @variable.parameter)
|
||||
|
||||
(optional_parameter
|
||||
. (identifier) @variable.parameter)
|
||||
|
||||
(slurp_parameter
|
||||
(identifier) @variable.parameter)
|
||||
|
||||
(typed_parameter
|
||||
parameter: (identifier)? @variable.parameter
|
||||
type: (_) @type)
|
||||
|
||||
(function_expression
|
||||
. (identifier) @variable.parameter) ; Single parameter arrow functions
|
||||
|
||||
; -----
|
||||
; Types
|
||||
; -----
|
||||
|
||||
; Definitions
|
||||
(abstract_definition
|
||||
name: (identifier) @type.definition) @keyword
|
||||
|
||||
(primitive_definition
|
||||
name: (identifier) @type.definition) @keyword
|
||||
|
||||
(struct_definition
|
||||
name: (identifier) @type)
|
||||
|
||||
(struct_definition
|
||||
. (_)
|
||||
(identifier) @variable.other.member)
|
||||
|
||||
(struct_definition
|
||||
. (_)
|
||||
(typed_expression
|
||||
. (identifier) @variable.other.member))
|
||||
|
||||
(type_clause
|
||||
[
|
||||
(identifier) @type
|
||||
(field_expression
|
||||
(identifier) @type .)
|
||||
])
|
||||
|
||||
; Annotations
|
||||
(parametrized_type_expression
|
||||
(_) @type
|
||||
(curly_expression
|
||||
(_) @type))
|
||||
|
||||
(type_parameter_list
|
||||
(identifier) @type)
|
||||
|
||||
(typed_expression
|
||||
(identifier) @type . )
|
||||
|
||||
(function_definition
|
||||
return_type: (identifier) @type)
|
||||
|
||||
(short_function_definition
|
||||
return_type: (identifier) @type)
|
||||
|
||||
(where_clause
|
||||
(identifier) @type)
|
||||
|
||||
(where_clause
|
||||
(curly_expression
|
||||
(_) @type))
|
||||
|
||||
; ---------
|
||||
; Builtins
|
||||
; ---------
|
||||
|
||||
; This list was generated with:
|
||||
;
|
||||
; istype(x) = typeof(x) === DataType || typeof(x) === UnionAll
|
||||
; get_types(m) = filter(x -> istype(Base.eval(m, x)), names(m))
|
||||
; type_names = sort(union(get_types(Core), get_types(Base)))
|
||||
;
|
||||
((identifier) @type.builtin
|
||||
(#any-of? @type.builtin
|
||||
"AbstractArray" "AbstractChannel" "AbstractChar" "AbstractDict" "AbstractDisplay"
|
||||
"AbstractFloat" "AbstractIrrational" "AbstractLock" "AbstractMatch" "AbstractMatrix"
|
||||
"AbstractPattern" "AbstractRange" "AbstractSet" "AbstractSlices" "AbstractString"
|
||||
"AbstractUnitRange" "AbstractVecOrMat" "AbstractVector" "Any" "ArgumentError" "Array"
|
||||
"AssertionError" "Atomic" "BigFloat" "BigInt" "BitArray" "BitMatrix" "BitSet" "BitVector" "Bool"
|
||||
"BoundsError" "By" "CanonicalIndexError" "CapturedException" "CartesianIndex" "CartesianIndices"
|
||||
"Cchar" "Cdouble" "Cfloat" "Channel" "Char" "Cint" "Cintmax_t" "Clong" "Clonglong" "Cmd" "Colon"
|
||||
"ColumnSlices" "Complex" "ComplexF16" "ComplexF32" "ComplexF64" "ComposedFunction"
|
||||
"CompositeException" "ConcurrencyViolationError" "Condition" "Cptrdiff_t" "Cshort" "Csize_t"
|
||||
"Cssize_t" "Cstring" "Cuchar" "Cuint" "Cuintmax_t" "Culong" "Culonglong" "Cushort" "Cvoid"
|
||||
"Cwchar_t" "Cwstring" "DataType" "DenseArray" "DenseMatrix" "DenseVecOrMat" "DenseVector" "Dict"
|
||||
"DimensionMismatch" "Dims" "DivideError" "DomainError" "EOFError" "Enum" "ErrorException"
|
||||
"Exception" "ExponentialBackOff" "Expr" "Float16" "Float32" "Float64" "Function" "GlobalRef"
|
||||
"HTML" "IO" "IOBuffer" "IOContext" "IOStream" "IdDict" "IndexCartesian" "IndexLinear"
|
||||
"IndexStyle" "InexactError" "InitError" "Int" "Int128" "Int16" "Int32" "Int64" "Int8" "Integer"
|
||||
"InterruptException" "InvalidStateException" "Irrational" "KeyError" "LazyString" "LinRange"
|
||||
"LineNumberNode" "LinearIndices" "LoadError" "Lt" "MIME" "Matrix" "Method" "MethodError"
|
||||
"Missing" "MissingException" "Module" "NTuple" "NamedTuple" "Nothing" "Number" "Ordering"
|
||||
"OrdinalRange" "OutOfMemoryError" "OverflowError" "Pair" "ParseError" "PartialQuickSort" "Perm"
|
||||
"PermutedDimsArray" "Pipe" "ProcessFailedException" "Ptr" "QuoteNode" "Rational" "RawFD"
|
||||
"ReadOnlyMemoryError" "Real" "ReentrantLock" "Ref" "Regex" "RegexMatch" "Returns"
|
||||
"ReverseOrdering" "RoundingMode" "RowSlices" "SegmentationFault" "Set" "Signed" "Slices" "Some"
|
||||
"SpinLock" "StackFrame" "StackOverflowError" "StackTrace" "Stateful" "StepRange" "StepRangeLen"
|
||||
"StridedArray" "StridedMatrix" "StridedVecOrMat" "StridedVector" "String" "StringIndexError"
|
||||
"SubArray" "SubString" "SubstitutionString" "Symbol" "SystemError" "Task" "TaskFailedException"
|
||||
"Text" "TextDisplay" "Timer" "Tmstruct" "Tuple" "Type" "TypeError" "TypeVar" "UInt" "UInt128"
|
||||
"UInt16" "UInt32" "UInt64" "UInt8" "UndefInitializer" "UndefKeywordError" "UndefRefError"
|
||||
"UndefVarError" "Union" "UnionAll" "UnitRange" "Unsigned" "Val" "VecElement" "VecOrMat" "Vector"
|
||||
"VersionNumber" "WeakKeyDict" "WeakRef"))
|
||||
|
||||
((identifier) @variable.builtin
|
||||
(#any-of? @variable.builtin "begin" "end")
|
||||
(#has-ancestor? @variable.builtin index_expression))
|
||||
|
||||
((identifier) @variable.builtin
|
||||
(#any-of? @variable.builtin "begin" "end")
|
||||
(#has-ancestor? @variable.builtin range_expression))
|
||||
|
||||
(macro_identifier
|
||||
"@" @function.macro
|
||||
(identifier) @function.macro)
|
||||
|
||||
; --------
|
||||
; Keywords
|
||||
; --------
|
||||
|
||||
(function_definition
|
||||
["function" "end"] @keyword.function)
|
||||
[
|
||||
"global"
|
||||
"local"
|
||||
] @keyword
|
||||
|
||||
(compound_statement
|
||||
[
|
||||
"begin"
|
||||
"end"
|
||||
] @keyword)
|
||||
|
||||
(quote_statement
|
||||
[
|
||||
"quote"
|
||||
"end"
|
||||
] @keyword)
|
||||
|
||||
(let_statement
|
||||
[
|
||||
"let"
|
||||
"end"
|
||||
] @keyword)
|
||||
|
||||
(if_statement
|
||||
["if" "end"] @keyword.control.conditional)
|
||||
(elseif_clause
|
||||
["elseif"] @keyword.control.conditional)
|
||||
(else_clause
|
||||
["else"] @keyword.control.conditional)
|
||||
(ternary_expression
|
||||
["?" ":"] @keyword.control.conditional)
|
||||
[
|
||||
"if"
|
||||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(for_statement
|
||||
["for" "end"] @keyword.control.repeat)
|
||||
(while_statement
|
||||
["while" "end"] @keyword.control.repeat)
|
||||
(break_statement) @keyword.control.repeat
|
||||
(continue_statement) @keyword.control.repeat
|
||||
(for_binding
|
||||
"in" @keyword.control.repeat)
|
||||
(for_clause
|
||||
"for" @keyword.control.repeat)
|
||||
(elseif_clause
|
||||
"elseif" @keyword.control.conditional)
|
||||
|
||||
(else_clause
|
||||
"else" @keyword.control.conditional)
|
||||
|
||||
(if_clause
|
||||
"if" @keyword.control.conditional) ; `if` clause in comprehensions
|
||||
|
||||
(ternary_expression
|
||||
[
|
||||
"?"
|
||||
":"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(try_statement
|
||||
["try" "end" ] @keyword.control.exception)
|
||||
[
|
||||
"try"
|
||||
"end"
|
||||
] @keyword.control.exception)
|
||||
|
||||
(finally_clause
|
||||
"finally" @keyword.control.exception)
|
||||
|
||||
(catch_clause
|
||||
"catch" @keyword.control.exception)
|
||||
|
||||
[
|
||||
"export"
|
||||
"import"
|
||||
"using"
|
||||
] @keyword.control.import
|
||||
(for_statement
|
||||
[
|
||||
"for"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(while_statement
|
||||
[
|
||||
"while"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(for_clause
|
||||
"for" @keyword.control.repeat)
|
||||
|
||||
[
|
||||
(break_statement)
|
||||
(continue_statement)
|
||||
] @keyword.control.repeat
|
||||
|
||||
(module_definition
|
||||
[
|
||||
"module"
|
||||
"baremodule"
|
||||
"end"
|
||||
] @keyword.control.import)
|
||||
|
||||
(import_statement
|
||||
[
|
||||
"import"
|
||||
"using"
|
||||
] @keyword.control.import)
|
||||
|
||||
(import_alias
|
||||
"as" @keyword.control.import)
|
||||
|
||||
(export_statement
|
||||
"export" @keyword.control.import)
|
||||
|
||||
(selected_import
|
||||
":" @punctuation.delimiter)
|
||||
|
||||
(struct_definition
|
||||
[
|
||||
"struct"
|
||||
"end"
|
||||
] @keyword)
|
||||
|
||||
(macro_definition
|
||||
[
|
||||
"macro"
|
||||
"end"
|
||||
] @keyword)
|
||||
|
||||
(function_definition
|
||||
[
|
||||
"function"
|
||||
"end"
|
||||
] @keyword.function)
|
||||
|
||||
(do_clause
|
||||
[
|
||||
"do"
|
||||
"end"
|
||||
] @keyword.function)
|
||||
|
||||
(return_statement
|
||||
"return" @keyword.control.return)
|
||||
|
||||
[
|
||||
"abstract"
|
||||
"baremodule"
|
||||
"begin"
|
||||
"const"
|
||||
"do"
|
||||
"end"
|
||||
"let"
|
||||
"macro"
|
||||
"module"
|
||||
"mutable"
|
||||
"primitive"
|
||||
"quote"
|
||||
"return"
|
||||
"struct"
|
||||
"type"
|
||||
"where"
|
||||
] @keyword
|
||||
|
||||
; TODO: fix this
|
||||
((identifier) @keyword (#match? @keyword "global|local"))
|
||||
] @keyword.storage.modifier
|
||||
|
||||
; ---------
|
||||
; Operators
|
||||
@ -239,14 +390,34 @@
|
||||
|
||||
[
|
||||
(operator)
|
||||
"::"
|
||||
"<:"
|
||||
":"
|
||||
"=>"
|
||||
"..."
|
||||
"$"
|
||||
"="
|
||||
"∈"
|
||||
] @operator
|
||||
|
||||
(adjoint_expression
|
||||
"'" @operator)
|
||||
|
||||
(range_expression
|
||||
":" @operator)
|
||||
|
||||
((operator) @keyword.operator
|
||||
(#any-of? @keyword.operator "in" "isa"))
|
||||
|
||||
(for_binding
|
||||
"in" @keyword.operator)
|
||||
|
||||
(where_clause
|
||||
"where" @keyword.operator)
|
||||
|
||||
(where_expression
|
||||
"where" @keyword.operator)
|
||||
|
||||
(binary_expression
|
||||
(_)
|
||||
(operator) @operator
|
||||
(identifier) @function
|
||||
(#any-of? @operator "|>" ".|>"))
|
||||
|
||||
; ------------
|
||||
; Punctuations
|
||||
; ------------
|
||||
@ -255,40 +426,58 @@
|
||||
"."
|
||||
","
|
||||
";"
|
||||
"::"
|
||||
"->"
|
||||
] @punctuation.delimiter
|
||||
|
||||
"..." @punctuation.special
|
||||
|
||||
[
|
||||
"["
|
||||
"]"
|
||||
"("
|
||||
")"
|
||||
"["
|
||||
"]"
|
||||
"{"
|
||||
"}"
|
||||
] @punctuation.bracket
|
||||
|
||||
; ---------------------
|
||||
; Remaining identifiers
|
||||
; ---------------------
|
||||
; ---------
|
||||
; Literals
|
||||
; ---------
|
||||
|
||||
(const_statement
|
||||
(variable_declaration
|
||||
. (identifier) @constant))
|
||||
(boolean_literal) @constant.builtin.boolean
|
||||
|
||||
(integer_literal) @constant.numeric.integer
|
||||
|
||||
(float_literal) @constant.numeric.float
|
||||
|
||||
; SCREAMING_SNAKE_CASE
|
||||
(
|
||||
(identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z0-9_]*$"))
|
||||
((identifier) @constant.numeric.float)
|
||||
(#match? @constant.numeric.float "^((Inf|NaN)(16|32|64)?)$"))
|
||||
|
||||
; remaining identifiers that start with capital letters should be types (PascalCase)
|
||||
(
|
||||
(identifier) @type
|
||||
(#match? @type "^[A-Z]"))
|
||||
((identifier) @constant.builtin)
|
||||
(#match? @constant.builtin "^(nothing|missing|undef)$"))
|
||||
|
||||
; Field expressions are either module content or struct fields.
|
||||
; Module types and constants should already be captured, so this
|
||||
; assumes the remaining identifiers to be struct fields.
|
||||
(field_expression
|
||||
(_)
|
||||
(identifier) @variable.other.member)
|
||||
(character_literal) @constant.character
|
||||
|
||||
(identifier) @variable
|
||||
(escape_sequence) @constant.character.escape
|
||||
|
||||
(string_literal) @string
|
||||
|
||||
(prefixed_string_literal
|
||||
prefix: (identifier) @function.macro) @string
|
||||
|
||||
(command_literal) @string
|
||||
|
||||
(prefixed_command_literal
|
||||
prefix: (identifier) @function.macro) @string
|
||||
|
||||
; ---------
|
||||
; Comments
|
||||
; ---------
|
||||
|
||||
[
|
||||
(line_comment)
|
||||
(block_comment)
|
||||
] @comment
|
||||
|
@ -2,15 +2,39 @@
|
||||
(struct_definition)
|
||||
(macro_definition)
|
||||
(function_definition)
|
||||
(compound_expression)
|
||||
(let_statement)
|
||||
(compound_statement)
|
||||
(if_statement)
|
||||
(try_statement)
|
||||
(for_statement)
|
||||
(while_statement)
|
||||
(let_statement)
|
||||
(quote_statement)
|
||||
(do_clause)
|
||||
(parameter_list)
|
||||
(assignment)
|
||||
(for_binding)
|
||||
(call_expression)
|
||||
(parenthesized_expression)
|
||||
(tuple_expression)
|
||||
(comprehension_expression)
|
||||
(matrix_expression)
|
||||
(vector_expression)
|
||||
] @indent
|
||||
|
||||
[
|
||||
"end"
|
||||
")"
|
||||
"]"
|
||||
"}"
|
||||
] @outdent
|
||||
|
||||
(argument_list
|
||||
. (_) @anchor
|
||||
(#set! "scope" "tail")) @align
|
||||
|
||||
(parameter_list
|
||||
. (_) @anchor
|
||||
(#set! "scope" "tail")) @align
|
||||
|
||||
(curly_expression
|
||||
. (_) @anchor
|
||||
(#set! "scope" "tail")) @align
|
||||
|
@ -9,7 +9,8 @@
|
||||
(primitive_definition)
|
||||
(abstract_definition)
|
||||
(struct_definition)
|
||||
(assignment_expression)
|
||||
(short_function_definition)
|
||||
(assignment)
|
||||
(const_statement)
|
||||
])
|
||||
(#set! injection.language "markdown"))
|
||||
@ -21,10 +22,17 @@
|
||||
] @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
|
||||
(
|
||||
[
|
||||
(command_literal)
|
||||
(prefixed_command_literal)
|
||||
] @injection.content
|
||||
(#set! injection.language "sh"))
|
||||
|
||||
(
|
||||
(prefixed_string_literal
|
||||
prefix: (identifier) @function.macro) @injection.content
|
||||
(#eq? @function.macro "re")
|
||||
(#eq? @function.macro "r")
|
||||
(#set! injection.language "regex"))
|
||||
|
||||
(
|
||||
|
@ -2,43 +2,100 @@
|
||||
; Definitions
|
||||
; -----------
|
||||
|
||||
; Imports
|
||||
(import_statement
|
||||
; Variables
|
||||
(assignment
|
||||
(identifier) @local.definition)
|
||||
|
||||
(assignment
|
||||
(tuple_expression
|
||||
(identifier) @local.definition))
|
||||
|
||||
; Constants
|
||||
(const_statement
|
||||
(variable_declaration
|
||||
(assignment
|
||||
. (identifier) @local.definition))
|
||||
|
||||
; let/const bindings
|
||||
(let_binding
|
||||
(identifier) @local.definition)
|
||||
|
||||
(let_binding
|
||||
(tuple_expression
|
||||
(identifier) @local.definition))
|
||||
|
||||
; For bindings
|
||||
(for_binding
|
||||
(identifier) @local.definition)
|
||||
|
||||
(for_binding
|
||||
(tuple_expression
|
||||
(identifier) @local.definition))
|
||||
|
||||
; Types
|
||||
(struct_definition
|
||||
name: (identifier) @local.definition)
|
||||
|
||||
(abstract_definition
|
||||
name: (identifier) @local.definition)
|
||||
|
||||
(abstract_definition
|
||||
name: (identifier) @local.definition)
|
||||
|
||||
(type_parameter_list
|
||||
(identifier) @local.definition)
|
||||
|
||||
; Module imports
|
||||
(import_statement
|
||||
(identifier) @local.definition)
|
||||
|
||||
; Parameters
|
||||
(parameter_list
|
||||
(identifier) @local.definition)
|
||||
|
||||
(typed_parameter
|
||||
. (identifier) @local.definition)
|
||||
|
||||
(optional_parameter .
|
||||
(optional_parameter
|
||||
.
|
||||
(identifier) @local.definition)
|
||||
|
||||
(slurp_parameter
|
||||
(identifier) @local.definition)
|
||||
|
||||
(typed_parameter
|
||||
parameter: (identifier) @local.definition
|
||||
(_))
|
||||
|
||||
; Single parameter arrow function
|
||||
(function_expression
|
||||
. (identifier) @local.definition)
|
||||
.
|
||||
(identifier) @local.definition)
|
||||
|
||||
; ------
|
||||
; Scopes
|
||||
; ------
|
||||
; Function/macro definitions
|
||||
(function_definition
|
||||
name: (identifier) @local.definition) @local.scope
|
||||
|
||||
[
|
||||
(function_definition)
|
||||
(short_function_definition)
|
||||
(macro_definition)
|
||||
] @local.scope
|
||||
(short_function_definition
|
||||
name: (identifier) @local.definition) @local.scope
|
||||
|
||||
(macro_definition
|
||||
name: (identifier) @local.definition) @local.scope
|
||||
|
||||
; ----------
|
||||
; References
|
||||
; ----------
|
||||
|
||||
(identifier) @local.reference
|
||||
|
||||
; ------
|
||||
; Scopes
|
||||
; ------
|
||||
|
||||
[
|
||||
(for_statement)
|
||||
(while_statement)
|
||||
(try_statement)
|
||||
(catch_clause)
|
||||
(finally_clause)
|
||||
(let_statement)
|
||||
(quote_statement)
|
||||
(do_clause)
|
||||
] @local.scope
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
; Identifiers
|
||||
|
||||
[(NAME) (SYMBOLNAME)] @variable
|
||||
|
||||
(section
|
||||
.
|
||||
(NAME) @namespace)
|
||||
|
||||
[(NAME) (SYMBOLNAME)] @variable
|
||||
|
||||
; Operators
|
||||
|
||||
[
|
||||
|
@ -23,12 +23,16 @@
|
||||
(borrow_expression "&" @keyword.storage.modifier.ref)
|
||||
(borrow_expression "&mut" @keyword.storage.modifier.mut)
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(constant_identifier) @constant
|
||||
((identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z\\d_]*$"))
|
||||
|
||||
(function_identifier) @function
|
||||
|
||||
(primitive_type) @type.builtin
|
||||
|
||||
(struct_identifier) @type
|
||||
(pack_expression
|
||||
access: (module_access
|
||||
@ -152,6 +156,3 @@
|
||||
"with"
|
||||
] @keyword
|
||||
|
||||
(primitive_type) @type.buildin
|
||||
|
||||
(identifier) @variable
|
||||
|
@ -17,6 +17,18 @@
|
||||
"with"
|
||||
] @keyword
|
||||
|
||||
(variable_expression name: (identifier) @variable)
|
||||
|
||||
(select_expression
|
||||
attrpath: (attrpath attr: (identifier)) @variable.other.member)
|
||||
|
||||
(apply_expression
|
||||
function: [
|
||||
(variable_expression name: (identifier) @function)
|
||||
(select_expression
|
||||
attrpath: (attrpath
|
||||
attr: (identifier) @function .))])
|
||||
|
||||
((identifier) @variable.builtin
|
||||
(#match? @variable.builtin "^(__currentSystem|__currentTime|__nixPath|__nixVersion|__storeDir|builtins)$")
|
||||
(#is-not? local))
|
||||
@ -59,28 +71,16 @@
|
||||
name: (identifier) @variable.parameter
|
||||
"?"? @punctuation.delimiter)
|
||||
|
||||
(select_expression
|
||||
attrpath: (attrpath attr: (identifier)) @variable.other.member)
|
||||
|
||||
(interpolation
|
||||
"${" @punctuation.special
|
||||
"}" @punctuation.special) @embedded
|
||||
|
||||
(apply_expression
|
||||
function: [
|
||||
(variable_expression name: (identifier) @function)
|
||||
(select_expression
|
||||
attrpath: (attrpath
|
||||
attr: (identifier) @function .))])
|
||||
|
||||
(unary_expression
|
||||
operator: _ @operator)
|
||||
|
||||
(binary_expression
|
||||
operator: _ @operator)
|
||||
|
||||
(variable_expression name: (identifier) @variable)
|
||||
|
||||
(binding
|
||||
attrpath: (attrpath attr: (identifier)) @variable.other.member)
|
||||
|
||||
|
@ -3,13 +3,14 @@
|
||||
(boolean) @constant.builtin.boolean
|
||||
(include_path) @string.special.path
|
||||
|
||||
(identifier) @variable
|
||||
|
||||
(parameters_declaration (identifier) @variable.parameter)
|
||||
(function_declaration name: (identifier) @function)
|
||||
|
||||
(function_call function: (identifier) @function)
|
||||
(module_call name: (identifier) @function)
|
||||
|
||||
(identifier) @variable
|
||||
(special_variable) @variable.builtin
|
||||
|
||||
[
|
||||
|
@ -1,19 +1,3 @@
|
||||
; ----------------------------------------------------------------------------
|
||||
; Record fields would need to come before literal strings in order to be captured correctly
|
||||
|
||||
(record_accessor
|
||||
field: [ (variable)
|
||||
(string)
|
||||
(triple_quote_string)
|
||||
] @variable.other.member)
|
||||
|
||||
(exp_record_access
|
||||
field: [ (variable)
|
||||
(string)
|
||||
(triple_quote_string)
|
||||
] @variable.other.member)
|
||||
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; Literals and comments
|
||||
|
||||
@ -21,6 +5,7 @@
|
||||
(exp_negation) @constant.numeric.integer
|
||||
(exp_literal (number)) @constant.numeric.float
|
||||
(char) @constant.character
|
||||
|
||||
[
|
||||
(string)
|
||||
(triple_quote_string)
|
||||
@ -28,7 +13,6 @@
|
||||
|
||||
(comment) @comment
|
||||
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; Punctuation
|
||||
|
||||
@ -41,18 +25,19 @@
|
||||
"]"
|
||||
] @punctuation.bracket
|
||||
|
||||
[
|
||||
(comma)
|
||||
";"
|
||||
] @punctuation.delimiter
|
||||
(comma) @punctuation.delimiter
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; Types
|
||||
|
||||
(type) @type
|
||||
|
||||
(constructor) @constructor
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; Keywords, operators, includes
|
||||
|
||||
; This needs to come before the other "else" in
|
||||
; order to be highlighted correctly
|
||||
(class_instance "else" @keyword)
|
||||
(module) @namespace
|
||||
|
||||
[
|
||||
"if"
|
||||
@ -95,7 +80,6 @@
|
||||
] @operator
|
||||
|
||||
(qualified_module (module) @constructor)
|
||||
(module) @namespace
|
||||
(qualified_type (module) @namespace)
|
||||
(qualified_variable (module) @namespace)
|
||||
(import (module) @namespace)
|
||||
@ -122,6 +106,11 @@
|
||||
"infixr"
|
||||
] @keyword
|
||||
|
||||
; NOTE
|
||||
; Needs to come after the other `else` in
|
||||
; order to be highlighted correctly
|
||||
(class_instance "else" @keyword)
|
||||
|
||||
(type_role_declaration
|
||||
"role" @keyword
|
||||
role: (type_role) @keyword)
|
||||
@ -131,10 +120,27 @@
|
||||
; ----------------------------------------------------------------------------
|
||||
; Functions and variables
|
||||
|
||||
(variable) @variable
|
||||
|
||||
(row_field (field_name) @variable.other.member)
|
||||
(record_field (field_name) @variable.other.member)
|
||||
(record_field (field_pun) @variable.other.member)
|
||||
|
||||
; NOTE
|
||||
; Record fields must come after literal strings and
|
||||
; plain variables in order to be highlighted correctly
|
||||
(record_accessor
|
||||
field: [ (variable)
|
||||
(string)
|
||||
(triple_quote_string)
|
||||
] @variable.other.member)
|
||||
|
||||
(exp_record_access
|
||||
field: [ (variable)
|
||||
(string)
|
||||
(triple_quote_string)
|
||||
] @variable.other.member)
|
||||
|
||||
(signature name: (variable) @type)
|
||||
(function name: (variable) @function)
|
||||
(class_instance (instance_name) @function)
|
||||
@ -151,14 +157,5 @@
|
||||
(exp_ticked (exp_name (variable) @operator))
|
||||
(exp_ticked (exp_name (qualified_variable (variable) @operator)))
|
||||
|
||||
(variable) @variable
|
||||
|
||||
("@" @namespace) ; "as" pattern operator, e.g. x@Constructor
|
||||
|
||||
; ----------------------------------------------------------------------------
|
||||
; Types
|
||||
|
||||
(type) @type
|
||||
|
||||
(constructor) @constructor
|
||||
(patterns (pat_as "@" @namespace))
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
; Structs
|
||||
;------------
|
||||
|
||||
(enum_variant) @type.enum.variant
|
||||
(struct_entry (_) @variable.other.member ":")
|
||||
(struct_name (identifier)) @type
|
||||
(unit_struct) @type.builtin
|
||||
|
||||
; Literals
|
||||
;------------
|
||||
|
||||
@ -7,16 +15,6 @@
|
||||
(float) @constant.numeric.float
|
||||
(char) @constant.character
|
||||
|
||||
; Structs
|
||||
;------------
|
||||
|
||||
(enum_variant) @type.enum.variant
|
||||
(struct_entry (_) @variable.other.member ":")
|
||||
(struct_name (identifier)) @type
|
||||
|
||||
|
||||
|
||||
|
||||
; Comments
|
||||
;------------
|
||||
|
||||
@ -37,6 +35,7 @@
|
||||
"{" @punctuation.bracket
|
||||
"}" @punctuation.bracket
|
||||
|
||||
"-" @operator
|
||||
|
||||
; Special
|
||||
;------------
|
||||
|
@ -10,32 +10,28 @@
|
||||
(block_comment) @comment.block
|
||||
(directive) @keyword.directive
|
||||
|
||||
; operators
|
||||
; variables
|
||||
|
||||
((symbol) @operator
|
||||
(#match? @operator "^(\\+|-|\\*|/|=|>|<|>=|<=)$"))
|
||||
((symbol) @variable.builtin
|
||||
(#eq? @variable.builtin "..."))
|
||||
|
||||
; keywords
|
||||
((symbol) @variable.builtin
|
||||
(#eq? @variable.builtin "."))
|
||||
|
||||
(symbol) @variable
|
||||
|
||||
["(" ")" "[" "]" "{" "}"] @punctuation.bracket
|
||||
|
||||
(quote "'") @operator
|
||||
(unquote_splicing ",@") @operator
|
||||
(unquote ",") @operator
|
||||
(quasiquote "`") @operator
|
||||
|
||||
; procedure
|
||||
|
||||
(list
|
||||
.
|
||||
((symbol) @keyword.conditional
|
||||
(#match? @keyword.conditional "^(if|cond|case|when|unless)$"
|
||||
)))
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @keyword
|
||||
(#match? @keyword
|
||||
"^(define-syntax|let\\*|lambda|λ|case|=>|quote-splicing|unquote-splicing|set!|let|letrec|letrec-syntax|let-values|let\\*-values|do|else|define|cond|syntax-rules|unquote|begin|quote|let-syntax|and|if|quasiquote|letrec|delay|or|when|unless|identifier-syntax|assert|library|export|import|rename|only|except|prefix)$"
|
||||
))
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @function.builtin
|
||||
(#match? @function.builtin
|
||||
"^(caar|cadr|call-with-input-file|call-with-output-file|cdar|cddr|list|open-input-file|open-output-file|with-input-from-file|with-output-to-file|\\*|\\+|-|/|<|<=|=|>|>=|abs|acos|angle|append|apply|asin|assoc|assq|assv|atan|boolean\\?|caaaar|caaadr|caaar|caadar|caaddr|caadr|cadaar|cadadr|cadar|caddar|cadddr|caddr|call-with-current-continuation|call-with-values|car|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cdr|ceiling|char->integer|char-alphabetic\\?|char-ci<=\\?|char-ci<\\?|char-ci=\\?|char-ci>=\\?|char-ci>\\?|char-downcase|char-lower-case\\?|char-numeric\\?|char-ready\\?|char-upcase|char-upper-case\\?|char-whitespace\\?|char<=\\?|char<\\?|char=\\?|char>=\\?|char>\\?|char\\?|close-input-port|close-output-port|complex\\?|cons|cos|current-error-port|current-input-port|current-output-port|denominator|display|dynamic-wind|eof-object\\?|eq\\?|equal\\?|eqv\\?|eval|even\\?|exact->inexact|exact\\?|exp|expt|floor|flush-output|for-each|force|gcd|imag-part|inexact->exact|inexact\\?|input-port\\?|integer->char|integer\\?|interaction-environment|lcm|length|list->string|list->vector|list-ref|list-tail|list\\?|load|log|magnitude|make-polar|make-rectangular|make-string|make-vector|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null-environment|null\\?|number->string|number\\?|numerator|odd\\?|output-port\\?|pair\\?|peek-char|positive\\?|procedure\\?|quotient|rational\\?|rationalize|read|read-char|real-part|real\\?|remainder|reverse|round|scheme-report-environment|set-car!|set-cdr!|sin|sqrt|string|string->list|string->number|string->symbol|string-append|string-ci<=\\?|string-ci<\\?|string-ci=\\?|string-ci>=\\?|string-ci>\\?|string-copy|string-fill!|string-length|string-ref|string-set!|string<=\\?|string<\\?|string=\\?|string>=\\?|string>\\?|string\\?|substring|symbol->string|symbol\\?|tan|transcript-off|transcript-on|truncate|values|vector|vector->list|vector-fill!|vector-length|vector-ref|vector-set!|vector\\?|write|write-char|zero\\?)$"
|
||||
))
|
||||
(symbol) @function)
|
||||
|
||||
; special forms
|
||||
|
||||
@ -62,12 +58,10 @@
|
||||
(#match? @_f
|
||||
"^(let|let\\*|let-syntax|let-values|let\\*-values|letrec|letrec\\*|letrec-syntax)$"))
|
||||
|
||||
; quote
|
||||
; operators
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @_f
|
||||
(#eq? @_f "quote")) @string.symbol
|
||||
((symbol) @operator
|
||||
(#match? @operator "^(\\+|-|\\*|/|=|>|<|>=|<=)$"))
|
||||
|
||||
; library
|
||||
|
||||
@ -79,26 +73,31 @@
|
||||
|
||||
(#eq? @_lib "library"))
|
||||
|
||||
; procedure
|
||||
; quote
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @_f
|
||||
(#eq? @_f "quote")) @string.symbol
|
||||
|
||||
; keywords
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @function)
|
||||
((symbol) @keyword.conditional
|
||||
(#match? @keyword.conditional "^(if|cond|case|when|unless)$"
|
||||
)))
|
||||
|
||||
;; variables
|
||||
|
||||
((symbol) @variable.builtin
|
||||
(#eq? @variable.builtin "..."))
|
||||
|
||||
((symbol) @variable.builtin
|
||||
(#eq? @variable.builtin "."))
|
||||
|
||||
(symbol) @variable
|
||||
|
||||
["(" ")" "[" "]" "{" "}"] @punctuation.bracket
|
||||
|
||||
(quote "'") @operator
|
||||
(unquote_splicing ",@") @operator
|
||||
(unquote ",") @operator
|
||||
(quasiquote "`") @operator
|
||||
(list
|
||||
.
|
||||
(symbol) @keyword
|
||||
(#match? @keyword
|
||||
"^(define-syntax|let\\*|lambda|λ|case|=>|quote-splicing|unquote-splicing|set!|let|letrec|letrec-syntax|let-values|let\\*-values|do|else|define|cond|syntax-rules|unquote|begin|quote|let-syntax|and|if|quasiquote|letrec|delay|or|when|unless|identifier-syntax|assert|library|export|import|rename|only|except|prefix)$"
|
||||
))
|
||||
|
||||
(list
|
||||
.
|
||||
(symbol) @function.builtin
|
||||
(#match? @function.builtin
|
||||
"^(caar|cadr|call-with-input-file|call-with-output-file|cdar|cddr|list|open-input-file|open-output-file|with-input-from-file|with-output-to-file|\\*|\\+|-|/|<|<=|=|>|>=|abs|acos|angle|append|apply|asin|assoc|assq|assv|atan|boolean\\?|caaaar|caaadr|caaar|caadar|caaddr|caadr|cadaar|cadadr|cadar|caddar|cadddr|caddr|call-with-current-continuation|call-with-values|car|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cdr|ceiling|char->integer|char-alphabetic\\?|char-ci<=\\?|char-ci<\\?|char-ci=\\?|char-ci>=\\?|char-ci>\\?|char-downcase|char-lower-case\\?|char-numeric\\?|char-ready\\?|char-upcase|char-upper-case\\?|char-whitespace\\?|char<=\\?|char<\\?|char=\\?|char>=\\?|char>\\?|char\\?|close-input-port|close-output-port|complex\\?|cons|cos|current-error-port|current-input-port|current-output-port|denominator|display|dynamic-wind|eof-object\\?|eq\\?|equal\\?|eqv\\?|eval|even\\?|exact->inexact|exact\\?|exp|expt|floor|flush-output|for-each|force|gcd|imag-part|inexact->exact|inexact\\?|input-port\\?|integer->char|integer\\?|interaction-environment|lcm|length|list->string|list->vector|list-ref|list-tail|list\\?|load|log|magnitude|make-polar|make-rectangular|make-string|make-vector|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null-environment|null\\?|number->string|number\\?|numerator|odd\\?|output-port\\?|pair\\?|peek-char|positive\\?|procedure\\?|quotient|rational\\?|rationalize|read|read-char|real-part|real\\?|remainder|reverse|round|scheme-report-environment|set-car!|set-cdr!|sin|sqrt|string|string->list|string->number|string->symbol|string-append|string-ci<=\\?|string-ci<\\?|string-ci=\\?|string-ci>=\\?|string-ci>\\?|string-copy|string-fill!|string-length|string-ref|string-set!|string<=\\?|string<\\?|string=\\?|string>=\\?|string>\\?|string\\?|substring|symbol->string|symbol\\?|tan|transcript-off|transcript-on|truncate|values|vector|vector->list|vector-fill!|vector-length|vector-ref|vector-set!|vector\\?|write|write-char|zero\\?)$"
|
||||
))
|
||||
|
@ -1,4 +1,4 @@
|
||||
(syscall) @function
|
||||
(syscall) @function.builtin
|
||||
(integer) @constant.numeric
|
||||
(pointer) @constant.numeric
|
||||
(value) @label
|
||||
|
@ -40,6 +40,7 @@
|
||||
(float) @constant.numeric.float
|
||||
(integer) @constant.numeric.integer
|
||||
(comment) @comment
|
||||
[(path) (string) (json)] @string.special.path
|
||||
[(string) (json)] @string.special.path
|
||||
(path) @string.special.path
|
||||
(time) @string.special.symbol
|
||||
(boolean) @constant.builtin.boolean
|
||||
|
@ -1,13 +1,3 @@
|
||||
(block_mapping_pair
|
||||
key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member))
|
||||
(block_mapping_pair
|
||||
key: (flow_node (plain_scalar (string_scalar) @variable.other.member)))
|
||||
|
||||
(flow_mapping
|
||||
(_ key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member)))
|
||||
(flow_mapping
|
||||
(_ key: (flow_node (plain_scalar (string_scalar) @variable.other.member))))
|
||||
|
||||
(boolean_scalar) @constant.builtin.boolean
|
||||
(null_scalar) @constant.builtin
|
||||
(double_quote_scalar) @string
|
||||
@ -24,6 +14,16 @@
|
||||
(yaml_directive) @keyword
|
||||
(ERROR) @error
|
||||
|
||||
(block_mapping_pair
|
||||
key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member))
|
||||
(block_mapping_pair
|
||||
key: (flow_node (plain_scalar (string_scalar) @variable.other.member)))
|
||||
|
||||
(flow_mapping
|
||||
(_ key: (flow_node [(double_quote_scalar) (single_quote_scalar)] @variable.other.member)))
|
||||
(flow_mapping
|
||||
(_ key: (flow_node (plain_scalar (string_scalar) @variable.other.member))))
|
||||
|
||||
[
|
||||
","
|
||||
"-"
|
||||
|
@ -7,6 +7,18 @@
|
||||
(line_comment)
|
||||
] @comment.line
|
||||
|
||||
[
|
||||
variable: (IDENTIFIER)
|
||||
variable_type_function: (IDENTIFIER)
|
||||
] @variable
|
||||
|
||||
parameter: (IDENTIFIER) @variable.parameter
|
||||
|
||||
[
|
||||
field_member: (IDENTIFIER)
|
||||
field_access: (IDENTIFIER)
|
||||
] @variable.other.member
|
||||
|
||||
;; assume TitleCase is a type
|
||||
(
|
||||
[
|
||||
@ -36,6 +48,13 @@
|
||||
(#match? @constant "^[A-Z][A-Z_0-9]+$")
|
||||
)
|
||||
|
||||
[
|
||||
function_call: (IDENTIFIER)
|
||||
function: (IDENTIFIER)
|
||||
] @function
|
||||
|
||||
exception: "!" @keyword.control.exception
|
||||
|
||||
;; _
|
||||
(
|
||||
(IDENTIFIER) @variable.builtin
|
||||
@ -45,25 +64,6 @@
|
||||
;; C Pointers [*c]T
|
||||
(PtrTypeStart "c" @variable.builtin)
|
||||
|
||||
[
|
||||
variable: (IDENTIFIER)
|
||||
variable_type_function: (IDENTIFIER)
|
||||
] @variable
|
||||
|
||||
parameter: (IDENTIFIER) @variable.parameter
|
||||
|
||||
[
|
||||
field_member: (IDENTIFIER)
|
||||
field_access: (IDENTIFIER)
|
||||
] @variable.other.member
|
||||
|
||||
[
|
||||
function_call: (IDENTIFIER)
|
||||
function: (IDENTIFIER)
|
||||
] @function
|
||||
|
||||
exception: "!" @keyword.control.exception
|
||||
|
||||
field_constant: (IDENTIFIER) @constant
|
||||
|
||||
(BUILTINIDENTIFIER) @function.builtin
|
||||
|
Loading…
Reference in New Issue
Block a user