# HG changeset patch # User Richard M. Stallman # Date 1237212251 0 # Node ID d95dfcc4b888966f17a6bc33aff2537c03792f70 # Parent f1d999427056a0ee2dbc84e377baa78098916471 (rmail-expunge): Show the message only once, and only if needed. If the current message was current before, just re-swap. diff -r f1d999427056 -r d95dfcc4b888 lisp/mail/rmail.el --- a/lisp/mail/rmail.el Mon Mar 16 13:42:31 2009 +0000 +++ b/lisp/mail/rmail.el Mon Mar 16 14:04:11 2009 +0000 @@ -3263,16 +3263,19 @@ "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 ***