notmuch-mua functions for replies now use the built-in customizable variable message-dont-reply-to-names with the same semantics as message-mode.
--- This version of the patch adds more testing and ensures predicate values work Signed-off-by: jao <j...@gnu.org> --- doc/notmuch-emacs.rst | 9 ++++ emacs/notmuch-mua.el | 13 +++++ test/T454-emacs-dont-reply-names.sh | 76 +++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100755 test/T454-emacs-dont-reply-names.sh diff --git a/doc/notmuch-emacs.rst b/doc/notmuch-emacs.rst index 78528785..970cd7b7 100644 --- a/doc/notmuch-emacs.rst +++ b/doc/notmuch-emacs.rst @@ -493,6 +493,15 @@ Sending Mail :code:`compose-mail`. To use ``notmuch`` for this, customize this variable to the symbol :code:`notmuch-user-agent`. +:index:`message-dont-reply-to-names` + + When composing mail replies, Emacs's message mode uses the + variable :code:`message-dont-reply-to-names` to exclude + recipients matching a given collection of regular expressions + or satisfying an arbitrary predicate. Notmuch's MUA inherits + this standard mechanism and will honour your customization of + this variable. + Init File --------- diff --git a/emacs/notmuch-mua.el b/emacs/notmuch-mua.el index 0ae33127..865f4bb2 100644 --- a/emacs/notmuch-mua.el +++ b/emacs/notmuch-mua.el @@ -382,6 +382,18 @@ instead of `message-mode' and SWITCH-FUNCTION is mandatory." (erase-buffer) (notmuch-message-mode))) +(defun notmuch-mua--remove-dont-reply-to-names () + (when-let ((nr (message-dont-reply-to-names))) + (let ((nr-filter (if (functionp nr) + (lambda (mail) (unless (funcall nr mail) mail)) + (lambda (mail) (unless (string-match-p nr mail) mail))))) + (dolist (header '("To" "Cc")) + (when-let ((v (message-fetch-field header))) + (let* ((v (mapcar #'string-trim (message-tokenize-header v))) + (vs (delq nil (mapcar nr-filter v))) + (v (when vs (mapconcat #'identity vs ", ")))) + (message-replace-header header v))))))) + (defun notmuch-mua-mail (&optional to subject other-headers _continue switch-function yank-action send-actions return-action &rest ignored) @@ -422,6 +434,7 @@ moved to the \"To:\" header." (message-this-is-mail t)) (message-setup-1 headers yank-action send-actions return-action)) (notmuch-fcc-header-setup) + (notmuch-mua--remove-dont-reply-to-names) (message-sort-headers) (message-hide-headers) (set-buffer-modified-p nil) diff --git a/test/T454-emacs-dont-reply-names.sh b/test/T454-emacs-dont-reply-names.sh new file mode 100755 index 00000000..e31141f9 --- /dev/null +++ b/test/T454-emacs-dont-reply-names.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +test_description="emacs reply" +. $(dirname "$0")/test-lib.sh || exit 1 +. $NOTMUCH_SRCDIR/test/test-lib-emacs.sh || exit 1 + +EXPECTED=$NOTMUCH_SRCDIR/test/emacs-show.expected-output + +test_require_emacs + +add_email_corpus default + +test_begin_subtest "regular expression" +test_emacs '(let ((message-dont-reply-to-names "notmuchmail\\|noreply\\|harvard")) + (notmuch-mua-new-reply + "id:20091117203301.gv3...@dottiness.seas.harvard.edu" nil t) + (test-visible-output "OUTPUT-FULL.raw"))' + +notmuch_dir_sanitize < OUTPUT-FULL.raw > OUTPUT-FULL +head -6 OUTPUT-FULL > OUTPUT + +cat <<EOF > EXPECTED +From: Notmuch Test Suite <test_su...@notmuchmail.org> +To: Mikhail Gusarov <dotted...@dottedmag.net> +Subject: Re: [notmuch] Working with Maildir storage? +In-Reply-To: <20091117203301.gv3...@dottiness.seas.harvard.edu> +Fcc: MAIL_DIR/sent +--text follows this line-- +EOF + +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "predicate" +test_emacs '(let ((message-dont-reply-to-names + (lambda (m) (string-prefix-p "Mikhail" m)))) + (notmuch-mua-new-reply + "id:20091117203301.gv3...@dottiness.seas.harvard.edu" nil t) + (test-visible-output "OUTPUT-FULL-PRED.raw"))' + +notmuch_dir_sanitize < OUTPUT-FULL-PRED.raw > OUTPUT-FULL-PRED +head -7 OUTPUT-FULL-PRED > OUTPUT-PRED + +cat <<EOF > EXPECTED-PRED +From: Notmuch Test Suite <test_su...@notmuchmail.org> +To: Lars Kellogg-Stedman <l...@seas.harvard.edu> +Cc: notmuch@notmuchmail.org +Subject: Re: [notmuch] Working with Maildir storage? +In-Reply-To: <20091117203301.gv3...@dottiness.seas.harvard.edu> +Fcc: MAIL_DIR/sent +--text follows this line-- +EOF + +test_expect_equal_file EXPECTED-PRED OUTPUT-PRED + +test_begin_subtest "nil value" +test_emacs '(let ((message-dont-reply-to-names nil)) + (notmuch-mua-new-reply + "id:20091117203301.gv3...@dottiness.seas.harvard.edu" nil t) + (test-visible-output "OUTPUT-FULL-NIL.raw"))' + +notmuch_dir_sanitize < OUTPUT-FULL-NIL.raw > OUTPUT-FULL-NIL +head -7 OUTPUT-FULL-NIL > OUTPUT-NIL + +cat <<EOF > EXPECTED-NIL +From: Notmuch Test Suite <test_su...@notmuchmail.org> +To: Lars Kellogg-Stedman <l...@seas.harvard.edu>, Mikhail Gusarov <dotted...@dottedmag.net> +Cc: notmuch@notmuchmail.org +Subject: Re: [notmuch] Working with Maildir storage? +In-Reply-To: <20091117203301.gv3...@dottiness.seas.harvard.edu> +Fcc: MAIL_DIR/sent +--text follows this line-- +EOF + +test_expect_equal_file EXPECTED-NIL OUTPUT-NIL + +test_done -- 2.36.1 _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-le...@notmuchmail.org