From ddf2de739068b5ff0866ccb1d067f3cb53a4fc55 Mon Sep 17 00:00:00 2001 From: David Czihak Date: Thu, 7 May 2026 14:33:19 +0200 Subject: Initial commit --- Queries/arguments.scm | 3 ++ Queries/folds.scm | 22 +++++++++ Queries/highlights.scm | 123 +++++++++++++++++++++++++++++++++++++++++++++++++ Queries/symbols.scm | 74 +++++++++++++++++++++++++++++ 4 files changed, 222 insertions(+) create mode 100644 Queries/arguments.scm create mode 100644 Queries/folds.scm create mode 100644 Queries/highlights.scm create mode 100644 Queries/symbols.scm (limited to 'Queries') diff --git a/Queries/arguments.scm b/Queries/arguments.scm new file mode 100644 index 0000000..7824dba --- /dev/null +++ b/Queries/arguments.scm @@ -0,0 +1,3 @@ +(parameter + name: (identifier) @name + type: (_) @type) diff --git a/Queries/folds.scm b/Queries/folds.scm new file mode 100644 index 0000000..2275e5f --- /dev/null +++ b/Queries/folds.scm @@ -0,0 +1,22 @@ +[ + (block) + (switch_expression) + (initializer_list) + (asm_expression) + (multiline_string) + (if_statement) + (while_statement) + (for_statement) + (if_expression) + (else_clause) + (for_expression) + (while_expression) + (if_type_expression) + (function_signature) + (parameters) + (struct_declaration) + (opaque_declaration) + (enum_declaration) + (union_declaration) + (error_set_declaration) +] @subtree diff --git a/Queries/highlights.scm b/Queries/highlights.scm new file mode 100644 index 0000000..b366bc7 --- /dev/null +++ b/Queries/highlights.scm @@ -0,0 +1,123 @@ +(comment) @comment + +[ + (string) + (multiline_string) + (character) +] @string + +[ + (integer) + (float) +] @value.number + +[ + "true" + "false" +] @value.boolean + +[ + "null" + "undefined" + "unreachable" +] @value.null + +(builtin_type) @identifier.type +(builtin_identifier) @identifier.core + +((builtin_identifier) @processing + (#match? @processing "^@(import|cImport)$")) + +((identifier) @identifier.core + (#eq? @identifier.core "_")) + +(parameter + name: (identifier) @identifier.argument) + +(payload + (identifier) @identifier.argument) + +(field_expression + member: (identifier) @identifier.property) + +(field_initializer + (identifier) @identifier.property) + +(function_declaration + name: (identifier) @identifier.function) + +(call_expression + function: (identifier) @identifier.function) + +(call_expression + function: (field_expression + member: (identifier) @identifier.function)) + +((identifier) @identifier.type + (#match? @identifier.type "^[A-Z][A-Za-z0-9_]*$")) + +((identifier) @identifier.constant + (#match? @identifier.constant "^[A-Z][A-Z0-9_]+$")) + +[ + "asm" + "const" + "defer" + "errdefer" + "error" + "return" + "test" + "var" +] @keyword + +[ + "struct" + "union" + "enum" + "opaque" + "fn" +] @keyword.construct + +[ + "if" + "else" + "switch" + "for" + "while" + "try" + "catch" + "break" + "continue" +] @keyword.condition + +[ + "usingnamespace" + "export" + "comptime" + "inline" + "noinline" + "extern" + "pub" + "packed" + "threadlocal" + "volatile" + "allowzero" + "noalias" + "addrspace" + "align" + "callconv" + "linksection" + "async" + "await" + "suspend" + "nosuspend" + "resume" +] @keyword.modifier + +[ + "and" + "or" + "orelse" +] @keyword.operator + +(ERROR) @invalid diff --git a/Queries/symbols.scm b/Queries/symbols.scm new file mode 100644 index 0000000..5f903cb --- /dev/null +++ b/Queries/symbols.scm @@ -0,0 +1,74 @@ +( + (function_declaration + name: (identifier) @name + (parameters) @arguments.target) @subtree + (#set! role function-or-method) + (#set! arguments.query "arguments.scm") +) + +( + (variable_declaration + (identifier) @name + (struct_declaration)) @subtree + (#set! role struct) +) + +( + (variable_declaration + (identifier) @name + (enum_declaration)) @subtree + (#set! role enum) +) + +( + (variable_declaration + (identifier) @name + (union_declaration)) @subtree + (#set! role struct) +) + +( + (variable_declaration + (identifier) @name + (opaque_declaration)) @subtree + (#set! role struct) +) + +( + (variable_declaration + (identifier) @name + (error_set_declaration)) @subtree + (#set! role enum) +) + +( + (container_field + name: (identifier) @name) @subtree + (#set! role property) +) + +( + (container_field + name: (primary_type_expression + (identifier) @name)) @subtree + (#set! role property) +) + +( + (test_declaration + (string) @name @displayname) @subtree + (#set! role function) +) + +( + (test_declaration + (identifier) @name @displayname) @subtree + (#set! role function) +) + +( + (block + (variable_declaration + (identifier) @name) @subtree) + (#set! role variable) +) -- cgit v1.3