+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
"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)))))))
\f
;;;; *** Rmail Mailing Commands ***