summaryrefslogtreecommitdiff
path: root/vendor
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 17:13:46 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commitc5d96bec3d5279904525292ef933a985a974b017 (patch)
tree968d8ca5a1d2955c4b8f86354963f5f7d28c6350 /vendor
parentdf4d11bb95bc7ea9554b55d2211c4704a2594f08 (diff)
downloadpardes-c5d96bec3d5279904525292ef933a985a974b017.tar.gz
pardes-c5d96bec3d5279904525292ef933a985a974b017.zip
Zig has textobjects: helix's query, ported to the zig grammar pardes builds
pardes builds maxxnino/tree-sitter-zig, whose node names are not those of the grammar helix's query targets, so the query is ported by hand (vendor/queries/zig, its MPL header saying it is modified and how): a function is a Decl holding an FnProto and a Block with pub beside it, struct/enum/union one ContainerDecl, parameters and arguments ParamDeclList and FnCallArguments, and comments come in three kinds. That grammar's comments take their line's newline, and a node ending in a newline is now taken without it, as helix's grammars have it. The replay test gains fifteen Zig cases from the installed hx; none walks call arguments, which the reference helix counts as parameters and 25.07.1's query does not. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'vendor')
-rw-r--r--vendor/queries/README.md7
-rw-r--r--vendor/queries/zig/textobjects.scm40
2 files changed, 45 insertions, 2 deletions
diff --git a/vendor/queries/README.md b/vendor/queries/README.md
index abd37d00..082f4e6b 100644
--- a/vendor/queries/README.md
+++ b/vendor/queries/README.md
@@ -8,8 +8,11 @@ is `helix.LICENSE` here. They give `]f`, `[f`, `mif` and the other
tree-sitter textobject keys what a function, class, argument, comment, test,
entry or element is.
+`zig/textobjects.scm` is helix's query MODIFIED by hand for the zig grammar
+pardes builds, which names its nodes differently; its header says how.
+
Not vendored: fortran, markdown and powershell (helix has no query for
-them), and erlang and zig, whose helix queries do not compile against the
-grammar versions pardes builds (a node name either side has renamed). Those
+them), and erlang, whose helix query does not compile against the grammar
+version pardes builds. Those
grammars have no textobjects, and the keys do nothing there, as in helix
without a query.
diff --git a/vendor/queries/zig/textobjects.scm b/vendor/queries/zig/textobjects.scm
new file mode 100644
index 00000000..1c40b137
--- /dev/null
+++ b/vendor/queries/zig/textobjects.scm
@@ -0,0 +1,40 @@
+; Adapted from helix (https://github.com/helix-editor/helix) at 278b24389:
+; runtime/queries/zig/textobjects.scm, MODIFIED for the zig grammar pardes
+; builds (maxxnino/tree-sitter-zig), whose node names differ from the
+; tree-sitter-grammars one helix uses: function_declaration is a Decl holding
+; an FnProto and a Block, with `pub` a sibling before it; variable_declaration
+; is VarDecl; struct/enum/union are one ContainerDecl; parameters and
+; arguments are ParamDeclList and FnCallArguments; comments come in three
+; kinds.
+; Licensed under the Mozilla Public License 2.0 (vendor/queries/helix.LICENSE,
+; https://mozilla.org/MPL/2.0/).
+
+(_
+ "pub"? @function.around
+ .
+ (Decl
+ (FnProto)
+ (Block) @function.inside) @function.around)
+
+(TestDecl (Block) @test.inside) @test.around
+
+; matches all of: struct, enum, union (one ContainerDecl in this grammar),
+; `pub` with them where there is one
+(_
+ "pub"? @class.around
+ .
+ (Decl
+ (VarDecl
+ (ErrorUnionExpr
+ (SuffixExpr
+ (ContainerDecl
+ [(ContainerField) (Decl) (TestDecl) (ComptimeDecl)] @class.inside))))) @class.around)
+
+(ParamDeclList
+ ((ParamDecl) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+(FnCallArguments
+ ((_) @parameter.inside . ","? @parameter.around) @parameter.around)
+
+[(line_comment) (doc_comment) (container_doc_comment)] @comment.inside
+[(line_comment) (doc_comment) (container_doc_comment)]+ @comment.around