From 7b6a399a1dfd55c1a993730fa6bbc2e42c74bb6d Mon Sep 17 00:00:00 2001 From: omentic Date: Wed, 1 May 2024 23:29:57 +0000 Subject: deploy: 12eec890240a05d1e090114f7f4fdd7c1ee8ff88 --- master/guides/textobject.html | 270 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 master/guides/textobject.html (limited to 'master/guides/textobject.html') diff --git a/master/guides/textobject.html b/master/guides/textobject.html new file mode 100644 index 00000000..d67f0dda --- /dev/null +++ b/master/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