diff lisp/outline.el @ 76024:00669875e4fe

(hide-sublevels): Keep empty last line, if available.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 19 Feb 2007 18:48:58 +0000
parents 6e4c04850090
children 54e83bd9ac02 dd7c098af727
line wrap: on
line diff
--- a/lisp/outline.el	Mon Feb 19 15:46:25 2007 +0000
+++ b/lisp/outline.el	Mon Feb 19 18:48:58 2007 +0000
@@ -856,19 +856,25 @@
 		 (t 1))))
   (if (< levels 1)
       (error "Must keep at least one level of headers"))
-  (let (outline-view-change-hook)
-    (save-excursion
-      (goto-char (point-min))
-      ;; Skip the prelude, if any.
-      (unless (outline-on-heading-p t) (outline-next-heading))
+  (save-excursion
+    (let* (outline-view-change-hook
+           (beg (progn
+                  (goto-char (point-min))
+                  ;; Skip the prelude, if any.
+                  (unless (outline-on-heading-p t) (outline-next-heading))
+                  (point)))
+           (end (progn
+                  (goto-char (point-max))
+                  ;; Keep empty last line, if available.
+                  (if (bolp) (1- (point)) (point)))))
       ;; First hide everything.
-      (outline-flag-region (point) (point-max) t)
+      (outline-flag-region beg end t)
       ;; Then unhide the top level headers.
       (outline-map-region
        (lambda ()
 	 (if (<= (funcall outline-level) levels)
 	     (outline-show-heading)))
-       (point) (point-max))))
+       beg end)))
   (run-hooks 'outline-view-change-hook))
 
 (defun hide-other ()