[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#31271: 25.2; exported deleted RMAIL emails should have theit deleted
From: |
Eli Zaretskii |
Subject: |
bug#31271: 25.2; exported deleted RMAIL emails should have theit deleted flag reset |
Date: |
Sat, 19 May 2018 12:40:14 +0300 |
> Date: Thu, 26 Apr 2018 14:27:04 +0200
> From: Francesco Potortì <pot@gnu.org>
>
> In Rmail, suppose you want to archive your last received email to two
> different mboxes. Then you 'o' to the first one, then 'o' to the second
> one. After the first one, the email is marked as filed, deleted.
>
> I argue that the 'deleted' flag should be reset when archiving the email
> to the second mbox.
Does the patch below give good results? I didn't feel like changing
the default behavior, on account of it being so old, so I added an
option one can customize to get the new behavior.
What about invoking 'o' with a prefix argument -- should it stop
ignoring deleted messages when it looks for the N-1 additional
messages to output to a file, when this option is set non-nil?
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index eee8805..6d91ac5 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -56,6 +56,13 @@ rmail-fields-not-to-output
regexp)
:group 'rmail-output)
+(defcustom rmail-output-reset-deleted-flag nil
+ "Non-nil means reset the \"deleted\" flag when outputting a message to a
file."
+ :type '(choice (const :tag "Output with the \"deleted\" flag reset" t)
+ (const :tag "Output with the \"deleted\" flag intact" nil))
+ :version "27.1"
+ :group 'rmail-output)
+
(defun rmail-output-read-file-name ()
"Read the file name to use for `rmail-output'.
Set `rmail-default-file' to this name as well as returning it.
@@ -533,8 +540,12 @@ rmail-output
(if (zerop rmail-total-messages)
(error "No messages to output"))
(let ((orig-count count)
- beg end)
+ beg end delete-attr-reset-p)
(while (> count 0)
+ (when (and rmail-output-reset-deleted-flag
+ (rmail-message-deleted-p rmail-current-message))
+ (rmail-set-attribute rmail-deleted-attr-index nil)
+ (setq delete-attr-reset-p t))
(setq beg (rmail-msgbeg rmail-current-message)
end (rmail-msgend rmail-current-message))
;; All access to the buffer's local variables is now finished...
@@ -549,6 +560,8 @@ rmail-output
(if babyl-format
(rmail-output-as-babyl file-name noattribute)
(rmail-output-as-mbox file-name noattribute)))))
+ (if delete-attr-reset-p
+ (rmail-set-attribute rmail-deleted-attr-index t))
(or noattribute ; mark message as "filed"
(rmail-set-attribute rmail-filed-attr-index t))
(setq count (1- count))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#31271: 25.2; exported deleted RMAIL emails should have theit deleted flag reset,
Eli Zaretskii <=