neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

testutil.lua (727B)


      1 local n = require('test.functional.testnvim')()
      2 
      3 local exec_lua = n.exec_lua
      4 
      5 local M = {}
      6 
      7 ---@param language string
      8 ---@param query_string string
      9 function M.run_query(language, query_string)
     10  return exec_lua(function(lang, query_str)
     11    local query = vim.treesitter.query.parse(lang, query_str)
     12    local parser = vim.treesitter.get_parser()
     13    local tree = parser:parse()[1]
     14    local Range = require('vim.treesitter._range')
     15    local res = {}
     16    for id, node, metadata in query:iter_captures(tree:root(), 0) do
     17      table.insert(res, {
     18        query.captures[id],
     19        { Range.unpack4(vim.treesitter.get_range(node, 0, metadata[id])) },
     20      })
     21    end
     22    return res
     23  end, language, query_string)
     24 end
     25 
     26 return M