(rmail-expunge): Show the message only once, and only if needed.

If the current message was current before, just re-swap.
This commit is contained in:
Richard M. Stallman 2009-03-16 14:04:28 +00:00
parent a6cf3c4e36
commit 0b9b4ab99a
2 changed files with 19 additions and 10 deletions

View file

@ -1,3 +1,9 @@
2009-03-16 Richard M Stallman <rms@gnu.org>
* 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 <handa@m17n.org>
* international/ccl.el (ccl-compile-if): Signal an error for

View file

@ -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 ***