]> git.notmuchmail.org Git - notmuch/commitdiff
emacs: notmuch-fcc-header-setup: fix regression
authorJonas Bernoulli <jonas@bernoul.li>
Mon, 2 Aug 2021 22:10:08 +0000 (00:10 +0200)
committerDavid Bremner <david@tethera.net>
Thu, 9 Sep 2021 01:40:53 +0000 (22:40 -0300)
With [1: 16b2db09] we lost the (undocumented) option to use no Fcc
header only for From addresses matching a regexp.  This brings back
that feature and documents it.

1: 2021-01-15 16b2db0986ce0ed7c420a69d0a98bb41e9ca4bd8
   emacs: various cosmetic improvements

emacs/notmuch-maildir-fcc.el

index c715532b38c4b46f5ac85dda3715d2b972d5d217..7e177bf7fb4c25bd7d7b4ecb6bfe916292433bdc 100644 (file)
@@ -41,16 +41,17 @@ Three types of values are permitted:
 - a string: the value of `notmuch-fcc-dirs' is the Fcc header to
   be used.
 
-- a list: the folder is chosen based on the From address of the
-  current message using a list of regular expressions and
-  corresponding folders:
+- an alist: the folder is chosen based on the From address of
+  the current message according to an alist mapping regular
+  expressions to folders or nil:
 
      ((\"Sebastian@SSpaeth.de\" . \"privat\")
       (\"spaetz@sspaeth.de\" . \"OUTBOX.OSS\")
       (\".*\" . \"defaultinbox\"))
 
-  If none of the regular expressions match the From address, no
-  Fcc header will be added.
+  If none of the regular expressions match the From address, or
+  if the cdr of the matching entry is nil, then no Fcc header
+  will be added.
 
 If `notmuch-maildir-use-notmuch-insert' is set (the default) then
 the header should be of the form \"folder +tag1 -tag2\" where
@@ -74,7 +75,8 @@ directory if it does not exist yet when sending a mail."
          (const :tag "No FCC header" nil)
          (string :tag "A single folder")
          (repeat :tag "A folder based on the From header"
-                 (cons regexp (string :tag "Folder"))))
+                 (cons regexp (choice (const :tag "No FCC header" nil)
+                                      (string :tag "Folder")))))
   :require 'notmuch-fcc-initialization
   :group 'notmuch-send)
 
@@ -105,13 +107,14 @@ Otherwise set it according to `notmuch-fcc-dirs'."
           ;; Old style - no longer works.
           (error "Invalid `notmuch-fcc-dirs' setting (old style)"))
          ((listp notmuch-fcc-dirs)
-          (or (seq-some (let ((from (message-field-value "From")))
-                          (pcase-lambda (`(,regexp . ,folder))
-                            (and (string-match-p regexp from)
-                                 folder)))
-                        notmuch-fcc-dirs)
-              (progn (message "No Fcc header added.")
-                     nil)))
+          (if-let ((match (seq-some (let ((from (message-field-value "From")))
+                                      (pcase-lambda (`(,regexp . ,folder))
+                                        (and (string-match-p regexp from)
+                                             (cons t folder))))
+                                    notmuch-fcc-dirs)))
+               (cdr match)
+             (message "No Fcc header added.")
+            nil))
          (t
           (error "Invalid `notmuch-fcc-dirs' setting (neither string nor list)")))))
     (when subdir