]> git.notmuchmail.org Git - notmuch-wiki/blobdiff - emacstips.mdwn
emacstips: how to add a user-agent header
[notmuch-wiki] / emacstips.mdwn
index 96e520f3d97f7c03b4df20f19052b479b5a941e8..c0f7617c47ac6acf500fb93951902322b7723d98 100644 (file)
@@ -78,6 +78,19 @@ As its name implies, notmuch isn't really doing that much (which is part of its
   python script (which should be rewritten in lisp and integrated into
   the notmuch frontend, really, but is not difficult to setup.
 
+  This is the code I needed in my .emacs file to make it work with
+  the python wrapper that I called mddeliver.py:
+
+          ;; fcc handler
+          (defun maildir-deliver-region(destdir)
+            (shell-command-on-region
+              (point-min) (point-max)
+              (concat "/usr/local/bin/mddeliver.py -c -s -d " destdir)))
+          (setq message-fcc-handler-function 'maildir-deliver-region)
+          (defun my-message-header-setup ()
+            (message-add-header "Fcc: ~/mail/INBOX.Sent"))
+          (add-hook 'message-send-hook 'my-message-header-setup)
+
 * <span id="customize_notmuch_folder">How to customize notmuch-folders</span>
 
   There's a "notmuch-folder" command available in the emacs client
@@ -184,8 +197,46 @@ As its name implies, notmuch isn't really doing that much (which is part of its
 * <span id="address_completion">**how to get email address completion**</span>
   There are 2 solutions. Use "bbdb" which allows you to maintain a mail database and gives you mail address completion with the tab key.
 
-  Alternatively, you use the notmuch database as a mail address book itself. This is how you compile the (3rd party) tool "addrlookup" to give you address completion:
+  Alternatively, you use the notmuch database as a mail address book
+  itself. You need a command line tool that outputs likely address
+  candidates based on a search string. There is a python tool
+  [notmuch_address.py](which can be fetched with `git clone
+  http://jkr.acm.jhu.edu/git/notmuch_addresses.git`) (slower, but no
+  compilation required so good for testing the setup) or the
+  vala-based addrlookup (faster, but needs compiling).  This is how
+  you compile the (3rd party) tool "addrlookup" to give you address
+  completion:
 
   - you need the addrlookup binary, first of all. Grab http://github.com/spaetz/vala-notmuch/raw/static-sources/src/addrlookup.c and build it with *cc -o addrlookup addrlookup.c `pkg-config --cflags --libs gobject-2.0` -lnotmuch*. That should give you the binary that you can test already.
 
-  - EUDC is integrated into emacs and can be used for tab completion of email addresses. The code I use is here http://gist.github.com/359425. It was announce in this mail (id:87fx3uflkx.fsf@jhu.edu) which contains links to the git repositories which contain the files.
\ No newline at end of file
+  - EUDC is integrated into emacs and can be used for tab completion
+    of email addresses. The code I use is here
+    http://gist.github.com/359425. It was announce in [this
+    mail](http://mid.gmane.org/87fx3uflkx.fsf@jhu.edu)
+    (id:87fx3uflkx.fsf@jhu.edu) which contains links to the git
+    repositories which contain the files.
+
+* <span id="insert_user_agent">**how to insert a user agent header**</span>
+
+  Sometimes it is good to let the world know which email client you use, so others know which quirks to expect. And it is no shame to let others know that you are way ahead of mail2.0. Notmuch is mail3.0 (at least)!
+
+  [This mail](http://mid.gmane.org/87y6gtnkch.fsf@SSpaeth.de) (id:87y6gtnkch.fsf@SSpaeth.de) posted some code, that -when inserted in your .emacs file- will add a User-Agent header (which is hidden during composing and in notmuch show, but which can be seen when viewing all headers of a mail):
+
+  If you insert this slab of code, you will get a User-Agent header for notmuch 
+          ;; set the User-Agent string whenever we invoke message mode
+          (add-hook 'message-mode-hook '(lambda()
+              ;; check if User-Agent is a required header and set it if not
+              (if (not (memq 'User-Agent message-required-mail-headers))
+                  (setq message-required-mail-headers 
+                        (append message-required-mail-headers '(User-Agent))))
+              ;; hide the User-Agent header if not already hidden
+              (if (not (memq '"^User-Agent:" message-hidden-headers))
+                  (setq message-hidden-headers 
+                        (append message-hidden-headers '("^User-Agent:"))))
+              ;; create user agent string
+              (let ((notmuch-user-agent (concat 
+                                         (substring (shell-command-to-string (concat notmuch-command " --version")) 0 -1)
+                                         " (Emacs " emacs-version "/"
+                                          system-configuration ")")))
+                (setq message-newsreader notmuch-user-agent))
+          ))