summaryrefslogtreecommitdiff
path: root/lisp/treesit.el
diff options
context:
space:
mode:
authorYuan Fu <casouri@gmail.com>2022-11-22 12:01:19 -0800
committerYuan Fu <casouri@gmail.com>2022-11-22 12:38:14 -0800
commit2fa6ccab01b80ee3fcc78fe35a0061cc11983e1c (patch)
tree91ec4346b4bcd4491ae01a6911055635f4dc4fc1 /lisp/treesit.el
parent95d783f27c6a585d7c1f55293fd3de6a0422c795 (diff)
downloademacs-2fa6ccab01b80ee3fcc78fe35a0061cc11983e1c.tar.gz
emacs-2fa6ccab01b80ee3fcc78fe35a0061cc11983e1c.tar.bz2
emacs-2fa6ccab01b80ee3fcc78fe35a0061cc11983e1c.zip
; Fix treesit--children-covering-range
* lisp/treesit.el (treesit--children-covering-range): Handle the case when NODE doesn't have children, and when CHILD is nil.
Diffstat (limited to 'lisp/treesit.el')
-rw-r--r--lisp/treesit.el14
1 files changed, 8 insertions, 6 deletions
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 75e859f13f7..88f94b8dec1 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -793,12 +793,14 @@ instead."
(defun treesit--children-covering-range (node start end)
"Return a list of children of NODE covering a range.
The range is between START and END."
- (let* ((child (treesit-node-first-child-for-pos node start))
- (result (list child)))
- (while (and (< (treesit-node-end child) end)
- (setq child (treesit-node-next-sibling child)))
- (push child result))
- (nreverse result)))
+ (if-let* ((child (treesit-node-first-child-for-pos node start))
+ (result (list child)))
+ (progn
+ (while (and child (< (treesit-node-end child) end)
+ (setq child (treesit-node-next-sibling child)))
+ (push child result))
+ (nreverse result))
+ (list node)))
(defun treesit--children-covering-range-recurse (node start end threshold)
"Return a list of children of NODE covering a range.