#!/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
of how to make a key binding to add the "spam" tag and remove the
"inbox" tag in notmuch-show-mode:
+In notmuch versions up to 0.11.x
+
(define-key notmuch-show-mode-map "S"
(lambda ()
"mark message as spam"
(notmuch-show-add-tag "spam")
(notmuch-show-remove-tag "inbox")))
+Starting from notmuch 0.12 (not released yet) the functions
+`notmuch-show-add-tag` and `notmuch-show-remove-tag` have changed to
+be more versatile and lost noninteractive use. When upgrading to 0.12
+the above needs to be changed to this:
+
+ (define-key notmuch-show-mode-map "S"
+ (lambda ()
+ "mark message as spam"
+ (interactive)
+ (notmuch-show-tag-message "+spam" "-inbox")))
+
You can do the same for threads in `notmuch-search-mode` by just
replacing "show" with "search" in the called functions.
+(Starting from notmuch 0.12 use `notmuch-search-tag-thread` instead)
+
The definition above makes use of a lambda function, but you could
also define a separate function first:
(notmuch-show-remove-tag "inbox")))
(define-key notmuch-show-mode-map "S" 'notmuch-show-tag-spam)
+(See above for analogy how to apply this for notmuch 0.12 and later)
+
Here's a more complicated example of how to add a toggle "deleted"
key:
(notmuch-show-remove-tag "deleted")
(notmuch-show-add-tag "deleted"))))
+And version for notmuch 0.12 (not released yet)
+
+ (define-key notmuch-show-mode-map "d"
+ (lambda ()
+ "toggle deleted tag for message"
+ (interactive)
+ (notmuch-show-tag-message
+ (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'
Starting from notmuch 0.12 the 'r' key is bound to reply-to-sender instead of
## <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
(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
### 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