]> code.delx.au - gnu-emacs/commitdiff
(outline-discard-overlays):
authorRichard M. Stallman <rms@gnu.org>
Sat, 14 Dec 1996 22:24:35 +0000 (22:24 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 14 Dec 1996 22:24:35 +0000 (22:24 +0000)
Use overlays-in, to ensure we get rid of empty overlays.

lisp/textmodes/outline.el

index 02018d2d21835ef60c7cbbd2edc8324ff3635380..6116c8116da73a6b02e9a0655e0217a5fafa525e 100644 (file)
@@ -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)