From a2818819bb5afc3283e935727d5a1b0e9d1cf6b3 Mon Sep 17 00:00:00 2001 From: “jvgrootveld” <“justin.vangrootveld@gmail.com”> Date: Fri, 15 Jan 2021 21:44:40 +0100 Subject: treesitter: default start and end row when omitted Add support for default start and end row when omitted in the query:iter_captures and query:iter_matches functions. When the start and end row values are omitted, the values of the given node is used. The end row value is incremented by 1 to include the node end row in the match. Updated tests and docs accordingly. --- runtime/lua/vim/treesitter/query.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'runtime/lua') diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua index 5a27d740a2..9d1f265e54 100644 --- a/runtime/lua/vim/treesitter/query.lua +++ b/runtime/lua/vim/treesitter/query.lua @@ -353,6 +353,12 @@ function Query:iter_captures(node, source, start, stop) if type(source) == "number" and source == 0 then source = vim.api.nvim_get_current_buf() end + + if start == nil and stop == nil then + start, _, stop, _ = node:range() + stop = stop + 1 -- Make stop inclusive + end + local raw_iter = node:_rawquery(self.query, true, start, stop) local function iter() local capture, captured_node, match = raw_iter() @@ -385,6 +391,12 @@ function Query:iter_matches(node, source, start, stop) if type(source) == "number" and source == 0 then source = vim.api.nvim_get_current_buf() end + + if start == nil and stop == nil then + start, _, stop, _ = node:range() + stop = stop + 1 -- Make stop inclusive + end + local raw_iter = node:_rawquery(self.query, false, start, stop) local function iter() local pattern, match = raw_iter() -- cgit