summaryrefslogtreecommitdiff
path: root/lisp/textmodes
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1996-12-14 22:24:35 +0000
committerRichard M. Stallman <rms@gnu.org>1996-12-14 22:24:35 +0000
commit21cd2849ae66494c3fc90483713c373d040587f8 (patch)
treece39cc1f169231e6a31a941be82f880125b0ff2c /lisp/textmodes
parent147f1d2af3230d92fa920f7d64f333336217854a (diff)
downloademacs-21cd2849ae66494c3fc90483713c373d040587f8.tar.gz
(outline-discard-overlays):
Use overlays-in, to ensure we get rid of empty overlays.
Diffstat (limited to 'lisp/textmodes')
-rw-r--r--lisp/textmodes/outline.el33
1 files changed, 15 insertions, 18 deletions
diff --git a/lisp/textmodes/outline.el b/lisp/textmodes/outline.el
index 02018d2d218..6116c8116da 100644
--- a/lisp/textmodes/outline.el
+++ b/lisp/textmodes/outline.el
@@ -386,25 +386,22 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden."
(if (< end beg)
(setq beg (prog1 end (setq end beg))))
(save-excursion
- (goto-char beg)
- (while (< (point) end)
- (let ((overlays (overlays-at (point))))
- (while overlays
- (let ((o (car overlays)))
- (if (overlay-get o prop)
- ;; Either push this overlay outside beg...end
- ;; or split it to exclude beg...end
- ;; or delete it entirely (if it is contained in beg...end).
- (if (< (overlay-start o) beg)
- (if (> (overlay-end o) end)
- (let ((o1 (outline-copy-overlay o)))
- (move-overlay o1 (overlay-start o1) beg)
- (move-overlay o (overlay-start o) beg)))
+ (let ((overlays (overlays-in beg end)))
+ (while overlays
+ (let ((o (car overlays)))
+ (if (overlay-get o prop)
+ ;; Either push this overlay outside beg...end
+ ;; or split it to exclude beg...end
+ ;; or delete it entirely (if it is contained in beg...end).
+ (if (< (overlay-start o) beg)
(if (> (overlay-end o) end)
- (move-overlay o end (overlay-end o))
- (delete-overlay o)))))
- (setq overlays (cdr overlays))))
- (goto-char (next-overlay-change (point))))))
+ (let ((o1 (outline-copy-overlay o)))
+ (move-overlay o1 (overlay-start o1) beg)
+ (move-overlay o (overlay-start o) beg)))
+ (if (> (overlay-end o) end)
+ (move-overlay o end (overlay-end o))
+ (delete-overlay o)))))
+ (setq overlays (cdr overlays))))))
;; Make a copy of overlay O, with the same beginning, end and properties.
(defun outline-copy-overlay (o)