emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/tree-sitter d729e3e3fc 19/26: * src/treesit.c (ts_check_range_ar


From: Yuan Fu
Subject: feature/tree-sitter d729e3e3fc 19/26: * src/treesit.c (ts_check_range_argument): Check for point-min/max.
Date: Thu, 16 Jun 2022 14:53:53 -0400 (EDT)

branch: feature/tree-sitter
commit d729e3e3fcad4270f6da358b12ab8e4a52fdc204
Author: Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Commit: Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>

    * src/treesit.c (ts_check_range_argument): Check for point-min/max.
---
 src/treesit.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/treesit.c b/src/treesit.c
index dc64aef425..92692f550f 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -719,7 +719,11 @@ DEFUN ("treesit-parser-root-node",
 static void
 ts_check_range_argument (Lisp_Object ranges)
 {
-  EMACS_INT last_point = 1;
+  struct buffer *buffer = current_buffer;
+  ptrdiff_t point_min = BUF_BEGV (buffer);
+  ptrdiff_t point_max = BUF_ZV (buffer);
+  EMACS_INT last_point = point_min;
+
   for (Lisp_Object tail = ranges;
        !NILP (tail); tail = XCDR (tail))
     {
@@ -730,11 +734,10 @@ ts_check_range_argument (Lisp_Object ranges)
       CHECK_FIXNUM (XCDR (range));
       EMACS_INT beg = XFIXNUM (XCAR (range));
       EMACS_INT end = XFIXNUM (XCDR (range));
-      /* TODO: Maybe we should check for point-min/max, too?  */
-      if (!(last_point <= beg && beg <= end))
+      if (!(last_point <= beg && beg <= end && end <= point_max))
        xsignal2 (Qtreesit_range_invalid,
                  build_pure_c_string
-                 ("RANGE is either overlapping or out-of-order"),
+                 ("RANGE is either overlapping or out-of-order or 
out-of-range"),
                  ranges);
       last_point = end;
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]