changeset 16676:82e54a854639

(rmail-summary-beginning-of-message): Obey rmail-summary-size, and make sure summary is on top if we split a single large window. (rmail-summary-scroll-msg-down): If message is not visible at all, use rmail-summary-beginning-of-message. (rmail-summary-scroll-msg-up): Likewise.
author Richard M. Stallman <rms@gnu.org>
date Sat, 14 Dec 1996 02:11:32 +0000
parents 6f45dc8d9d56
children e5d1cfd4d29c
files lisp/mail/rmailsum.el
diffstat 1 files changed, 17 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mail/rmailsum.el	Fri Dec 13 20:50:55 1996 +0000
+++ b/lisp/mail/rmailsum.el	Sat Dec 14 02:11:32 1996 +0000
@@ -1072,14 +1072,13 @@
 		(rmail-summary-next-msg (or dist 1)))
 	    (let ((other-window-scroll-buffer rmail-buffer))
 	      (scroll-other-window dist)))
-	;; This forces rmail-buffer to be sized correctly later.
-	(display-buffer rmail-buffer)
-	(setq rmail-current-message nil)))))
+	;; If it isn't visible at all, show the beginning.
+	(rmail-summary-beginning-of-message)))))
 
 (defun rmail-summary-scroll-msg-down (&optional dist)
   "Scroll the Rmail window backward.
-If the Rmail window is displaying the beginning of a message,
-advance to the previous message."
+If the Rmail window is now displaying the beginning of a message,
+move to the previous message."
   (interactive "P")
   (if (eq dist '-)
       (rmail-summary-scroll-msg-up nil)
@@ -1099,14 +1098,23 @@
 		(rmail-summary-previous-msg (or dist 1)))
 	    (let ((other-window-scroll-buffer rmail-buffer))
 	      (scroll-other-window-down dist)))
-	;; This forces rmail-buffer to be sized correctly later.
-	(display-buffer rmail-buffer)
-	(setq rmail-current-message nil)))))
+	;; If it isn't visible at all, show the beginning.
+	(rmail-summary-beginning-of-message)))))
 
 (defun rmail-summary-beginning-of-message ()
   "Show current message from the beginning."
   (interactive)
-  (pop-to-buffer rmail-buffer)
+  (if (and (one-window-p) (not pop-up-frames))
+      ;; If there is just one window, put the summary on the top.
+      (let ((buffer rmail-buffer))
+	(split-window (selected-window) rmail-summary-window-size)
+	(select-window (frame-first-window))
+	(pop-to-buffer rmail-buffer)
+	;; If pop-to-buffer did not use that window, delete that
+	;; window.  (This can happen if it uses another frame.)
+	(or (eq buffer (window-buffer (next-window (frame-first-window))))
+	    (delete-other-windows)))
+    (pop-to-buffer rmail-buffer))
   (beginning-of-buffer)
   (pop-to-buffer rmail-summary-buffer))