emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/rainbow-delimiters 447293003b 069/188: Highlight correctly


From: ELPA Syncer
Subject: [nongnu] elpa/rainbow-delimiters 447293003b 069/188: Highlight correctly even in presence of these evil 'intangible' properties.
Date: Sat, 1 Jan 2022 00:58:53 -0500 (EST)

branch: elpa/rainbow-delimiters
commit 447293003b01900f4f6d211a524a13485e479f23
Author: Fanael Linithien <fanael4@gmail.com>
Commit: Fanael Linithien <fanael4@gmail.com>

    Highlight correctly even in presence of these evil 'intangible' properties.
---
 rainbow-delimiters.el | 70 ++++++++++++++++++++++++++-------------------------
 1 file changed, 36 insertions(+), 34 deletions(-)

diff --git a/rainbow-delimiters.el b/rainbow-delimiters.el
index f95129afdc..46cdc55fa2 100644
--- a/rainbow-delimiters.el
+++ b/rainbow-delimiters.el
@@ -567,47 +567,49 @@ Used by jit-lock for dynamic highlighting."
   (save-excursion
     (with-syntax-table rainbow-delimiters-syntax-table
       (with-silent-modifications
-        (goto-char start)
-        ;; START can be anywhere in buffer; determine the nesting depth at 
START loc
-        (let ((depth (rainbow-delimiters-depth start)))
-          (while (and (< (point) end)
-                      (re-search-forward rainbow-delimiters-delim-regex end t))
-            (backward-char) ; re-search-forward places point after delim; go 
back.
-            (let ((ppss (rainbow-delimiters-syntax-ppss (point))))
-              (unless (rainbow-delimiters-char-ineligible-p (point) ppss)
-                (let* ((delim (char-after (point)))
-                       (opening-delim-info
-                        (assq delim rainbow-delimiters-opening-delim-info)))
-                  (if opening-delim-info
-                      (progn
-                        (setq depth (1+ depth))
-                        (rainbow-delimiters-apply-color (cdr 
opening-delim-info)
+        (let ((inhibit-point-motion-hooks t))
+          (goto-char start)
+          ;; START can be anywhere in buffer; determine the nesting depth at 
START loc
+          (let ((depth (rainbow-delimiters-depth start)))
+            (while (and (< (point) end)
+                        (re-search-forward rainbow-delimiters-delim-regex end 
t))
+              (backward-char) ; re-search-forward places point after delim; go 
back.
+              (let ((ppss (rainbow-delimiters-syntax-ppss (point))))
+                (unless (rainbow-delimiters-char-ineligible-p (point) ppss)
+                  (let* ((delim (char-after (point)))
+                         (opening-delim-info
+                          (assq delim rainbow-delimiters-opening-delim-info)))
+                    (if opening-delim-info
+                        (progn
+                          (setq depth (1+ depth))
+                          (rainbow-delimiters-apply-color (cdr 
opening-delim-info)
+                                                          depth
+                                                          (point)
+                                                          t))
+                      ;; Not an opening delimiters, so it's a closing 
delimiter.
+                      (let ((closing-delim-info
+                             (assq delim 
rainbow-delimiters-closing-delim-info))
+                            (matching-opening-delim (char-after (nth 1 ppss))))
+                        (rainbow-delimiters-apply-color (nthcdr 2 
closing-delim-info)
                                                         depth
                                                         (point)
-                                                        t))
-                    ;; Not an opening delimiters, so it's a closing delimiter.
-                    (let ((closing-delim-info
-                           (assq delim rainbow-delimiters-closing-delim-info))
-                          (matching-opening-delim (char-after (nth 1 ppss))))
-                      (rainbow-delimiters-apply-color (nthcdr 2 
closing-delim-info)
-                                                      depth
-                                                      (point)
-                                                      (= (nth 1 
closing-delim-info)
-                                                         
matching-opening-delim))
-                      (setq depth (or (and (<= depth 0) 0) ; unmatched delim
-                                      (1- depth))))))))
-            ;; move past delimiter so re-search-forward doesn't pick it up 
again
-            (forward-char)))))))
+                                                        (= (nth 1 
closing-delim-info)
+                                                           
matching-opening-delim))
+                        (setq depth (or (and (<= depth 0) 0) ; unmatched delim
+                                        (1- depth))))))))
+              ;; move past delimiter so re-search-forward doesn't pick it up 
again
+              (forward-char))))))))
 
 (defun rainbow-delimiters-unpropertize-region (start end)
   "Remove highlighting from delimiters between START and END."
   (save-excursion
     (with-silent-modifications
-      (goto-char start)
-      (while (and (< (point) end)
-                  (re-search-forward rainbow-delimiters-delim-regex end t))
-        ;; re-search-forward places point 1 further than the delim matched:
-        (rainbow-delimiters-unpropertize-delimiter (1- (point)))))))
+      (let ((inhibit-point-motion-hooks t))
+        (goto-char start)
+        (while (and (< (point) end)
+                    (re-search-forward rainbow-delimiters-delim-regex end t))
+          ;; re-search-forward places point 1 further than the delim matched:
+          (rainbow-delimiters-unpropertize-delimiter (1- (point))))))))
 
 
 ;;; Minor mode:



reply via email to

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