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 /test/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 'test/src')
| -rw-r--r-- | test/src/treesit-tests.el | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el index 69db37fc0b4..9ba3a9340c1 100644 --- a/test/src/treesit-tests.el +++ b/test/src/treesit-tests.el | |||
| @@ -1083,6 +1083,36 @@ This tests bug#60355." | |||
| 1083 | treesit--ert-defun-navigation-python-program | 1083 | treesit--ert-defun-navigation-python-program |
| 1084 | treesit--ert-defun-navigation-top-level-master))) | 1084 | treesit--ert-defun-navigation-top-level-master))) |
| 1085 | 1085 | ||
| 1086 | (ert-deftest treesit-search-subtree-forward-1 () | ||
| 1087 | "Test search subtree forward." | ||
| 1088 | (skip-unless (treesit-language-available-p 'python)) | ||
| 1089 | (require 'python) | ||
| 1090 | (python-ts-mode) | ||
| 1091 | (insert "Temp(1, 2)") | ||
| 1092 | (goto-char (point-min)) | ||
| 1093 | (let ((node (treesit-search-subtree | ||
| 1094 | (treesit--thing-at (point) "call") | ||
| 1095 | (lambda (n) (equal (treesit-node-type n ) "integer"))))) | ||
| 1096 | |||
| 1097 | (should node) | ||
| 1098 | (should (equal (treesit-node-text node) "1")))) | ||
| 1099 | |||
| 1100 | (ert-deftest treesit-search-subtree-backward-1 () | ||
| 1101 | "Test search subtree with backward=t." | ||
| 1102 | (skip-unless (treesit-language-available-p 'python)) | ||
| 1103 | (require 'python) | ||
| 1104 | (python-ts-mode) | ||
| 1105 | (insert "Temp(1, 2)") | ||
| 1106 | (goto-char (point-min)) | ||
| 1107 | (let ((node (treesit-search-subtree | ||
| 1108 | (treesit--thing-at (point) "call") | ||
| 1109 | (lambda (n) (equal (treesit-node-type n ) "integer")) | ||
| 1110 | t))) | ||
| 1111 | |||
| 1112 | (should node) | ||
| 1113 | (should (equal (treesit-node-text node) "2")))) | ||
| 1114 | |||
| 1115 | |||
| 1086 | ;; TODO | 1116 | ;; TODO |
| 1087 | ;; - Functions in treesit.el | 1117 | ;; - Functions in treesit.el |
| 1088 | ;; - treesit-load-name-override-list | 1118 | ;; - treesit-load-name-override-list |