treesitter: use single nodes in set_ranges
fixup! treesitter: fix lint
This commit is contained in:
parent
66af35fc85
commit
69816f5e13
|
@ -411,50 +411,21 @@ static int parser_set_ranges(lua_State *L)
|
|||
for (size_t index = 0; index < tbl_len; index++) {
|
||||
lua_rawgeti(L, 2, index + 1); // [ parser, ranges, range ]
|
||||
|
||||
if (!lua_istable(L, -1)) {
|
||||
TSNode node;
|
||||
if (!node_check(L, -1, &node)) {
|
||||
xfree(ranges);
|
||||
return luaL_error(
|
||||
L,
|
||||
"argument for parser:set_included_ranges() should be a table of tables.");
|
||||
}
|
||||
|
||||
if (lua_objlen(L, -1) != 2) {
|
||||
xfree(ranges);
|
||||
return luaL_error(
|
||||
L,
|
||||
"argument for parser:set_included_ranges() should be a table of ranges of 2 elements.");
|
||||
}
|
||||
|
||||
|
||||
lua_rawgeti(L, -1, 1); // [ parser, ranges, range, start_node ]
|
||||
TSNode start_node;
|
||||
if (!node_check(L, -1, &start_node)) {
|
||||
xfree(ranges);
|
||||
lua_pushstring(
|
||||
L,
|
||||
"ranges should be tables of nodes.");
|
||||
return lua_error(L);
|
||||
}
|
||||
lua_pop(L, 1); // [ parser, ranges, range ]
|
||||
|
||||
lua_rawgeti(L, -1, 1); // [ parser, ranges, range, stop_node ]
|
||||
TSNode stop_node;
|
||||
if (!node_check(L, -1, &stop_node)) {
|
||||
xfree(ranges);
|
||||
lua_pushstring(
|
||||
L,
|
||||
"ranges should be tables of nodes.");
|
||||
return lua_error(L);
|
||||
}
|
||||
lua_pop(L, 1); // [ parser, ranges, range ]
|
||||
lua_pop(L, 1); // [ parser, ranges ]
|
||||
|
||||
ranges[index] = (TSRange) {
|
||||
.start_point = ts_node_start_point(start_node),
|
||||
.end_point = ts_node_end_point(stop_node),
|
||||
.start_byte = ts_node_start_byte(start_node),
|
||||
.end_byte = ts_node_end_byte(stop_node)
|
||||
.start_point = ts_node_start_point(node),
|
||||
.end_point = ts_node_end_point(node),
|
||||
.start_byte = ts_node_start_byte(node),
|
||||
.end_byte = ts_node_end_byte(node)
|
||||
};
|
||||
lua_pop(L, 1); // [ parser, ranges ]
|
||||
}
|
||||
|
||||
// This memcpies ranges, thus we can free it afterwards
|
||||
|
|
|
@ -418,14 +418,14 @@ static int nlua_schedule(lua_State *const lstate)
|
|||
|
||||
-- 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 res = exec_lua([[
|
||||
local res2 = exec_lua([[
|
||||
local root = parser:parse():root()
|
||||
parser:set_included_ranges({{root:child(0), root:child(0)}})
|
||||
parser:set_included_ranges({root:child(0)})
|
||||
parser.valid = false
|
||||
return { parser:parse():root():range() }
|
||||
]])
|
||||
|
||||
eq({0, 0, 18, 1}, res)
|
||||
eq({0, 0, 18, 1}, res2)
|
||||
end)
|
||||
it("allows to set complex ranges", function()
|
||||
if not check_parser() then return end
|
||||
|
@ -439,7 +439,7 @@ static int nlua_schedule(lua_State *const lstate)
|
|||
|
||||
local nodes = {}
|
||||
for _, node in query:iter_captures(parser:parse():root(), 0, 0, 19) do
|
||||
table.insert(nodes, { node, node })
|
||||
table.insert(nodes, node)
|
||||
end
|
||||
|
||||
parser:set_included_ranges(nodes)
|
||||
|
|
Loading…
Reference in New Issue