[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 057901f55a 3/3: Fix treesit-update-ranges
From: |
Yuan Fu |
Subject: |
master 057901f55a 3/3: Fix treesit-update-ranges |
Date: |
Tue, 22 Nov 2022 15:38:35 -0500 (EST) |
branch: master
commit 057901f55ad12ebbc9cf092dd6ad0f02539849f9
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix treesit-update-ranges
* lisp/treesit.el (treesit--clip-ranges): New function.
(treesit-update-ranges): Now clips the range within (point-min)
and (point-max), so the new range we use are not out-of-range.
---
lisp/treesit.el | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 88f94b8dec..6042b7e6c9 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -460,6 +460,15 @@ Return the merged list of ranges."
(push range result)))
(nreverse result)))
+(defun treesit--clip-ranges (ranges start end)
+ "Clip RANGES in between START and END.
+RANGES is a list of ranges of the form (BEG . END). Ranges
+outside of the region between START and END are thrown away, and
+those inside are kept."
+ (cl-loop for range in ranges
+ if (<= start (car range) (cdr range) end)
+ collect range))
+
(defun treesit-update-ranges (&optional beg end)
"Update the ranges for each language in the current buffer.
If BEG and END are non-nil, only update parser ranges in that
@@ -480,8 +489,10 @@ region."
(old-ranges (treesit-parser-included-ranges parser))
(new-ranges (treesit-query-range
host-lang query beg end))
- (set-ranges (treesit--merge-ranges
- old-ranges new-ranges beg end)))
+ (set-ranges (treesit--clip-ranges
+ (treesit--merge-ranges
+ old-ranges new-ranges beg end)
+ (point-min) (point-max))))
(dolist (parser (treesit-parser-list))
(when (eq (treesit-parser-language parser)
language)