From 2fc85c6c68ff25df35cf4a9979a97a902ec34313 Mon Sep 17 00:00:00 2001 From: omentic Date: Wed, 1 Nov 2023 04:44:42 +0000 Subject: deploy: 9663740245e2c18e160f6563d2f114f59d27b7c9 --- 23.10.1/guides/textobject.html | 270 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 23.10.1/guides/textobject.html (limited to '23.10.1/guides/textobject.html') diff --git a/23.10.1/guides/textobject.html b/23.10.1/guides/textobject.html new file mode 100644 index 00000000..a47fd8a6 --- /dev/null +++ b/23.10.1/guides/textobject.html @@ -0,0 +1,270 @@ + + + + + + Adding textobject queries + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + +
+
+

Adding 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:

+
+ + + + + + + + + +
Capture Name
function.inside
function.around
class.inside
class.around
test.inside
test.around
parameter.inside
comment.inside
comment.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.movement
  • +
  • object.around
  • +
  • object.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.

+ +
+ + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + +
+ + -- cgit v1.2.3-70-g09d2