]> git.cworth.org Git - notmuch-wiki/blobdiff - emacstips.mdwn
note API change for tag macro hint.
[notmuch-wiki] / emacstips.mdwn
index f168647c443ad555bedb63a179c135cafa52b707..e73c1f5538a46791d3508f571a9147ecc2e257a9 100644 (file)
@@ -87,7 +87,7 @@ mentioned as script arguments. (Note: The script expects that you have
         #!/bin/sh
         attach_cmds=""
         while [ "$1" ]; do
-            fullpath=$(readlink --canonicalize $1)
+            fullpath=$(readlink --canonicalize "$1")
             attach_cmds="$attach_cmds (mml-attach-file \"$fullpath\")"
             shift
         done
@@ -194,8 +194,36 @@ And version for notmuch 0.12 (not released yet)
             "toggle deleted tag for message"
             (interactive)
             (notmuch-show-tag-message
-              (if (member "deleted" (notmuch-show-get-tags)
-                   "+deleted" "-deleted")))))
+              (if (member "deleted" (notmuch-show-get-tags))
+                  "-deleted" "+deleted"))))
+
+## Adding many tagging keybindings
+
+If you want to have have many tagging keybindings, you can save the typing
+the few lines of  boilerplate for every binding (for versions before 0.12,
+you will need to change notmuch-show-apply-tag-macro).
+
+    (eval-after-load 'notmuch-show
+      '(define-key notmuch-show-mode-map "`" 'notmuch-show-apply-tag-macro))
+
+    (setq notmuch-show-tag-macro-alist
+      (list
+       '("m" "+notmuch::patch" "+notmuch::moreinfo" "-notmuch::needs-review")
+       '("n" "+notmuch::patch" "+notmuch::needs-review" "-notmuch::pushed")
+       '("o" "+notmuch::patch" "+notmuch::obsolete"
+             "-notmuch::needs-review" "-notmuch::moreinfo")
+       '("p" "-notmuch::pushed" "-notmuch::needs-review"
+         "-notmuch::moreinfo" "+pending")
+       '("P" "-pending" "-notmuch::needs-review" "-notmuch::moreinfo" "+notmuch::pushed")
+       '("r" "-notmuch::patch" "+notmuch::review")
+       '("s" "+notmuch::patch" "-notmuch::obsolete" "-notmuch::needs-review" "-notmuch::moreinfo" "+notmuch::stale")
+       '("t" "+notmuch::patch" "-notmuch::needs-review" "+notmuch::trivial")
+       '("w" "+notmuch::patch" "+notmuch::wip" "-notmuch::needs-review")))
+
+    (defun notmuch-show-apply-tag-macro (key)
+      (interactive "k")
+      (let ((macro (assoc key notmuch-show-tag-macro-alist)))
+        (apply 'notmuch-show-tag-message (cdr macro))))
 
 ## Restore reply-to-all key binding to 'r'
 
@@ -340,12 +368,16 @@ emacswiki.
 
 ## <span id="address_completion">Address completion when composing</span>
 
-There are currently two solutions to this:
+There are currently three solutions to this:
+
+### bbdb
 
 [bbdb](http://bbdb.sourceforge.net) is a contact database for emacs
 that works quite nicely together with message mode, including
 address autocompletion.
 
+### notmuch database as an address book
+
 You can also use the notmuch database as a mail address book itself.
 To do this you need a command line tool that outputs likely address
 candidates based on a search string.  There are currently three
@@ -374,6 +406,19 @@ You can perform tab-completion using any of these programs. Just add the followi
         (setq notmuch-address-command "/path/to/address_fetching_program")
         (notmuch-address-message-insinuate)
 
+### Google Contacts
+
+[GooBook](http://code.google.com/p/goobook/) is a command-line tool for
+accessing Google Contacts. Install and set it up according to its documentation.
+
+To use GooBook with notmuch, use this wrapper script and set it up like the
+programs above.
+
+        #!/bin/sh
+        goobook query "$*" | sed 's/\(.*\)\t\(.*\)\t.*/\2 \<\1\>/' | sed '/^$/d'
+
+You can add the sender of a message to Google Contacts by piping the message
+(`notmuch-show-pipe-message`) to `goobook add`.
 
 ## How to sign/encrypt messages with gpg
 
@@ -398,7 +443,7 @@ part.
 
 ### Troubleshooting message-mode gpg support
 
-- If you have trouble with expired subkeys, you may have encounted
+- If you have trouble with expired subkeys, you may have encountered
   emacs bug #7931.  This is fixed in git commit 301ea744c on
   2011-02-02.  Note that if you have the Debian package easypg
   installed, it will shadow the fixed version of easypg included with