Use two separate save-excursion calls.
(rmail-summary-input): Use pop-to-buffer.
(rmail-summary-get-new-mail): Gobble rmail-current-message;
later go to that message.
(rmail-summary-next-msg): Start at end of line, if moving forward.
Move to beginning of line, after the loop.
(rmail-new-summary): Fix format of elt in minor-mode-alist.
Call set-buffer again after rmail-only-expunge.
(rmail-summary-add-label, rmail-summary-kill-label):
Fix reading the label.
(rmail-summary-rmail-update): Bind window locally.
Use unwind-protect, not save-window-excursion.
(rmail-summary-previous-all, rmail-summary-next-all): Likewise.
(rmail-summary-rmail-update): Do nothing if rmail buffer not visible.
(rmail-summary-mode-map): Don't bind C-n, C-p. Use ordinary move cmds.
(rmail-new-summary): New arg redo-form. Considerable rewrite
of how and when buffers are selected.
(rmail-summary-mode): New local vars rmail-summary-redo,
revert-buffer-function, post-command-hook, rmail-current-message.
(rmail-summary-expunge): Use rmail-update-summary.
(rmail-summary-get-new-mail): Likewise.
(rmail-summary-expunge-and-save): Likewise.
(rmail-summary-input): Don't update summary at all.
(rmail-summary-reply): Do the work inside save-window-excursion,
then switch to the mail buffer.
(rmail-summary-retry-failure): Likewise.
(rmail-summary-edit-current-message): Delete spurious autoload.
(rmail-summary-summary): Function deleted.
Use plain rmail-summary on h and C-M-h.
(rmail-summary-rmail-update): New function.
Big rewrite from weiner@pts.mot.com.