diff options
author | bfredl <bjorn.linse@gmail.com> | 2022-08-25 18:24:56 +0200 |
---|---|---|
committer | bfredl <bjorn.linse@gmail.com> | 2022-08-25 18:24:56 +0200 |
commit | e5fe41198c57a746b282fdfcde5ccb7c5adad605 (patch) | |
tree | 9ba976096b9be401831710f665f28495ed68a02e /src | |
parent | 8554164b1e985e552576cf3dcf1178a959ebf5e3 (diff) | |
download | rneovim-e5fe41198c57a746b282fdfcde5ccb7c5adad605.tar.gz rneovim-e5fe41198c57a746b282fdfcde5ccb7c5adad605.tar.bz2 rneovim-e5fe41198c57a746b282fdfcde5ccb7c5adad605.zip |
fix(treesitter): more efficient node:root()
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/lua/treesitter.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/src/nvim/lua/treesitter.c b/src/nvim/lua/treesitter.c index 8803fd452c..7ff4fbbff4 100644 --- a/src/nvim/lua/treesitter.c +++ b/src/nvim/lua/treesitter.c @@ -623,7 +623,7 @@ void push_tree(lua_State *L, TSTree *tree, bool do_copy) lua_setfenv(L, -2); // [udata] } -static TSTree **tree_check(lua_State *L, uint16_t index) +static TSTree **tree_check(lua_State *L, int index) { TSTree **ud = luaL_checkudata(L, index, TS_META_TREE); return ud; @@ -1093,22 +1093,13 @@ static int node_named_children(lua_State *L) static int node_root(lua_State *L) { - TSNode parent; - TSNode result; - TSNode node; if (!node_check(L, 1, &node)) { return 0; } - parent = node; - result = node; - - while (!ts_node_is_null(parent)){ - result = parent; - parent = ts_node_parent(result); - } - push_node(L, result, 1); + TSNode root = ts_tree_root_node(node.tree); + push_node(L, root, 1); return 1; } |