From 6ab44bcb366338b395e0be5bf25b18f796bfb112 Mon Sep 17 00:00:00 2001 From: dickmao Date: Tue, 22 Jun 2021 17:11:04 -0400 Subject: [PATCH] message-replace-header fix Changing an `if` to a `when` has consequences (bug#49070) * lisp/gnus/message.el (message-replace-header): Restore else. --- lisp/gnus/message.el | 10 +++++----- test/lisp/gnus/message-tests.el | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 0c027ca290..ae78fc9fc9 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -8730,11 +8730,11 @@ message-replace-header (message-narrow-to-headers) (message-remove-header header)) (when (or force (> (length new-value) 0)) - (when after - (if (listp after) - (apply #'message-position-on-field - (append (list header) after)) - (message-position-on-field header after)) + (if after + (apply #'message-position-on-field header + (if (listp after) + after + (cons after nil))) (message-position-on-field header)) (insert new-value)))) diff --git a/test/lisp/gnus/message-tests.el b/test/lisp/gnus/message-tests.el index 36ec8c51d1..b4f2b7f675 100644 --- a/test/lisp/gnus/message-tests.el +++ b/test/lisp/gnus/message-tests.el @@ -154,6 +154,35 @@ message-alter-repeat-address "\"larsi@gnus.org\" ") "larsi@gnus.org"))) +(ert-deftest message-replace-header () + (with-temp-buffer + (save-excursion + (insert "From: dang@gnus.org +To: user1, + user2 +Cc: user3, + user4 +--text follows this line-- +Hello. +")) + (save-excursion + (message-replace-header "From" "ding@gnus.org") + (should (cl-search "ding" (message-field-value "From")))) + (save-excursion + (message-replace-header "From" "dong@gnus.org" "To") + (should (cl-search "dong" (message-field-value "From"))) + (should (re-search-forward "From:")) + (should-error (re-search-forward "To:")) + (should (re-search-forward "Cc:"))) + (save-excursion + (message-replace-header "From" "dang@gnus.org" (split-string "To Cc")) + (should (cl-search "dang" (message-field-value "From"))) + (should (re-search-forward "From:")) + (should-error (re-search-forward "To:")) + ;; That this isn't so is probably a bug from 1997. + ;; (should-error (re-search-forward "Cc:")) + ))) + (provide 'message-mode-tests) ;;; message-mode-tests.el ends here -- 2.26.2