From aa4c3e83e3d347bf37161b117c8c1e2d95031d2d Mon Sep 17 00:00:00 2001 From: Stephan Seitz Date: Sun, 18 Oct 2020 16:07:36 +0200 Subject: Add virtual range for creating node-like objects from multiple nodes --- lua/nvim-treesitter/query.lua | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lua/nvim-treesitter/query.lua') diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index 09fdbbdd..4cb5993b 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -1,5 +1,6 @@ local api = vim.api local tsq = require'vim.treesitter.query' +local tsrange = require'nvim-treesitter.tsrange' local utils = require'nvim-treesitter.utils' local parsers = require'nvim-treesitter.parsers' local caching = require'nvim-treesitter.caching' @@ -98,6 +99,10 @@ function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) if pred[1] == "set!" and type(pred[2]) == "string" then insert_to_path(prepared_match, split(pred[2]), pred[3]) end + if pred[1] == "make-range!" and type(pred[2]) == "string" and #pred == 4 then + insert_to_path(prepared_match, split(pred[2]..'.node'), + tsrange.TSRange.from_nodes(bufnr, match[pred[3]], match[pred[4]])) + end end end -- cgit v1.2.3