From: Richard M. Stallman Date: Mon, 16 Mar 2009 14:04:28 +0000 (+0000) Subject: (rmail-expunge): Show the message only once, and only if needed. X-Git-Tag: emacs-pretest-23.0.92~164 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b9b4ab99ac9af1578e9ce2b025c5cb4c16c1112;p=emacs.git (rmail-expunge): Show the message only once, and only if needed. If the current message was current before, just re-swap. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0c9a16d9dde..4ab45886f72 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-03-16 Richard M Stallman + + * mail/rmail.el (rmail-retry-failure): Discard rmail-ignored-headers. + (rmail-expunge): Show the message only once, and only if needed. + If the current message was current before, just re-swap. + 2009-03-16 Kenichi Handa * international/ccl.el (ccl-compile-if): Signal an error for diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 3fa649e32af..7016022607f 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -3263,16 +3263,19 @@ See also user-option `rmail-confirm-expunge'." "Erase deleted messages from Rmail file and summary buffer." (interactive) (when (rmail-expunge-confirmed) - (let ((old-total rmail-total-messages) - (opoint (with-current-buffer rmail-buffer - (when (rmail-buffers-swapped-p) - (point))))) - (rmail-only-expunge dont-show) - (if (rmail-summary-exists) - (rmail-select-summary (rmail-update-summary)) - (rmail-show-message-1 rmail-current-message) - (if (and (eq old-total rmail-total-messages) opoint) - (goto-char opoint)))))) + (let ((was-deleted (rmail-message-deleted-p rmail-current-message)) + (was-swapped (rmail-buffers-swapped-p))) + (rmail-only-expunge t) + (unless dont-show + (if (rmail-summary-exists) + (rmail-select-summary (rmail-update-summary)) + ;; If we expunged the current message, a new one is current now, + ;; so show it. If we weren't showing a message, show it. + (if (or was-deleted (not was-swapped)) + (rmail-show-message-1 rmail-current-message) + ;; Show the same message that was being shown before. + (rmail-swap-buffers) + (setq rmail-buffer-swapped t))))))) ;;;; *** Rmail Mailing Commands ***