diff options
| author | Denis Zubarev | 2023-11-12 01:42:42 +0300 |
|---|---|---|
| committer | Yuan Fu | 2023-12-18 18:25:26 -0800 |
| commit | 7b315e8a5c966f8d11a4f646db4e29b989b56ab1 (patch) | |
| tree | 46c8b7361d03583a3865165dde5e03c55cc877e8 /src | |
| parent | 03625c2fefa682f74775abc1e223e17557d58bc7 (diff) | |
| download | emacs-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.c | 4 |
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 |