mirror of https://github.com/helix-editor/helix
Update to more up-to-date zig tree-sitter repo
The previous tree-sitter repo seems to be unmaintained. Switch to a more maintained tree-sitter repo. I also fixed the queries: precedences, some helix captures, ...pull/11980/head
parent
855a43a266
commit
75debfeb3e
@ -1,231 +1,294 @@
|
|||||||
[
|
; Comments
|
||||||
(container_doc_comment)
|
|
||||||
(doc_comment)
|
|
||||||
] @comment.documentation
|
|
||||||
|
|
||||||
[
|
((comment) @comment.block.documentation
|
||||||
(line_comment)
|
(#lua-match? @comment.block.documentation "^//!"))
|
||||||
] @comment.line
|
|
||||||
|
|
||||||
;; assume TitleCase is a type
|
(comment) @comment.line
|
||||||
(
|
|
||||||
[
|
|
||||||
variable_type_function: (IDENTIFIER)
|
|
||||||
field_access: (IDENTIFIER)
|
|
||||||
parameter: (IDENTIFIER)
|
|
||||||
] @type
|
|
||||||
(#match? @type "^[A-Z]([a-z]+[A-Za-z0-9]*)+$")
|
|
||||||
)
|
|
||||||
|
|
||||||
;; assume camelCase is a function
|
; Punctuation
|
||||||
(
|
|
||||||
[
|
|
||||||
variable_type_function: (IDENTIFIER)
|
|
||||||
field_access: (IDENTIFIER)
|
|
||||||
parameter: (IDENTIFIER)
|
|
||||||
] @function
|
|
||||||
(#match? @function "^[a-z]+([A-Z][a-z0-9]*)+$")
|
|
||||||
)
|
|
||||||
|
|
||||||
;; assume all CAPS_1 is a constant
|
|
||||||
(
|
|
||||||
[
|
[
|
||||||
variable_type_function: (IDENTIFIER)
|
"["
|
||||||
field_access: (IDENTIFIER)
|
"]"
|
||||||
] @constant
|
"("
|
||||||
(#match? @constant "^[A-Z][A-Z_0-9]+$")
|
")"
|
||||||
)
|
"{"
|
||||||
|
"}"
|
||||||
|
] @punctuation.bracket
|
||||||
|
|
||||||
;; _
|
[
|
||||||
(
|
";"
|
||||||
(IDENTIFIER) @variable.builtin
|
"."
|
||||||
(#eq? @variable.builtin "_")
|
","
|
||||||
)
|
":"
|
||||||
|
"=>"
|
||||||
|
"->"
|
||||||
|
] @punctuation.delimiter
|
||||||
|
|
||||||
;; C Pointers [*c]T
|
(payload "|" @punctuation.bracket)
|
||||||
(PtrTypeStart "c" @variable.builtin)
|
|
||||||
|
|
||||||
[
|
; Literals
|
||||||
variable: (IDENTIFIER)
|
|
||||||
variable_type_function: (IDENTIFIER)
|
|
||||||
] @variable
|
|
||||||
|
|
||||||
parameter: (IDENTIFIER) @variable.parameter
|
(character) @constant.character
|
||||||
|
|
||||||
[
|
([
|
||||||
field_member: (IDENTIFIER)
|
(string)
|
||||||
field_access: (IDENTIFIER)
|
(multiline_string)
|
||||||
] @variable.other.member
|
] @string
|
||||||
|
(#set! "priority" 95))
|
||||||
|
|
||||||
[
|
(integer) @constant.numeric.integer
|
||||||
function_call: (IDENTIFIER)
|
|
||||||
function: (IDENTIFIER)
|
|
||||||
] @function
|
|
||||||
|
|
||||||
exception: "!" @keyword.control.exception
|
(float) @constant.numeric.float
|
||||||
|
|
||||||
field_constant: (IDENTIFIER) @constant
|
(boolean) @constant.builtin.boolean
|
||||||
|
|
||||||
(BUILTINIDENTIFIER) @function.builtin
|
(escape_sequence) @constant.character.escape
|
||||||
|
|
||||||
((BUILTINIDENTIFIER) @keyword.control.import
|
; Operator
|
||||||
(#any-of? @keyword.control.import "@import" "@cImport"))
|
|
||||||
|
|
||||||
(INTEGER) @constant.numeric.integer
|
[
|
||||||
|
"="
|
||||||
|
"*="
|
||||||
|
"*%="
|
||||||
|
"*|="
|
||||||
|
"/="
|
||||||
|
"%="
|
||||||
|
"+="
|
||||||
|
"+%="
|
||||||
|
"+|="
|
||||||
|
"-="
|
||||||
|
"-%="
|
||||||
|
"-|="
|
||||||
|
"<<="
|
||||||
|
"<<|="
|
||||||
|
">>="
|
||||||
|
"&="
|
||||||
|
"^="
|
||||||
|
"|="
|
||||||
|
"!"
|
||||||
|
"~"
|
||||||
|
"-"
|
||||||
|
"-%"
|
||||||
|
"&"
|
||||||
|
"=="
|
||||||
|
"!="
|
||||||
|
">"
|
||||||
|
">="
|
||||||
|
"<="
|
||||||
|
"<"
|
||||||
|
"&"
|
||||||
|
"^"
|
||||||
|
"|"
|
||||||
|
"<<"
|
||||||
|
">>"
|
||||||
|
"<<|"
|
||||||
|
"+"
|
||||||
|
"++"
|
||||||
|
"+%"
|
||||||
|
"-%"
|
||||||
|
"+|"
|
||||||
|
"-|"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
"%"
|
||||||
|
"**"
|
||||||
|
"*%"
|
||||||
|
"*|"
|
||||||
|
"||"
|
||||||
|
".*"
|
||||||
|
".?"
|
||||||
|
"?"
|
||||||
|
".."
|
||||||
|
] @operator
|
||||||
|
|
||||||
(FLOAT) @constant.numeric.float
|
; Keywords
|
||||||
|
|
||||||
[
|
[
|
||||||
(LINESTRING)
|
"asm"
|
||||||
(STRINGLITERALSINGLE)
|
"test"
|
||||||
] @string
|
] @keyword
|
||||||
|
|
||||||
(CHAR_LITERAL) @constant.character
|
[
|
||||||
(EscapeSequence) @constant.character.escape
|
"error"
|
||||||
(FormatSequence) @string.special
|
"const"
|
||||||
|
"var"
|
||||||
|
"struct"
|
||||||
|
"union"
|
||||||
|
"enum"
|
||||||
|
"opaque"
|
||||||
|
] @keyword.storage.type
|
||||||
|
|
||||||
|
; todo: keyword.coroutine
|
||||||
[
|
[
|
||||||
"anytype"
|
"async"
|
||||||
"anyframe"
|
"await"
|
||||||
(BuildinTypeExpr)
|
"suspend"
|
||||||
] @type.builtin
|
"nosuspend"
|
||||||
|
"resume"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
(BreakLabel (IDENTIFIER) @label)
|
"fn" @keyword.function
|
||||||
(BlockLabel (IDENTIFIER) @label)
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"true"
|
"and"
|
||||||
"false"
|
"or"
|
||||||
] @constant.builtin.boolean
|
"orelse"
|
||||||
|
] @keyword.operator
|
||||||
|
|
||||||
[
|
[
|
||||||
"undefined"
|
"try"
|
||||||
"unreachable"
|
"unreachable"
|
||||||
"null"
|
"return"
|
||||||
] @constant.builtin
|
] @keyword.control.return
|
||||||
|
|
||||||
[
|
[
|
||||||
"else"
|
|
||||||
"if"
|
"if"
|
||||||
|
"else"
|
||||||
"switch"
|
"switch"
|
||||||
|
"catch"
|
||||||
] @keyword.control.conditional
|
] @keyword.control.conditional
|
||||||
|
|
||||||
[
|
[
|
||||||
"for"
|
"for"
|
||||||
"while"
|
"while"
|
||||||
|
"break"
|
||||||
|
"continue"
|
||||||
] @keyword.control.repeat
|
] @keyword.control.repeat
|
||||||
|
|
||||||
[
|
[
|
||||||
"or"
|
"usingnamespace"
|
||||||
"and"
|
"export"
|
||||||
"orelse"
|
] @keyword.control.import
|
||||||
] @keyword.operator
|
|
||||||
|
|
||||||
[
|
|
||||||
"enum"
|
|
||||||
] @type.enum
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"struct"
|
"defer"
|
||||||
"union"
|
"errdefer"
|
||||||
"packed"
|
] @keyword.control.exception
|
||||||
"opaque"
|
|
||||||
"export"
|
|
||||||
"extern"
|
|
||||||
"linksection"
|
|
||||||
] @keyword.storage.type
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"const"
|
|
||||||
"var"
|
|
||||||
"threadlocal"
|
|
||||||
"allowzero"
|
|
||||||
"volatile"
|
"volatile"
|
||||||
|
"allowzero"
|
||||||
|
"noalias"
|
||||||
|
"addrspace"
|
||||||
"align"
|
"align"
|
||||||
|
"callconv"
|
||||||
|
"linksection"
|
||||||
|
"pub"
|
||||||
|
"inline"
|
||||||
|
"noinline"
|
||||||
|
"extern"
|
||||||
|
"comptime"
|
||||||
|
"packed"
|
||||||
|
"threadlocal"
|
||||||
] @keyword.storage.modifier
|
] @keyword.storage.modifier
|
||||||
|
|
||||||
[
|
; Builtins
|
||||||
"try"
|
|
||||||
"error"
|
|
||||||
"catch"
|
|
||||||
] @keyword.control.exception
|
|
||||||
|
|
||||||
[
|
[
|
||||||
"fn"
|
"c"
|
||||||
] @keyword.function
|
"..."
|
||||||
|
] @variable.builtin
|
||||||
|
|
||||||
[
|
((identifier) @variable.builtin
|
||||||
"test"
|
(#eq? @variable.builtin "_"))
|
||||||
] @keyword
|
|
||||||
|
|
||||||
[
|
(calling_convention
|
||||||
"pub"
|
(identifier) @variable.builtin)
|
||||||
"usingnamespace"
|
|
||||||
] @keyword.control.import
|
|
||||||
|
|
||||||
[
|
; Modules
|
||||||
"return"
|
|
||||||
"break"
|
|
||||||
"continue"
|
|
||||||
] @keyword.control.return
|
|
||||||
|
|
||||||
[
|
(variable_declaration
|
||||||
"defer"
|
(identifier) @variable ; TODO: module
|
||||||
"errdefer"
|
(builtin_function
|
||||||
"async"
|
(builtin_identifier) @keyword.control.import
|
||||||
"nosuspend"
|
(#any-of? @keyword.control.import "@import" "@cImport")))
|
||||||
"await"
|
|
||||||
"suspend"
|
|
||||||
"resume"
|
|
||||||
] @function.macro
|
|
||||||
|
|
||||||
[
|
; Functions
|
||||||
"comptime"
|
|
||||||
"inline"
|
|
||||||
"noinline"
|
|
||||||
"asm"
|
|
||||||
"callconv"
|
|
||||||
"noalias"
|
|
||||||
] @keyword.directive
|
|
||||||
|
|
||||||
[
|
(call_expression
|
||||||
(CompareOp)
|
function: (field_expression
|
||||||
(BitwiseOp)
|
member: (identifier) @function.method))
|
||||||
(BitShiftOp)
|
|
||||||
(AdditionOp)
|
(call_expression
|
||||||
(AssignOp)
|
function: (identifier) @function)
|
||||||
(MultiplyOp)
|
|
||||||
(PrefixOp)
|
(function_declaration
|
||||||
"*"
|
name: (identifier) @function)
|
||||||
"**"
|
|
||||||
"->"
|
(builtin_identifier) @function.builtin
|
||||||
".?"
|
|
||||||
".*"
|
; Fields
|
||||||
"?"
|
|
||||||
] @operator
|
(field_initializer
|
||||||
|
.
|
||||||
|
(identifier) @variable.other.member)
|
||||||
|
|
||||||
|
(field_expression
|
||||||
|
(_)
|
||||||
|
member: (identifier) @variable.other.member)
|
||||||
|
|
||||||
|
(container_field
|
||||||
|
name: (identifier) @variable.other.member)
|
||||||
|
|
||||||
|
(initializer_list
|
||||||
|
(assignment_expression
|
||||||
|
left: (field_expression
|
||||||
|
.
|
||||||
|
member: (identifier) @variable.other.member)))
|
||||||
|
|
||||||
|
; Labels
|
||||||
|
|
||||||
|
(block_label (identifier) @label)
|
||||||
|
|
||||||
|
(break_label (identifier) @label)
|
||||||
|
|
||||||
|
; Constants
|
||||||
|
|
||||||
|
((identifier) @constant
|
||||||
|
(#lua-match? @constant "^[A-Z][A-Z_0-9]+$"))
|
||||||
|
|
||||||
[
|
[
|
||||||
";"
|
"null"
|
||||||
"."
|
"undefined"
|
||||||
","
|
] @constant.builtin
|
||||||
":"
|
|
||||||
] @punctuation.delimiter
|
(field_expression
|
||||||
|
.
|
||||||
|
member: (identifier) @constant)
|
||||||
|
|
||||||
|
(enum_declaration
|
||||||
|
(container_field
|
||||||
|
type: (identifier) @constant))
|
||||||
|
|
||||||
|
; Types
|
||||||
|
|
||||||
|
(parameter
|
||||||
|
type: (identifier) @type)
|
||||||
|
|
||||||
|
((identifier) @type
|
||||||
|
(#lua-match? @type "^[A-Z_][a-zA-Z0-9_]*"))
|
||||||
|
|
||||||
|
(variable_declaration
|
||||||
|
(identifier) @type
|
||||||
|
"="
|
||||||
[
|
[
|
||||||
".."
|
(struct_declaration)
|
||||||
"..."
|
(enum_declaration)
|
||||||
] @punctuation.special
|
(union_declaration)
|
||||||
|
(opaque_declaration)
|
||||||
|
])
|
||||||
|
|
||||||
[
|
[
|
||||||
"["
|
(builtin_type)
|
||||||
"]"
|
"anyframe"
|
||||||
"("
|
] @type.builtin
|
||||||
")"
|
|
||||||
"{"
|
; Parameters
|
||||||
"}"
|
|
||||||
(Payload "|")
|
(parameter
|
||||||
(PtrPayload "|")
|
name: (identifier) @variable.parameter)
|
||||||
(PtrIndexPayload "|")
|
|
||||||
] @punctuation.bracket
|
; Variables
|
||||||
|
|
||||||
(ERROR) @keyword.control.exception
|
(identifier) @variable
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
([(line_comment) (doc_comment)] @injection.content
|
((comment) @injection.content
|
||||||
(#set! injection.language "comment"))
|
(#set! injection.language "comment"))
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
(Decl (FnProto)
|
(function_declaration
|
||||||
(_) @function.inside) @function.around
|
body: (_) @function.inside) @function.around
|
||||||
|
|
||||||
(TestDecl (_) @test.inside) @test.around
|
(test_declaration (_) (block) @test.inside) @test.around
|
||||||
|
|
||||||
; matches all of: struct, enum, union
|
; matches all of: struct, enum, union
|
||||||
; this unfortunately cannot be split up because
|
; this unfortunately cannot be split up because
|
||||||
; of the way struct "container" types are defined
|
; of the way struct "container" types are defined
|
||||||
(Decl (VarDecl (ErrorUnionExpr (SuffixExpr (ContainerDecl
|
(variable_declaration (identifier) (struct_declaration
|
||||||
(_) @class.inside))))) @class.around
|
(_) @class.inside)) @class.around
|
||||||
|
|
||||||
(Decl (VarDecl (ErrorUnionExpr (SuffixExpr (ErrorSetDecl
|
(variable_declaration (identifier) (enum_declaration
|
||||||
(_) @class.inside))))) @class.around
|
(_) @class.inside)) @class.around
|
||||||
|
|
||||||
(ParamDeclList
|
(variable_declaration (identifier) (enum_declaration
|
||||||
|
(_) @class.inside)) @class.around
|
||||||
|
|
||||||
|
(parameters
|
||||||
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||||
|
|
||||||
[
|
(comment) @comment.inside
|
||||||
(doc_comment)
|
(comment)+ @comment.around
|
||||||
(line_comment)
|
|
||||||
] @comment.inside
|
|
||||||
(line_comment)+ @comment.around
|
|
||||||
(doc_comment)+ @comment.around
|
|
||||||
|
Loading…
Reference in New Issue