]> git.notmuchmail.org Git - notmuch/commitdiff
emacs: Explicitly set the From address when composing a new message.
authorCarl Worth <cworth@cworth.org>
Wed, 27 Oct 2010 23:58:44 +0000 (16:58 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 28 Oct 2010 00:04:48 +0000 (17:04 -0700)
Previously, underlying emacs code was setting this header. Now, we do the
right thing and query the notmuch configuration for the default value here.

emacs/notmuch-lib.el
emacs/notmuch-mua.el
test/emacs

index 91132b504169510556d0e3f90a21e202f9582c75..abcbfa1f99b8b0f3b0e9e9bb2f409a314d39dd94 100644 (file)
@@ -68,13 +68,25 @@ the user hasn't set this variable with the old or new value."
        (match-string 2 long-string)
       "unknown")))
 
-(defun notmuch-database-path ()
-  "Return the database.path value from the notmuch configuration."
+(defun notmuch-config-get (item)
+  "Return a value from the notmuch configuration."
   ;; Trim off the trailing newline
   (substring (shell-command-to-string
-             (concat notmuch-command " config get database.path"))
+             (concat notmuch-command " config get " item))
              0 -1))
 
+(defun notmuch-database-path ()
+  "Return the database.path value from the notmuch configuration."
+  (notmuch-config-get "database.path"))
+
+(defun notmuch-user-name ()
+  "Return the user.name value from the notmuch configuration."
+  (notmuch-config-get "user.name"))
+
+(defun notmuch-user-primary-email ()
+  "Return the user.primary_email value from the notmuch configuration."
+  (notmuch-config-get "user.primary_email"))
+
 ;;
 
 ;; XXX: This should be a generic function in emacs somewhere, not
index 0ad079ffaea88a38a2a1cc9ed594341ec3bc0265..ddaec676f4232b614920c7c0d66d88cb42d6b7d2 100644 (file)
@@ -126,6 +126,10 @@ list."
       (when (not (string= "" user-agent))
        (push (cons "User-Agent" user-agent) other-headers))))
 
+  (unless (assoc "From" other-headers)
+    (push (cons "From" (concat
+                       (notmuch-user-name) " <" (notmuch-user-primary-email) ">")) other-headers))
+
   (message-mail to subject other-headers continue
                switch-function yank-action send-actions)
   (message-sort-headers)
index dd3acc0ecdd1962f989b9a91d3b1753d1c9a97a0..2db8542a571be8e7130b67c8974764f9eef120d2 100755 (executable)
@@ -68,19 +68,11 @@ smtp_dummy_pid=$!
 test_emacs "(setq message-send-mail-function 'message-smtpmail-send-it) (setq smtpmail-smtp-server \"localhost\") (setq smtpmail-smtp-service \"25025\") (notmuch-hello) (notmuch-mua-mail) (message-goto-to) (insert \"user@example.com\") (message-goto-subject) (insert \"Testing message sent via SMTP\") (message-goto-body) (insert \"This is a test that messages are sent via SMTP\") (message-send-and-exit)" >/dev/null 2>&1
 wait ${smtp_dummy_pid}
 
-# XXX: Masking away the User-Agent, Date, and Message-ID makes sense,
-# since these fields are inherently unpredictable. But doing the same
-# thing with the From address is cheating. What should really be
-# happening here is that the emacs interface should be using something
-# like "notmuch compose" to construct the initial message and it
-# should be getting the user's name and email address from the notmuch
-# configuration file.
-
-output=$(sed -e 's,^From: .*,From: XXX,' \
+output=$(sed \
     -e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \
     -e s',^Date:.*,Date: XXX,' \
     -e s',^Message-ID: <.*>$,Message-ID: <XXX>,' < sent_message)
-test_expect_equal "$output" "From: XXX
+test_expect_equal "$output" "From: Notmuch Test Suite <test_suite@notmuchmail.org>
 To: user@example.com
 Subject: Testing message sent via SMTP
 User-Agent: Notmuch/XXX Emacs/XXX