]> git.cworth.org Git - notmuch/blobdiff - emacs/notmuch-mua.el
emacs: use message-dont-reply-to-names when composing replies
[notmuch] / emacs / notmuch-mua.el
index c679373b175955092858c7bfe8366a4aa088c91e..0f9ef3c22c7152b89d0c87a0703267a57806a709 100644 (file)
 
 ;;; Code:
 
+(eval-when-compile (require 'subr-x))
+
 (require 'message)
+(require 'gmm-utils)
 (require 'mm-view)
 (require 'format-spec)
 
@@ -316,7 +319,9 @@ Typically this is added to `notmuch-mua-send-hook'."
                ;; text.
                (notmuch-show-process-crypto process-crypto)
                ;; Don't indent multipart sub-parts.
-               (notmuch-show-indent-multipart nil))
+               (notmuch-show-indent-multipart nil)
+               ;; Stop certain mime types from being inlined
+               (mm-inline-override-types (notmuch--inline-override-types)))
             ;; We don't want sigstatus buttons (an information leak and usually wrong anyway).
             (cl-letf (((symbol-function 'notmuch-crypto-insert-sigstatus-button) #'ignore)
                       ((symbol-function 'notmuch-crypto-insert-encstatus-button) #'ignore))
@@ -380,10 +385,31 @@ 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 (if (functionp message-dont-reply-to-names)
+                     message-dont-reply-to-names
+                   (gmm-regexp-concat message-dont-reply-to-names)))
+             (nr-filter
+              (if (functionp nr)
+                  (lambda (mail) (and (not (funcall nr mail)) mail))
+                (lambda (mail) (and (not (string-match-p nr mail)) mail)))))
+    (dolist (header '("To" "Cc"))
+      (when-let ((v (message-fetch-field header)))
+       (let* ((tokens (mapcar #'string-trim (message-tokenize-header v)))
+              (good-tokens (delq nil (mapcar nr-filter tokens)))
+              (addr (and good-tokens (mapconcat #'identity good-tokens ", "))))
+         (message-replace-header header addr))))))
+
 (defun notmuch-mua-mail (&optional to subject other-headers _continue
                                   switch-function yank-action send-actions
                                   return-action &rest ignored)
-  "Invoke the notmuch mail composition window."
+  "Invoke the notmuch mail composition window.
+
+The position of point when the function returns differs depending
+on the values of TO and SUBJECT.  If both are non-nil, point is
+moved to the message's body.  If SUBJECT is nil but TO isn't,
+point is moved to the \"Subject:\" header.  Otherwise, point is
+moved to the \"To:\" header."
   (interactive)
   (when notmuch-mua-user-agent-function
     (let ((user-agent (funcall notmuch-mua-user-agent-function)))
@@ -414,11 +440,15 @@ instead of `message-mode' and SWITCH-FUNCTION is mandatory."
        (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)
   (notmuch-mua-maybe-set-window-dedicated)
-  (message-goto-to))
+  (cond
+   ((and to subject) (message-goto-body))
+   (to (message-goto-subject))
+   (t (message-goto-to))))
 
 (defvar notmuch-mua-sender-history nil)