From b7174eac02828bf63459d533a3e77c81d9fb563e Mon Sep 17 00:00:00 2001 From: Mark Walters Date: Tue, 6 May 2014 16:10:43 +0100 Subject: [PATCH] emacstips: update tagging lisp snippets Update the tagging snippets to reflect the latest version of notmuch tag. In fact these snippets work back to at least 0.13 (as lists of tag changes were always allowed) so this simplifies the page considerably. We deem pre 0.13 as archaic (debian stable has 0.13) and remove the examples for older notmuches. --- emacstips.mdwn | 75 ++++++++++++++------------------------------------ 1 file changed, 21 insertions(+), 54 deletions(-) diff --git a/emacstips.mdwn b/emacstips.mdwn index 3a1a3dd..552fe31 100644 --- a/emacstips.mdwn +++ b/emacstips.mdwn @@ -174,62 +174,39 @@ case you want this behaviour: ## Add a key binding to add/remove/toggle a tag -The `notmuch-{search,show}-{add,remove}-tag` functions are very useful -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" - (interactive) - (notmuch-show-add-tag "spam") - (notmuch-show-remove-tag "inbox"))) - -Starting from notmuch 0.12 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: +The `notmuch-{search,show,tree}-tag` functions are very useful for +making quick tag key bindings. The arguments to these functions have +changed as notmuch has evolved but the following should work on all +versions of notmuch 0.13 and later. These functions take a list of +tag changes as argument. For example, an argument of (list "+spam" +"-inbox) adds the tag spam and deletes the tag inbox. Note the +argument must be a list even if there is only a single tag change +e.g., use (list "+deleted") to add the deleted tag. + +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: (define-key notmuch-show-mode-map "S" (lambda () "mark message as spam" (interactive) - (notmuch-show-tag-message "+spam" "-inbox"))) + (notmuch-show-tag (list "+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: - - (define-key notmuch-search-mode-map "S" - (lambda () - "mark messages in thread as spam" - (interactive) - (notmuch-show-tag-thread "+spam" "-inbox"))) - -Starting from notmuch 0.13 use `notmuch-search-tag` -- it has a little -different usage syntax: +replacing "show" with "search" in the keymap and called functions, or +for messages in `notmuch-tree-mode` by replacing "show" by "tree". If +you want to tag a whole thread in `notmuch-tree-mode` use +`notmuch-tree-tag-thread` instead of `notmuch-tree-tag`. - (define-key notmuch-search-mode-map "S" - (lambda () - "mark messages in thread as spam" - (interactive) - (notmuch-search-tag '("+spam" "-inbox")))) - -The definition above makes use of a lambda function, but you could +The definitions above make use of a lambda function, but you could also define a separate function first: (defun notmuch-show-tag-spam () "mark message as spam" (interactive) - (notmuch-show-add-tag "spam") - (notmuch-show-remove-tag "inbox"))) - (define-key notmuch-show-mode-map "S" 'notmuch-show-tag-spam) + (notmuch-show-add-tag (list "+spam" "-inbox"))) -(See above for analogy how to apply this for notmuch 0.12 and later) + (define-key notmuch-show-mode-map "S" 'notmuch-show-tag-spam) Here's a more complicated example of how to add a toggle "deleted" key: @@ -239,18 +216,8 @@ key: "toggle deleted tag for message" (interactive) (if (member "deleted" (notmuch-show-get-tags)) - (notmuch-show-remove-tag "deleted") - (notmuch-show-add-tag "deleted")))) - -And version for notmuch 0.12 - - (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")))) + (notmuch-show-tag (list "-deleted")) + (notmuch-show-tag (list "+deleted"))))) ## Adding many tagging keybindings -- 2.43.0