diff --git a/src/treesit.c b/src/treesit.c index 1f694e47201..46fbacaefe3 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -52,6 +52,7 @@ Copyright (C) 2021-2023 Free Software Foundation, Inc. #undef ts_node_named_descendant_for_byte_range #undef ts_node_next_named_sibling #undef ts_node_next_sibling +#undef ts_node_parent #undef ts_node_prev_named_sibling #undef ts_node_prev_sibling #undef ts_node_start_byte @@ -1895,21 +1896,15 @@ DEFUN ("treesit-node-parent", treesit_check_node (node); treesit_initialize (); - Lisp_Object return_value = Qnil; - TSNode treesit_node = XTS_NODE (node)->node; Lisp_Object parser = XTS_NODE (node)->parser; - TSTreeCursor cursor; - if (!treesit_cursor_helper (&cursor, treesit_node, parser)) - return return_value; - if (ts_tree_cursor_goto_parent (&cursor)) - { - TSNode parent = ts_tree_cursor_current_node (&cursor); - return_value = make_treesit_node (parser, parent); - } - ts_tree_cursor_delete (&cursor); - return return_value; + TSNode parent = ts_node_parent (treesit_node); + + if (ts_node_is_null (parent)) + return Qnil; + + return make_treesit_node (parser, parent); } DEFUN ("treesit-node-child",