aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/parser_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/treesitter/parser_spec.lua')
-rw-r--r--test/functional/treesitter/parser_spec.lua487
1 files changed, 234 insertions, 253 deletions
diff --git a/test/functional/treesitter/parser_spec.lua b/test/functional/treesitter/parser_spec.lua
index dbd6bb3c23..c8829f4785 100644
--- a/test/functional/treesitter/parser_spec.lua
+++ b/test/functional/treesitter/parser_spec.lua
@@ -12,9 +12,9 @@ local feed = n.feed
describe('treesitter parser API', function()
before_each(function()
clear()
- exec_lua [[
+ exec_lua(function()
vim.g.__ts_debug = 1
- ]]
+ end)
end)
it('parses buffer', function()
@@ -23,12 +23,12 @@ describe('treesitter parser API', function()
int x = 3;
}]])
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
- tree = parser:parse()[1]
- root = tree:root()
- lang = vim.treesitter.language.inspect('c')
- ]])
+ exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c')
+ _G.tree = _G.parser:parse()[1]
+ _G.root = _G.tree:root()
+ _G.lang = vim.treesitter.language.inspect('c')
+ end)
eq('<tree>', exec_lua('return tostring(tree)'))
eq('<node translation_unit>', exec_lua('return tostring(root)'))
@@ -59,11 +59,11 @@ describe('treesitter parser API', function()
)
feed('2G7|ay')
- exec_lua([[
- tree2 = parser:parse()[1]
- root2 = tree2:root()
- descendant2 = root2:descendant_for_range(1,2,1,13)
- ]])
+ exec_lua(function()
+ _G.tree2 = _G.parser:parse()[1]
+ _G.root2 = _G.tree2:root()
+ _G.descendant2 = _G.root2:descendant_for_range(1, 2, 1, 13)
+ end)
eq(false, exec_lua('return tree2 == tree1'))
eq(false, exec_lua('return root2 == root'))
eq('<node declaration>', exec_lua('return tostring(descendant2)'))
@@ -112,17 +112,17 @@ void ui_refresh(void)
it('allows to iterate over nodes children', function()
insert(test_text)
- local res = exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
+ local res = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
- func_node = parser:parse()[1]:root():child(0)
+ local func_node = parser:parse()[1]:root():child(0)
- res = {}
+ local res = {}
for node, field in func_node:iter_children() do
table.insert(res, { node:type(), field })
end
return res
- ]])
+ end)
eq({
{ 'primitive_type', 'type' },
@@ -135,9 +135,7 @@ void ui_refresh(void)
insert(test_text)
eq(
- '.../treesitter.lua:0: There is no parser available for buffer 1 and one'
- .. ' could not be created because lang could not be determined. Either'
- .. ' pass lang or set the buffer filetype',
+ '.../treesitter.lua:0: Parser not found for buffer 1: language could not be determined',
pcall_err(exec_lua, 'vim.treesitter.get_parser(0)')
)
@@ -148,43 +146,43 @@ void ui_refresh(void)
it('allows to get a child by field', function()
insert(test_text)
- local res = exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
+ local res = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
- func_node = parser:parse()[1]:root():child(0)
+ _G.func_node = parser:parse()[1]:root():child(0)
local res = {}
- for _, node in ipairs(func_node:field("type")) do
+ for _, node in ipairs(_G.func_node:field('type')) do
table.insert(res, { node:type(), node:range() })
end
return res
- ]])
+ end)
eq({ { 'primitive_type', 0, 0, 0, 4 } }, res)
- local res_fail = exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
+ local res_fail = exec_lua(function()
+ vim.treesitter.get_parser(0, 'c')
- return #func_node:field("foo") == 0
- ]])
+ return #_G.func_node:field('foo') == 0
+ end)
assert(res_fail)
end)
it('supports getting text of multiline node', function()
insert(test_text)
- local res = exec_lua([[
- local parser = vim.treesitter.get_parser(0, "c")
+ local res = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
local tree = parser:parse()[1]
return vim.treesitter.get_node_text(tree:root(), 0)
- ]])
+ end)
eq(test_text, res)
- local res2 = exec_lua([[
- local parser = vim.treesitter.get_parser(0, "c")
+ local res2 = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
local root = parser:parse()[1]:root()
return vim.treesitter.get_node_text(root:child(0):child(0), 0)
- ]])
+ end)
eq('void', res2)
end)
@@ -196,7 +194,7 @@ end]]
insert(text)
eq(
'',
- exec_lua [[
+ exec_lua(function()
local fake_node = {}
function fake_node:start()
return 3, 0, 23
@@ -211,7 +209,7 @@ end]]
return 3, 0, 3, 0
end
return vim.treesitter.get_node_text(fake_node, 0)
- ]]
+ end)
)
end)
@@ -221,7 +219,7 @@ end]]
{}
```]]
insert(text)
- local result = exec_lua([[
+ local result = exec_lua(function()
local fake_node = {}
function fake_node:start()
return 1, 0, 7
@@ -233,38 +231,38 @@ end]]
return 1, 0, 1, 0
end
return vim.treesitter.get_node_text(fake_node, 0) == ''
- ]])
+ end)
eq(true, result)
end)
it('allows to set simple ranges', function()
insert(test_text)
- local res = exec_lua [[
- parser = vim.treesitter.get_parser(0, "c")
- return { parser:parse()[1]:root():range() }
- ]]
+ local res = exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c')
+ return { _G.parser:parse()[1]:root():range() }
+ end)
eq({ 0, 0, 19, 0 }, res)
-- The following sets the included ranges for the current parser
-- As stated here, this only includes the function (thus the whole buffer, without the last line)
- local res2 = exec_lua [[
- local root = parser:parse()[1]:root()
- parser:set_included_regions({{root:child(0)}})
- parser:invalidate()
- return { parser:parse(true)[1]:root():range() }
- ]]
+ local res2 = exec_lua(function()
+ local root = _G.parser:parse()[1]:root()
+ _G.parser:set_included_regions({ { root:child(0) } })
+ _G.parser:invalidate()
+ return { _G.parser:parse(true)[1]:root():range() }
+ end)
eq({ 0, 0, 18, 1 }, res2)
eq({ { { 0, 0, 0, 18, 1, 512 } } }, exec_lua [[ return parser:included_regions() ]])
- local range_tbl = exec_lua [[
- parser:set_included_regions { { { 0, 0, 17, 1 } } }
- parser:parse()
- return parser:included_regions()
- ]]
+ local range_tbl = exec_lua(function()
+ _G.parser:set_included_regions { { { 0, 0, 17, 1 } } }
+ _G.parser:parse()
+ return _G.parser:included_regions()
+ end)
eq({ { { 0, 0, 0, 17, 1, 508 } } }, range_tbl)
end)
@@ -272,25 +270,25 @@ end]]
it('allows to set complex ranges', function()
insert(test_text)
- local res = exec_lua [[
- parser = vim.treesitter.get_parser(0, "c")
- query = vim.treesitter.query.parse("c", "(declaration) @decl")
+ local res = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
+ local query = vim.treesitter.query.parse('c', '(declaration) @decl')
- local nodes = {}
- for _, node in query:iter_captures(parser:parse()[1]:root(), 0) do
- table.insert(nodes, node)
- end
+ local nodes = {}
+ for _, node in query:iter_captures(parser:parse()[1]:root(), 0) do
+ table.insert(nodes, node)
+ end
- parser:set_included_regions({nodes})
+ parser:set_included_regions({ nodes })
- local root = parser:parse(true)[1]:root()
+ local root = parser:parse(true)[1]:root()
- local res = {}
- for i=0,(root:named_child_count() - 1) do
- table.insert(res, { root:named_child(i):range() })
- end
- return res
- ]]
+ local res = {}
+ for i = 0, (root:named_child_count() - 1) do
+ table.insert(res, { root:named_child(i):range() })
+ end
+ return res
+ end)
eq({
{ 2, 2, 2, 40 },
@@ -304,10 +302,10 @@ end]]
end)
it('allows to create string parsers', function()
- local ret = exec_lua [[
- local parser = vim.treesitter.get_string_parser("int foo = 42;", "c")
+ local ret = exec_lua(function()
+ local parser = vim.treesitter.get_string_parser('int foo = 42;', 'c')
return { parser:parse()[1]:root():range() }
- ]]
+ end)
eq({ 0, 0, 0, 13 }, ret)
end)
@@ -318,33 +316,31 @@ end]]
int bar = 13;
]]
- local ret = exec_lua(
- [[
- local str = ...
- local parser = vim.treesitter.get_string_parser(str, "c")
+ local ret = exec_lua(function(str)
+ local parser = vim.treesitter.get_string_parser(str, 'c')
- local nodes = {}
- local query = vim.treesitter.query.parse("c", '((identifier) @id (#eq? @id "foo"))')
+ local nodes = {}
+ local query = vim.treesitter.query.parse('c', '((identifier) @id (#eq? @id "foo"))')
- for _, node in query:iter_captures(parser:parse()[1]:root(), str) do
- table.insert(nodes, { node:range() })
- end
+ for _, node in query:iter_captures(parser:parse()[1]:root(), str) do
+ table.insert(nodes, { node:range() })
+ end
- return nodes
- ]],
- txt
- )
+ return nodes
+ end, txt)
eq({ { 0, 10, 0, 13 } }, ret)
end)
describe('when creating a language tree', function()
local function get_ranges()
- return exec_lua [[
+ return exec_lua(function()
local result = {}
- parser:for_each_tree(function(tree) table.insert(result, {tree:root():range()}) end)
+ _G.parser:for_each_tree(function(tree)
+ table.insert(result, { tree:root():range() })
+ end)
return result
- ]]
+ end)
end
before_each(function()
@@ -360,16 +356,17 @@ int x = INT_MAX;
describe('when parsing regions independently', function()
it('should inject a language', function()
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c", {
+ exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c', {
injections = {
c = (
- '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) ' ..
- '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
- )
- }})
- parser:parse(true)
- ]])
+ '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c")) '
+ .. '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
+ ),
+ },
+ })
+ _G.parser:parse(true)
+ end)
eq('table', exec_lua('return type(parser:children().c)'))
eq(5, exec_lua('return #parser:children().c:trees()'))
@@ -397,16 +394,17 @@ int x = INT_MAX;
describe('when parsing regions combined', function()
it('should inject a language', function()
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c", {
+ exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c', {
injections = {
c = (
- '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c") (#set! injection.combined)) ' ..
- '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c") (#set! injection.combined))'
- )
- }})
- parser:parse(true)
- ]])
+ '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c") (#set! injection.combined)) '
+ .. '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c") (#set! injection.combined))'
+ ),
+ },
+ })
+ _G.parser:parse(true)
+ end)
eq('table', exec_lua('return type(parser:children().c)'))
eq(2, exec_lua('return #parser:children().c:trees()'))
@@ -447,16 +445,17 @@ int x = INT_MAX;
describe('when using injection.self', function()
it('should inject the source language', function()
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c", {
+ exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c', {
injections = {
c = (
- '(preproc_def (preproc_arg) @injection.content (#set! injection.self)) ' ..
- '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.self))'
- )
- }})
- parser:parse(true)
- ]])
+ '(preproc_def (preproc_arg) @injection.content (#set! injection.self)) '
+ .. '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.self))'
+ ),
+ },
+ })
+ _G.parser:parse(true)
+ end)
eq('table', exec_lua('return type(parser:children().c)'))
eq(5, exec_lua('return #parser:children().c:trees()'))
@@ -484,16 +483,17 @@ int x = INT_MAX;
describe('when using the offset directive', function()
it('should shift the range by the directive amount', function()
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c", {
+ exec_lua(function()
+ _G.parser = vim.treesitter.get_parser(0, 'c', {
injections = {
c = (
- '(preproc_def ((preproc_arg) @injection.content (#set! injection.language "c") (#offset! @injection.content 0 2 0 -1))) ' ..
- '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
- )
- }})
- parser:parse(true)
- ]])
+ '(preproc_def ((preproc_arg) @injection.content (#set! injection.language "c") (#offset! @injection.content 0 2 0 -1))) '
+ .. '(preproc_function_def value: (preproc_arg) @injection.content (#set! injection.language "c"))'
+ ),
+ },
+ })
+ _G.parser:parse(true)
+ end)
eq('table', exec_lua('return type(parser:children().c)'))
eq({
@@ -506,7 +506,7 @@ int x = INT_MAX;
}, get_ranges())
end)
it('should list all directives', function()
- local res_list = exec_lua [[
+ local res_list = exec_lua(function()
local query = vim.treesitter.query
local list = query.list_directives()
@@ -514,7 +514,7 @@ int x = INT_MAX;
table.sort(list)
return list
- ]]
+ end)
eq({ 'gsub!', 'offset!', 'set!', 'trim!' }, res_list)
end)
@@ -530,18 +530,18 @@ int x = INT_MAX;
end)
it('should return the correct language tree', function()
- local result = exec_lua([[
- parser = vim.treesitter.get_parser(0, "c", {
+ local result = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c', {
injections = {
- c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c"))'
- }
+ c = '(preproc_def (preproc_arg) @injection.content (#set! injection.language "c"))',
+ },
})
parser:parse(true)
- local sub_tree = parser:language_for_range({1, 18, 1, 19})
+ local sub_tree = parser:language_for_range({ 1, 18, 1, 19 })
return sub_tree == parser:children().c
- ]])
+ end)
eq(true, result)
end)
@@ -555,23 +555,23 @@ print()
end)
it('ignores optional captures #23100', function()
- local result = exec_lua([[
- parser = vim.treesitter.get_parser(0, "lua", {
+ local result = exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'lua', {
injections = {
lua = (
- '(function_call ' ..
- '(arguments ' ..
- '(string)? @injection.content ' ..
- '(number)? @injection.content ' ..
- '(#offset! @injection.content 0 1 0 -1) ' ..
- '(#set! injection.language "c")))'
- )
- }
+ '(function_call '
+ .. '(arguments '
+ .. '(string)? @injection.content '
+ .. '(number)? @injection.content '
+ .. '(#offset! @injection.content 0 1 0 -1) '
+ .. '(#set! injection.language "c")))'
+ ),
+ },
})
parser:parse(true)
return parser:is_valid()
- ]])
+ end)
eq(true, result)
end)
@@ -584,18 +584,14 @@ print()
int x = 3;
]])
- local result = exec_lua([[
- local result
-
- query = vim.treesitter.query.parse("c", '((number_literal) @number (#set! "key" "value"))')
- parser = vim.treesitter.get_parser(0, "c")
-
- for pattern, match, metadata in query:iter_matches(parser:parse()[1]:root(), 0, 0, -1, { all = true }) do
- result = metadata.key
- end
+ local result = exec_lua(function()
+ local query =
+ vim.treesitter.query.parse('c', '((number_literal) @number (#set! "key" "value"))')
+ local parser = vim.treesitter.get_parser(0, 'c')
- return result
- ]])
+ local _, _, metadata = query:iter_matches(parser:parse()[1]:root(), 0, 0, -1)()
+ return metadata.key
+ end)
eq('value', result)
end)
@@ -606,19 +602,17 @@ print()
int x = 3;
]])
- local result = exec_lua([[
- local query = vim.treesitter.query
- local value
+ local result = exec_lua(function()
+ local query = vim.treesitter.query.parse(
+ 'c',
+ '((number_literal) @number (#set! @number "key" "value"))'
+ )
+ local parser = vim.treesitter.get_parser(0, 'c')
- query = vim.treesitter.query.parse("c", '((number_literal) @number (#set! @number "key" "value"))')
- parser = vim.treesitter.get_parser(0, "c")
-
- for pattern, match, metadata in query:iter_matches(parser:parse()[1]:root(), 0, 0, -1, { all = true }) do
- for _, nested_tbl in pairs(metadata) do
- return nested_tbl.key
- end
- end
- ]])
+ local _, _, metadata = query:iter_matches(parser:parse()[1]:root(), 0, 0, -1)()
+ local _, nested_tbl = next(metadata)
+ return nested_tbl.key
+ end)
eq('value', result)
end)
@@ -628,19 +622,17 @@ print()
int x = 3;
]])
- local result = exec_lua([[
- local query = vim.treesitter.query
- local result
-
- query = vim.treesitter.query.parse("c", '((number_literal) @number (#set! @number "key" "value") (#set! @number "key2" "value2"))')
- parser = vim.treesitter.get_parser(0, "c")
+ local result = exec_lua(function()
+ local query = vim.treesitter.query.parse(
+ 'c',
+ '((number_literal) @number (#set! @number "key" "value") (#set! @number "key2" "value2"))'
+ )
+ local parser = vim.treesitter.get_parser(0, 'c')
- for pattern, match, metadata in query:iter_matches(parser:parse()[1]:root(), 0, 0, -1, { all = true }) do
- for _, nested_tbl in pairs(metadata) do
- return nested_tbl
- end
- end
- ]])
+ local _, _, metadata = query:iter_matches(parser:parse()[1]:root(), 0, 0, -1)()
+ local _, nested_tbl = next(metadata)
+ return nested_tbl
+ end)
local expected = {
['key'] = 'value',
['key2'] = 'value2',
@@ -663,24 +655,21 @@ print()
(function_definition) @function
]]
- exec_lua([[
+ exec_lua(function()
vim.treesitter.start(0, 'c')
- ]])
+ end)
local function run_query()
- return exec_lua(
- [[
- local query = vim.treesitter.query.parse("c", ...)
- parser = vim.treesitter.get_parser()
- tree = parser:parse()[1]
- res = {}
- for id, node in query:iter_captures(tree:root()) do
- table.insert(res, {query.captures[id], node:range()})
- end
- return res
- ]],
- query0
- )
+ return exec_lua(function()
+ local query = vim.treesitter.query.parse('c', query0)
+ local parser = vim.treesitter.get_parser()
+ local tree = parser:parse()[1]
+ local res = {}
+ for id, node in query:iter_captures(tree:root()) do
+ table.insert(res, { query.captures[id], node:range() })
+ end
+ return res
+ end)
end
eq({
@@ -718,18 +707,15 @@ print()
]]
]==]
- local r = exec_lua(
- [[
- local parser = vim.treesitter.get_string_parser(..., 'lua')
- parser:parse(true)
- local ranges = {}
- parser:for_each_tree(function(tstree, tree)
- ranges[tree:lang()] = { tstree:root():range(true) }
- end)
- return ranges
- ]],
- source
- )
+ local r = exec_lua(function()
+ local parser = vim.treesitter.get_string_parser(source, 'lua')
+ parser:parse(true)
+ local ranges = {}
+ parser:for_each_tree(function(tstree, tree)
+ ranges[tree:lang()] = { tstree:root():range(true) }
+ end)
+ return ranges
+ end)
eq({
lua = { 0, 6, 6, 16, 4, 438 },
@@ -741,19 +727,14 @@ print()
-- the ranges but only provide a Range4. Strip the byte entries from the ranges and make sure
-- add_bytes() produces the same result.
- local rb = exec_lua(
- [[
- local r, source = ...
- local add_bytes = require('vim.treesitter._range').add_bytes
- for lang, range in pairs(r) do
- r[lang] = {range[1], range[2], range[4], range[5]}
- r[lang] = add_bytes(source, r[lang])
- end
- return r
- ]],
- r,
- source
- )
+ local rb = exec_lua(function()
+ local add_bytes = require('vim.treesitter._range').add_bytes
+ for lang, range in pairs(r) do
+ r[lang] = { range[1], range[2], range[4], range[5] }
+ r[lang] = add_bytes(source, r[lang])
+ end
+ return r
+ end)
eq(rb, r)
end)
@@ -766,25 +747,25 @@ print()
]]
-- This is not a valid injection since (code) has children and include-children is not set
- exec_lua [[
- parser1 = require('vim.treesitter.languagetree').new(0, "vimdoc", {
+ exec_lua(function()
+ _G.parser1 = require('vim.treesitter.languagetree').new(0, 'vimdoc', {
injections = {
- vimdoc = "((codeblock (language) @injection.language (code) @injection.content))"
- }
+ vimdoc = '((codeblock (language) @injection.language (code) @injection.content))',
+ },
})
- parser1:parse(true)
- ]]
+ _G.parser1:parse(true)
+ end)
eq(0, exec_lua('return #vim.tbl_keys(parser1:children())'))
- exec_lua [[
- parser2 = require('vim.treesitter.languagetree').new(0, "vimdoc", {
+ exec_lua(function()
+ _G.parser2 = require('vim.treesitter.languagetree').new(0, 'vimdoc', {
injections = {
- vimdoc = "((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))"
- }
+ vimdoc = '((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))',
+ },
})
- parser2:parse(true)
- ]]
+ _G.parser2:parse(true)
+ end)
eq(1, exec_lua('return #vim.tbl_keys(parser2:children())'))
eq({ { { 1, 0, 21, 2, 0, 42 } } }, exec_lua('return parser2:children().lua:included_regions()'))
@@ -821,46 +802,46 @@ print()
<
]])
- exec_lua [[
- parser = require('vim.treesitter.languagetree').new(0, "vimdoc", {
+ exec_lua(function()
+ _G.parser = require('vim.treesitter.languagetree').new(0, 'vimdoc', {
injections = {
- vimdoc = "((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))"
- }
+ vimdoc = '((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))',
+ },
})
- ]]
+ end)
--- Do not parse injections by default
eq(
0,
- exec_lua [[
- parser:parse()
- return #vim.tbl_keys(parser:children())
- ]]
+ exec_lua(function()
+ _G.parser:parse()
+ return #vim.tbl_keys(_G.parser:children())
+ end)
)
--- Only parse injections between lines 0, 2
eq(
1,
- exec_lua [[
- parser:parse({0, 2})
- return #parser:children().lua:trees()
- ]]
+ exec_lua(function()
+ _G.parser:parse({ 0, 2 })
+ return #_G.parser:children().lua:trees()
+ end)
)
eq(
2,
- exec_lua [[
- parser:parse({2, 6})
- return #parser:children().lua:trees()
- ]]
+ exec_lua(function()
+ _G.parser:parse({ 2, 6 })
+ return #_G.parser:children().lua:trees()
+ end)
)
eq(
7,
- exec_lua [[
- parser:parse(true)
- return #parser:children().lua:trees()
- ]]
+ exec_lua(function()
+ _G.parser:parse(true)
+ return #_G.parser:children().lua:trees()
+ end)
)
end)
@@ -876,13 +857,13 @@ print()
feed(':set ft=help<cr>')
- exec_lua [[
- vim.treesitter.get_parser(0, "vimdoc", {
+ exec_lua(function()
+ vim.treesitter.get_parser(0, 'vimdoc', {
injections = {
- vimdoc = "((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))"
- }
+ vimdoc = '((codeblock (language) @injection.language (code) @injection.content) (#set! injection.include-children))',
+ },
})
- ]]
+ end)
end)
it('is valid excluding, invalid including children initially', function()