; Zig highlights, from tree-sitter-grammars/tree-sitter-zig v1.1.2 ; queries/highlights.scm (MIT). Reordered for later-patterns-win, capture names ; mapped onto zed syntax keys — upstream's keyword.* split collapses to ; @keyword, which zed themes colour as one — and the #lua-match? identifier ; heuristics rewritten as #match?, which this engine evaluates. ["(" ")" "[" "]" "{" "}"] @punctuation.bracket (payload "|" @punctuation.bracket) [";" "," "." ":" "=>" "->"] @punctuation.delimiter ["=" "==" "!=" "<" ">" "<=" ">=" "+" "+%" "+|" "-" "-%" "-|" "*" "*%" "*|" "**" "/" "%" "&" "|" "^" "~" "!" "||" "<<" "<<|" ">>" ".." ".*" ".?" "?" "+=" "+%=" "+|=" "-=" "-%=" "-|=" "*=" "*%=" "*|=" "/=" "%=" "&=" "|=" "^=" "<<=" "<<|=" ">>="] @operator ["addrspace" "align" "allowzero" "and" "asm" "async" "await" "break" "callconv" "catch" "comptime" "const" "continue" "defer" "else" "enum" "errdefer" "error" "export" "extern" "fn" "for" "if" "inline" "linksection" "noalias" "noinline" "nosuspend" "opaque" "or" "orelse" "packed" "pub" "resume" "return" "struct" "suspend" "switch" "test" "threadlocal" "try" "union" "usingnamespace" "var" "volatile" "while"] @keyword (builtin_type) @type ["anyframe" "anytype"] @type (parameter type: (identifier) @type) (variable_declaration (identifier) @type "=" [(struct_declaration) (enum_declaration) (union_declaration) (opaque_declaration)]) ["null" "undefined" "unreachable"] @constant (boolean) @constant ; an enum literal — .ok — is a member with nothing to its left (field_expression . member: (identifier) @constant) (enum_declaration (container_field type: (identifier) @constant)) (container_field name: (identifier) @property) (field_initializer . (identifier) @property) (field_expression (_) member: (identifier) @property) ; .x = 1 inside a Point{...} is a field, not the enum literal above (initializer_list (assignment_expression left: (field_expression . member: (identifier) @property))) (parameter name: (identifier) @variable.parameter) (block_label (identifier) @label) (break_label (identifier) @label) (function_declaration name: (identifier) @function) (call_expression function: (identifier) @function) (call_expression function: (field_expression member: (identifier) @function.method)) (builtin_identifier) @function.builtin ; Zig has no type-identifier node, only the TitleCase convention, and these ; land after the call patterns so that the convention wins the way upstream's ; first-pattern-wins order has it: std.ArrayList(u8) is a type, not a call. ((identifier) @type (#match? @type "^[A-Z][a-zA-Z0-9_]*$")) ((identifier) @constant (#match? @constant "^[A-Z][A-Z0-9_]+$")) [(integer) (float)] @number [(string) (multiline_string) (character)] @string (escape_sequence) @string.escape (comment) @comment ((comment) @comment.doc (#match? @comment.doc "^//[/!]"))