diff options
author | Ken Manheimer <ken.manheimer@gmail.com> | 2020-07-05 16:38:13 -0400 |
---|---|---|
committer | Ken Manheimer <ken.manheimer@gmail.com> | 2020-07-20 14:31:27 -0400 |
commit | bc10e467f1c2b885637ef734afc331e6b2127373 (patch) | |
tree | 52709441393885da49a81567bece9c1a1c6e1757 /lisp/allout-widgets.el | |
parent | 82742e295d2907bb2f56090296f7a128f1f3d6aa (diff) | |
download | emacs-bc10e467f1c2b885637ef734afc331e6b2127373.tar.gz |
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)
Diffstat (limited to 'lisp/allout-widgets.el')
-rw-r--r-- | lisp/allout-widgets.el | 25 |
1 files 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." |