From: Pieter Praet <pieter@praet.org>
To: David Bremner <david@tethera.net>,
Dmitry Kurochkin <dmitry.kurochkin@gmail.com>
Cc: Notmuch Mail <notmuch@notmuchmail.org>
Subject: [PATCH v2 6/6] emacs: `notmuch-show-tag-all' with prefix arg only tags open messages
Date: Fri, 24 Feb 2012 23:30:40 +0100 [thread overview]
Message-ID: <1330122640-18895-7-git-send-email-pieter@praet.org> (raw)
In-Reply-To: <1330122640-18895-1-git-send-email-pieter@praet.org>
* emacs/notmuch-show.el
(notmuch-show-get-messages-ids):
If provided with optional argument PREDICATE, only return
Message-Id's of messages for which PREDICATE returns non-nil.
(notmuch-show-tag-all):
New argument ONLY-OPEN (set to `current-prefix-arg' if running
interactively): if non-nil, only change tags of *open* messages.
Also correct original docstring: 's/thread/buffer/'.
(notmuch-show-archive-thread):
Update wrt changes to `notmuch-show-tag-all'.
* test/emacs
- Subtest "notmuch-show: change tags of open messages in current buffer"
is no longer broken...
---
emacs/notmuch-show.el | 33 ++++++++++++++++++++++++---------
test/emacs | 1 -
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 05606fc..4bd1a7c 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -1339,14 +1339,18 @@ (defun notmuch-show-get-message-id ()
"Return the message id of the current message."
(concat "id:\"" (notmuch-show-get-prop :id) "\""))
-(defun notmuch-show-get-messages-ids (&optional separator)
+(defun notmuch-show-get-messages-ids (&optional separator predicate)
"Return a list of Message-Id's of all messages in the current buffer.
If provided with optional argument SEPARATOR, return a string
-instead, consisting of all Message-Id's separated by SEPARATOR."
+instead, consisting of all Message-Id's separated by SEPARATOR.
+
+If provided with optional argument PREDICATE, only return
+Message-Id's of messages for which PREDICATE returns non-nil."
(let ((message-ids))
(notmuch-show-mapc
- (lambda () (push (notmuch-show-get-message-id) message-ids)))
+ (lambda () (push (notmuch-show-get-message-id) message-ids))
+ predicate)
(if separator
(mapconcat 'identity message-ids separator)
message-ids)))
@@ -1633,18 +1637,29 @@ (defun notmuch-show-tag (&optional initial-input)
initial-input (notmuch-show-get-message-id))))
(apply 'notmuch-show-tag-message tag-changes)))
-(defun notmuch-show-tag-all (&rest tag-changes)
- "Change tags for all messages in the current thread.
+(defun notmuch-show-tag-all (only-open &rest tag-changes)
+ "Change tags of all messages in the current buffer.
+
+If ONLY-OPEN is non-nil, only change tags of *open* messages in
+the current buffer.
TAG-CHANGES is a list of tag operations for `notmuch-tag'."
- (interactive (notmuch-read-tag-changes nil notmuch-show-thread-id))
- (apply 'notmuch-tag (notmuch-show-get-messages-ids " or ") tag-changes)
+ (interactive (cons current-prefix-arg
+ (notmuch-read-tag-changes nil notmuch-show-thread-id)))
+ (apply 'notmuch-tag
+ (notmuch-show-get-messages-ids
+ " or "
+ `(lambda ()
+ ,(if only-open '(notmuch-show-message-visible-p) t)))
+ tag-changes)
(notmuch-show-mapc
(lambda ()
(let* ((current-tags (notmuch-show-get-tags))
(new-tags (notmuch-update-tags current-tags tag-changes)))
(unless (equal current-tags new-tags)
- (notmuch-show-set-tags new-tags))))))
+ (notmuch-show-set-tags new-tags))))
+ `(lambda ()
+ ,(if only-open '(notmuch-show-message-visible-p) t))))
(defun notmuch-show-add-tag ()
"Same as `notmuch-show-tag' but sets initial input to '+'."
@@ -1724,7 +1739,7 @@ (defun notmuch-show-archive-thread (&optional unarchive)
buffer."
(interactive "P")
(let ((op (if unarchive "+" "-")))
- (notmuch-show-tag-all (concat op "inbox"))))
+ (notmuch-show-tag-all nil (concat op "inbox"))))
(defun notmuch-show-archive-thread-then-next ()
"Archive each message in thread, then show next thread from search."
diff --git a/test/emacs b/test/emacs
index 9088ced..e6b0503 100755
--- a/test/emacs
+++ b/test/emacs
@@ -152,7 +152,6 @@ notmuch tag +"$del_tag" -"$add_tag" -- "$query" # revert tag changes
test_expect_equal "$count_changed" "$count_total" # assert that CHANGED == TOTAL
test_begin_subtest "notmuch-show: change tags of open messages in current buffer"
-test_subtest_known_broken
query="$os_x_darwin_thread"
filter="from:Jiang"
add_tag="notmuch-show-tag-all"
--
1.7.8.1
next prev parent reply other threads:[~2012-02-24 22:33 UTC|newest]
Thread overview: 136+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-28 4:41 [PATCH 1/6] emacs: move tag format validation to `notmuch-tag' function Dmitry Kurochkin
2012-01-28 4:41 ` [PATCH 2/6] emacs: remove text properties from `notmuch-search-get-tags' result Dmitry Kurochkin
2012-01-28 4:41 ` [PATCH 3/6] emacs: make "+" and "-" tagging operations more robust Dmitry Kurochkin
2012-01-28 16:49 ` Jeremy Nickurak
2012-01-28 17:17 ` Dmitry Kurochkin
2012-01-29 22:57 ` Austin Clements
2012-01-30 1:32 ` Dmitry Kurochkin
2012-01-28 4:41 ` [PATCH 4/6] test: fix emacs tests after tagging operations changes Dmitry Kurochkin
2012-01-29 22:58 ` Austin Clements
2012-01-29 23:09 ` Dmitry Kurochkin
2012-01-28 4:41 ` [PATCH 5/6] emacs: add "*" binding for notmuch-show view Dmitry Kurochkin
2012-01-28 4:41 ` [PATCH 6/6] emacs: separate history for operations which accept single and multiple tags Dmitry Kurochkin
2012-01-29 23:02 ` Austin Clements
2012-01-30 1:42 ` Dmitry Kurochkin
2012-01-28 5:05 ` [PATCH 7/6] emacs: relax tag syntax check in `notmuch-tag' function Dmitry Kurochkin
2012-01-28 8:56 ` Jani Nikula
2012-01-28 9:49 ` Dmitry Kurochkin
2012-02-19 20:53 ` Pieter Praet
2012-01-28 5:59 ` [PATCH 8/6] emacs: use message ids instead of thread id in `notmuch-show-operate-all' Dmitry Kurochkin
2012-01-28 5:59 ` [PATCH 9/6] emacs: code cleanup in `notmuch-show-operate-all', no functional changes Dmitry Kurochkin
2012-01-28 9:09 ` [PATCH 8/6] emacs: use message ids instead of thread id in `notmuch-show-operate-all' Jani Nikula
2012-01-28 9:42 ` Dmitry Kurochkin
2012-01-29 23:11 ` Austin Clements
2012-01-30 1:50 ` Dmitry Kurochkin
2012-01-29 21:34 ` [PATCH 1/6] emacs: move tag format validation to `notmuch-tag' function Austin Clements
2012-01-29 22:54 ` Dmitry Kurochkin
2012-01-29 23:16 ` Austin Clements
2012-01-29 23:32 ` Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 00/13] emacs: more robust and consistent tagging operations Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 01/13] emacs: move tag format validation to `notmuch-tag' function Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 02/13] emacs: remove text properties from `notmuch-search-get-tags' result Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 03/13] emacs: make "+" and "-" tagging operations in notmuch-search more robust Dmitry Kurochkin
2012-01-30 4:48 ` Austin Clements
2012-01-30 5:10 ` Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 04/13] emacs: make "+" and "-" tagging operations in notmuch-show " Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 05/13] test: fix emacs tests after tagging operations changes Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 06/13] emacs: rename `notmuch-search-operate-all' to `notmuch-search-tag-all' Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 07/13] emacs: add "*" binding for notmuch-show view Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 08/13] emacs: separate history for operations which accept single and multiple tags Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 09/13] emacs: relax tag syntax check in `notmuch-tag' function Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 10/13] emacs: use message ids instead of thread id in `notmuch-show-operate-all' Dmitry Kurochkin
2012-01-30 4:57 ` Austin Clements
2012-01-30 5:21 ` Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 11/13] emacs: code cleanup in `notmuch-show-operate-all', no functional changes Dmitry Kurochkin
2012-01-30 4:59 ` Austin Clements
2012-01-30 5:25 ` Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 12/13] emacs: accept empty tag list in `notmuch-tag' Dmitry Kurochkin
2012-01-30 2:26 ` [PATCH v2 13/13] NEWS: document Emacs UI tagging operations changes Dmitry Kurochkin
2012-01-30 5:04 ` Austin Clements
2012-01-30 5:16 ` Dmitry Kurochkin
2012-01-30 5:33 ` emacs: more flexible and consistent tagging operations Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 01/12] emacs: move tag format validation to `notmuch-tag' function Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 02/12] emacs: remove text properties from `notmuch-search-get-tags' result Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 03/12] emacs: make "+" and "-" tagging operations in notmuch-search more flexible Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 04/12] emacs: make "+" and "-" tagging operations in notmuch-show " Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 05/12] test: fix emacs tests after tagging operations changes Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 06/12] emacs: rename `notmuch-search-operate-all' to `notmuch-search-tag-all' Dmitry Kurochkin
2012-01-30 5:33 ` [PATCH v3 07/12] emacs: add "*" binding for notmuch-show view Dmitry Kurochkin
2012-01-30 5:34 ` [PATCH v3 08/12] emacs: separate history for operations which accept single and multiple tags Dmitry Kurochkin
2012-01-30 5:34 ` [PATCH v3 09/12] emacs: relax tag syntax check in `notmuch-tag' function Dmitry Kurochkin
2012-01-30 5:34 ` [PATCH v3 10/12] emacs: accept empty tag list in `notmuch-tag' Dmitry Kurochkin
2012-01-30 5:34 ` [PATCH v3 11/12] emacs: s/tags/tag-changes/ for arguments of tagging functions Dmitry Kurochkin
2012-01-30 5:34 ` [PATCH v3 12/12] NEWS: document Emacs UI tagging operations changes Dmitry Kurochkin
2012-01-30 15:20 ` emacs: more flexible and consistent tagging operations Austin Clements
2012-01-30 15:55 ` Tomi Ollila
2012-01-31 4:54 ` [PATCH v4 00/12] " Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 01/12] emacs: move tag format validation to `notmuch-tag' function Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 02/12] emacs: remove text properties from `notmuch-search-get-tags' result Dmitry Kurochkin
2012-02-04 1:49 ` David Bremner
2012-01-31 4:54 ` [PATCH v4 03/12] emacs: make "+" and "-" tagging operations in notmuch-search more flexible Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 04/12] emacs: make "+" and "-" tagging operations in notmuch-show " Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 05/12] test: fix emacs tests after tagging operations changes Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 06/12] emacs: rename `notmuch-search-operate-all' to `notmuch-search-tag-all' Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 07/12] emacs: add "*" binding for notmuch-show view Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 08/12] emacs: separate history for operations which accept single and multiple tags Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 09/12] emacs: relax tag syntax check in `notmuch-tag' function Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 10/12] emacs: accept empty tag list in `notmuch-tag' Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 11/12] emacs: s/tags/tag-changes/ for arguments of tagging functions Dmitry Kurochkin
2012-01-31 4:54 ` [PATCH v4 12/12] NEWS: document Emacs UI tagging operations changes Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 00/12] emacs: more flexible and consistent tagging operations Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 01/12] emacs: move tag format validation to `notmuch-tag' function Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 02/12] emacs: remove text properties from `notmuch-search-get-tags' result Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 03/12] emacs: make "+" and "-" tagging operations in notmuch-search more flexible Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 04/12] emacs: make "+" and "-" tagging operations in notmuch-show " Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 05/12] test: fix emacs tests after tagging operations changes Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 06/12] emacs: rename `notmuch-search-operate-all' to `notmuch-search-tag-all' Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 07/12] emacs: add "*" binding for notmuch-show view Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 08/12] emacs: separate history for operations which accept single and multiple tags Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 09/12] emacs: relax tag syntax check in `notmuch-tag' function Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 10/12] emacs: accept empty tag list in `notmuch-tag' Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 11/12] emacs: s/tags/tag-changes/ for arguments of tagging functions Dmitry Kurochkin
2012-02-05 7:13 ` [PATCH v5 12/12] NEWS: document Emacs UI tagging operations changes Dmitry Kurochkin
2012-02-08 15:58 ` [PATCH v5 00/12] emacs: more flexible and consistent tagging operations David Bremner
2012-02-23 23:07 ` Pieter Praet
2012-02-23 23:09 ` [PATCH 1/6] test: emacs: new tests "notmuch-show: {add, remove} multiple tags {to, from} single message" Pieter Praet
2012-02-24 10:35 ` Dmitry Kurochkin
2012-02-24 22:33 ` Pieter Praet
2012-02-23 23:09 ` [PATCH 2/6] test: emacs: new test "notmuch-show: change tags of all messages in current buffer" Pieter Praet
2012-02-23 23:09 ` [PATCH 3/6] test: emacs: `notmuch-show-tag-all' sans prefix arg should only tag open messages Pieter Praet
2012-02-23 23:09 ` [PATCH 4/6] emacs: add predicate arg to `notmuch-show-mapc' Pieter Praet
2012-02-24 10:39 ` Dmitry Kurochkin
2012-02-24 22:35 ` Pieter Praet
2012-02-23 23:09 ` [PATCH 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}' Pieter Praet
2012-02-24 10:42 ` Dmitry Kurochkin
2012-02-24 22:36 ` Pieter Praet
2012-02-23 23:09 ` [PATCH 6/6] emacs: `notmuch-show-tag-all' sans prefix arg only tags open messages Pieter Praet
2012-02-24 10:47 ` Dmitry Kurochkin
2012-02-24 22:37 ` Pieter Praet
2012-02-24 10:30 ` [PATCH v5 00/12] emacs: more flexible and consistent tagging operations Dmitry Kurochkin
2012-02-24 10:33 ` Dmitry Kurochkin
2012-02-24 17:39 ` Jani Nikula
2012-02-24 22:40 ` Pieter Praet
2012-02-24 22:38 ` Pieter Praet
2012-02-25 0:05 ` Pieter Praet
2012-02-25 16:20 ` David Bremner
2012-02-27 14:50 ` Tomi Ollila
2012-02-28 19:34 ` Pieter Praet
2012-02-24 22:30 ` [PATCH v2 0/6] `notmuch-show-tag-all' with prefix arg only tags open messages Pieter Praet
2012-02-24 22:30 ` [PATCH v2 1/6] test: emacs: new tests "notmuch-show: {add, remove} multiple tags {to, from} single message" Pieter Praet
2012-03-21 1:06 ` Mark Walters
2012-12-10 2:48 ` David Bremner
2012-12-11 14:04 ` David Bremner
2012-02-24 22:30 ` [PATCH v2 2/6] test: emacs: new test "notmuch-show: change tags of all messages in current buffer" Pieter Praet
2012-10-16 2:15 ` Ethan Glasser-Camp
2012-02-24 22:30 ` [PATCH v2 3/6] test: emacs: `notmuch-show-tag-all' with prefix arg should only tag open messages Pieter Praet
2013-02-19 0:27 ` David Bremner
2012-02-24 22:30 ` [PATCH v2 4/6] emacs: add optional predicate arg to `notmuch-show-mapc' Pieter Praet
2012-03-21 1:33 ` Mark Walters
2012-10-16 2:59 ` Ethan Glasser-Camp
2012-10-16 2:18 ` Ethan Glasser-Camp
2012-02-24 22:30 ` [PATCH v2 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}' Pieter Praet
2012-03-21 1:36 ` Mark Walters
2012-10-16 3:12 ` Ethan Glasser-Camp
2012-03-21 1:40 ` Mark Walters
2012-02-24 22:30 ` Pieter Praet [this message]
2012-10-16 3:39 ` [PATCH v2 6/6] emacs: `notmuch-show-tag-all' with prefix arg only tags open messages Ethan Glasser-Camp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1330122640-18895-7-git-send-email-pieter@praet.org \
--to=pieter@praet.org \
--cc=david@tethera.net \
--cc=dmitry.kurochkin@gmail.com \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).