From 33d85cb768b40794bffcd9ab22fbdec1211a74e5 Mon Sep 17 00:00:00 2001 From: Ken Manheimer Date: Sun, 5 Jul 2020 16:38:13 -0400 Subject: [PATCH] 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. --- 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 5460551106b..2a8dced5e9c 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." -- 2.39.2