添加文本对象查询
文本对象 (textobjects) 是特定于语言的,比如函数、类等。它需要 tree-sitter 语法和 textobjects.scm
查询文件才能正常工作。 tree-sitter 让我们查询源代码语法树,并捕获特定的部分。
查询 (query) 是以 lisp 方言的方式写的。更多关于如何编写查询的信息可参考官方 tree-sitter 文档。
贡献时,查询文件应放置于 runtime/queries/{language}/textobjects.scm
。
注意,你应该将它们放置在你本地的运行时目录 (Linux 下为 ~/.config/helix/runtime
) 下来测试查询文件。
会识别以下捕获 (captures):
捕获名称 |
---|
function.inside |
function.around |
class.inside |
class.around |
test.inside |
test.around |
parameter.inside |
comment.inside |
comment.around |
Helix 的 github 仓库下有示例。
基于导航的文本对象查询
基于 tree-sitter 的导航 使用以下捕获顺序做到:
object.movement
object.around
object.inside
比如如果在某个语言的 textobjects.scm
文件中定义了 function.around
捕获,那么函数导航应该自动工作。只在
function.around
所捕获的节点不再导航上下文中起作用时,才应该定义 function.movement
。