treesitter: runtime queries

Runtime queries just work like ftplugins, that is:

- Queries in the `after` directory are sourced _after_ the "base" query
- Otherwise, the last define query takes precedence.

Queries can be found in the `queries` directory.

Update runtime/lua/vim/treesitter/query.lua

Co-authored-by: Paul Burlumi <paul@burlumi.com>
This commit is contained in:
Thomas Vigouroux
2020-10-06 09:09:28 +02:00
parent b9776ff5b7
commit d3f544002c
4 changed files with 261 additions and 3 deletions

View File

@@ -25,7 +25,6 @@ describe('treesitter API', function()
eq("Error executing lua: .../language.lua: no parser for 'borklang' language, see :help treesitter-parsers",
pcall_err(exec_lua, "parser = vim.treesitter.inspect_language('borklang')"))
end)
end)
describe('treesitter API with C parser', function()
@@ -186,6 +185,16 @@ void ui_refresh(void)
(field_expression argument: (identifier) @fieldarg)
]]
it("supports runtime queries", function()
if not check_parser() then return end
local ret = exec_lua [[
return require"vim.treesitter.query".get_query("c", "highlights").captures[1]
]]
eq('variable', ret)
end)
it('support query and iter by capture', function()
if not check_parser() then return end
@@ -422,7 +431,7 @@ static int nlua_schedule(lua_State *const lstate)
exec_lua([[
local highlighter = vim.treesitter.highlighter
local query = ...
test_hl = highlighter.new(query, 0, "c")
test_hl = highlighter.new(0, "c", query)
]], hl_query)
screen:expect{grid=[[
{2:/// Schedule Lua callback on main loop's event queue} |