emacs-diffs
[Top][All Lists]
Advanced

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

emacs-27 bc10e46 5/5: Backport: Rectify allout-widgets region undecorati


From: ken manheimer
Subject: emacs-27 bc10e46 5/5: Backport: Rectify allout-widgets region undecoration so item at start is not missed.
Date: Mon, 20 Jul 2020 14:33:43 -0400 (EDT)

branch: emacs-27
commit bc10e467f1c2b885637ef734afc331e6b2127373
Author: Ken Manheimer <ken.manheimer@gmail.com>
Commit: Ken Manheimer <ken.manheimer@gmail.com>

    Backport: Rectify allout-widgets region undecoration so item at start is 
not missed.
    
    * lisp/allout-widgets.el (allout-widgets-undecorate-region):
    Reorganize the loop so an item at the start is not skipped.
    
    (cherry picked from commit 33d85cb768b40794bffcd9ab22fbdec1211a74e5)
---
 lisp/allout-widgets.el | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el
index 5460551..2a8dced 100644
--- a/lisp/allout-widgets.el
+++ b/lisp/allout-widgets.el
@@ -2060,19 +2060,22 @@ Optional FORCE means force reassignment of the region 
property."
 ;;;_   > allout-widgets-undecorate-region (start end)
 (defun allout-widgets-undecorate-region (start end)
   "Eliminate widgets and decorations for all items in region from START to 
END."
-  (let ((next start)
-        widget)
+  (let (done next widget
+        (end (or end (point-max))))
     (save-excursion
       (goto-char start)
-      (while (<  (setq next (next-single-char-property-change next
-                                                              'display
-                                                              (current-buffer)
-                                                              end))
-                 end)
-        (goto-char next)
-        (when (setq widget (allout-get-item-widget))
-          ;; if the next-property/overly progression got us to a widget:
-          (allout-widgets-undecorate-item widget t))))))
+      (while (not done)
+        (when (and (allout-on-current-heading-p)
+                   (setq widget (allout-get-item-widget)))
+            (if widget
+                (allout-widgets-undecorate-item widget t)))
+        (goto-char (setq next
+                         (next-single-char-property-change (point)
+                                                           'display
+                                                           (current-buffer)
+                                                           end)))
+        (if (>= next end)
+            (setq done t))))))
 ;;;_   > allout-widgets-undecorate-text (text)
 (defun allout-widgets-undecorate-text (text)
   "Eliminate widgets and decorations for all items in TEXT."



reply via email to

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