Textobject Queries
Helix supports textobjects that are language specific, such as functions, classes, etc.
These textobjects require an accompanying tree-sitter grammar and a textobjects.scm query file
to work properly. Tree-sitter allows us to query the source code syntax tree
and capture specific parts of it. The queries are written in a lisp dialect.
More information on how to write queries can be found in the official tree-sitter
documentation ↗.
Query files should be placed in runtime/queries/{language}/textobjects.scm
when contributing to Helix. Note that to test the query files locally you should put
them under your local runtime directory (~/.config/helix/runtime on Linux
for example).
The following captures ↗ are recognized:
function.insidefunction.aroundclass.insideclass.aroundtest.insidetest.aroundparameter.insidecomment.insidecomment.aroundentry.insideentry.around
Example query files ↗ can be found in the helix GitHub repository.
Queries for textobject based navigation
Tree-sitter based navigation in Helix is done using captures in the following order:
object.movementobject.aroundobject.inside
For example if a function.around capture has been already defined for a language
in its textobjects.scm file, function navigation should also work automatically.
function.movement should be defined only if the node captured by function.around
doesn’t make sense in a navigation context.