aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Zubarev2023-11-12 01:42:42 +0300
committerYuan Fu2023-12-18 18:25:26 -0800
commit7b315e8a5c966f8d11a4f646db4e29b989b56ab1 (patch)
tree46c8b7361d03583a3865165dde5e03c55cc877e8 /src
parent03625c2fefa682f74775abc1e223e17557d58bc7 (diff)
downloademacs-7b315e8a5c966f8d11a4f646db4e29b989b56ab1.tar.gz
emacs-7b315e8a5c966f8d11a4f646db4e29b989b56ab1.zip
Fix an issue when searching subtree backward (bug#67117)
* src/treesit.c (treesit_traverse_child_helper): Do not call treesit_traverse_sibling_helper when the named node is required and the last child is the named node. Otherwise treesit_traverse_sibling_helper will move cursor to the previous sibling and last node will be skipped. * test/src/treesit-tests.el (treesit-search-subtree-forward-1): (treesit-search-subtree-backward-1): Add tests.
Diffstat (limited to 'src')
-rw-r--r--src/treesit.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/treesit.c b/src/treesit.c
index 45de82ec096..04ea8958b96 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -3061,9 +3061,9 @@ treesit_traverse_child_helper (TSTreeCursor *cursor,
3061 /* First go to the last child. */ 3061 /* First go to the last child. */
3062 while (ts_tree_cursor_goto_next_sibling (cursor)); 3062 while (ts_tree_cursor_goto_next_sibling (cursor));
3063 3063
3064 if (!named) 3064 if (!named || (named && ts_node_is_named (ts_tree_cursor_current_node(cursor))))
3065 return true; 3065 return true;
3066 /* Else named... */ 3066 /* Else named is required and last child is not named node */
3067 if (treesit_traverse_sibling_helper(cursor, false, true)) 3067 if (treesit_traverse_sibling_helper(cursor, false, true))
3068 return true; 3068 return true;
3069 else 3069 else