]> git.notmuchmail.org Git - notmuch/blobdiff - emacs/notmuch-mua.el
fix checking whether header is member of message-hidden-headers
[notmuch] / emacs / notmuch-mua.el
index 6575af64489b9d816d2a68d7e896fc6317a2801d..8824b080f5c280cd7fd5fae55f4ea9bd682bb193 100644 (file)
@@ -65,17 +65,22 @@ list."
 (defun notmuch-mua-add-more-hidden-headers ()
   "Add some headers to the list that are hidden by default."
   (mapc (lambda (header)
-         (when (not (member header 'message-hidden-headers))
+         (when (not (member header message-hidden-headers))
            (push header message-hidden-headers)))
        notmuch-mua-hidden-headers))
 
 (defun notmuch-mua-reply (query-string &optional sender)
-  (let (headers body)
+  (let (headers
+       body
+       (args '("reply")))
+    (if notmuch-show-process-crypto
+       (setq args (append args '("--decrypt"))))
+    (setq args (append args (list query-string)))
     ;; This make assumptions about the output of `notmuch reply', but
     ;; really only that the headers come first followed by a blank
     ;; line and then the body.
     (with-temp-buffer
-      (call-process notmuch-command nil t nil "reply" query-string)
+      (apply 'call-process (append (list notmuch-command nil (list t t) nil) args))
       (goto-char (point-min))
       (if (re-search-forward "^$" nil t)
          (save-excursion
@@ -149,20 +154,41 @@ name and addresses configured in the notmuch configuration file."
   :group 'notmuch
   :type '(repeat string))
 
-(defun notmuch-mua-sender-collection ()
-  (if notmuch-identities
-      notmuch-identities
-    (mapcar (lambda (address)
-             (concat (notmuch-user-name) " <" address ">"))
-           (cons (notmuch-user-primary-email) (notmuch-user-other-email)))))
+(defcustom notmuch-always-prompt-for-sender nil
+  "Always prompt for the From: address when composing or forwarding a message.
+
+This is not taken into account when replying to a message, because in that case
+the From: header is already filled in by notmuch."
+  :group 'notmuch
+  :type 'boolean)
 
 (defvar notmuch-mua-sender-history nil)
 
 (defun notmuch-mua-prompt-for-sender ()
   (interactive)
-  (let ((collection (notmuch-mua-sender-collection)))
-    (ido-completing-read "Send mail From: " collection
-                        nil 'confirm nil 'notmuch-mua-sender-history (car collection))))
+  (let (name addresses one-name-only)
+    ;; If notmuch-identities is non-nil, check if there is a fixed user name.
+    (if notmuch-identities
+       (let ((components (mapcar 'mail-extract-address-components notmuch-identities)))
+         (setq name          (caar components)
+               addresses     (mapcar 'cadr components)
+               one-name-only (eval
+                              (cons 'and
+                                    (mapcar (lambda (identity)
+                                              (string-equal name (car identity)))
+                                            components)))))
+      ;; If notmuch-identities is nil, use values from the notmuch configuration file.
+      (setq name          (notmuch-user-name)
+           addresses     (cons (notmuch-user-primary-email) (notmuch-user-other-email))
+           one-name-only t))
+    ;; Now prompt the user, either for an email address only or for a full identity.
+    (if one-name-only
+       (let ((address
+              (ido-completing-read (concat "Sender address for " name ": ") addresses
+                                   nil nil nil 'notmuch-mua-sender-history (car addresses))))
+         (concat name " <" address ">"))
+      (ido-completing-read "Send mail From: " notmuch-identities
+                          nil nil nil 'notmuch-mua-sender-history (car notmuch-identities)))))
 
 (defun notmuch-mua-new-mail (&optional prompt-for-sender)
   "Invoke the notmuch mail composition window.
@@ -171,7 +197,7 @@ If PROMPT-FOR-SENDER is non-nil, the user will be prompted for
 the From: address first."
   (interactive "P")
   (let ((other-headers
-        (when prompt-for-sender
+        (when (or prompt-for-sender notmuch-always-prompt-for-sender)
           (list (cons 'from (notmuch-mua-prompt-for-sender))))))
     (notmuch-mua-mail nil nil other-headers)))
 
@@ -181,7 +207,7 @@ the From: address first."
 If PROMPT-FOR-SENDER is non-nil, the user will be prompted for
 the From: address first."
   (interactive "P")
-  (if prompt-for-sender
+  (if (or prompt-for-sender notmuch-always-prompt-for-sender)
       (let* ((sender (notmuch-mua-prompt-for-sender))
             (address-components (mail-extract-address-components sender))
             (user-full-name (car address-components))