X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=emacstips.mdwn;h=e73c1f5538a46791d3508f571a9147ecc2e257a9;hb=a0082ab909e7fe706384842859169153e8fa12da;hp=082c57290d5ab214b91b6d097a9d14bb192ba099;hpb=bb4012de9d66931f5bf8c5966f804026d7619024;p=notmuch-wiki diff --git a/emacstips.mdwn b/emacstips.mdwn index 082c572..e73c1f5 100644 --- a/emacstips.mdwn +++ b/emacstips.mdwn @@ -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 @@ -139,6 +139,8 @@ for making quick tag key bindings. For instance, here's an example 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" @@ -146,9 +148,22 @@ of how to make a key binding to add the "spam" tag and remove the (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: @@ -159,6 +174,8 @@ 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: @@ -170,6 +187,44 @@ 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 @@ -313,12 +368,16 @@ emacswiki. ## Address completion when composing -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 @@ -347,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 @@ -371,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