# HG changeset patch # User Richard M. Stallman # Date 785343674 0 # Node ID f0264fb75509edb49e8564ac45d04f3e2406c302 # Parent fdc1155b891c428bb862af239b9eaa030058e383 (rmail-summary-scroll-msg-up): If at end of message, advance to the next message. (rmail-summary-scroll-msg-down): If at beginning of message, advance to the previous message. diff -r fdc1155b891c -r f0264fb75509 lisp/mail/rmailsum.el --- a/lisp/mail/rmailsum.el Sat Nov 19 20:45:17 1994 +0000 +++ b/lisp/mail/rmailsum.el Sun Nov 20 15:01:14 1994 +0000 @@ -864,22 +864,55 @@ (set-buffer obuf)))))) (defun rmail-summary-scroll-msg-up (&optional dist) - "Scroll the Rmail window forward." + "Scroll the Rmail window forward. +If the Rmail window is displaying the end of a message, +advance to the next message." (interactive "P") - (let ((other-window-scroll-buffer rmail-buffer)) - (if (get-buffer-window 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 (eq dist '-) + (rmail-summary-scroll-msg-down nil) + (let ((rmail-buffer-window (get-buffer-window rmail-buffer))) + (if rmail-buffer-window + (if (let ((rmail-summary-window (selected-window))) + (select-window rmail-buffer-window) + (prog1 + ;; Is EOB visible in the buffer? + (save-excursion + (let ((ht (window-height (selected-window)))) + (move-to-window-line (- ht 2)) + (end-of-line) + (eobp))) + (select-window rmail-summary-window))) + (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))))) (defun rmail-summary-scroll-msg-down (&optional dist) - "Scroll the Rmail window backward." + "Scroll the Rmail window backward. +If the Rmail window is displaying the beginning of a message, +advance to the previous message." (interactive "P") - (rmail-summary-scroll-msg-up - (cond ((eq dist '-) nil) - ((null dist) '-) - (t (- (prefix-numeric-value dist)))))) + (if (eq dist '-) + (rmail-summary-scroll-msg-up nil) + (let ((rmail-buffer-window (get-buffer-window rmail-buffer))) + (if rmail-buffer-window + (if (let ((rmail-summary-window (selected-window))) + (select-window rmail-buffer-window) + (prog1 + ;; Is BOB visible in the buffer? + (save-excursion + (move-to-window-line 0) + (beginning-of-line) + (bobp)) + (select-window rmail-summary-window))) + (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))))) (defun rmail-summary-beginning-of-message () "Show current message from the beginning."