[PATCH v10 1/2] emacs: User-defined sections in notmuch-hello
On Thu, 01 Mar 2012 08:36:33 -0400, David Bremner wrote: > > Pushed, finally. Thanks for both of your hard work on this. > 625 lines changed (425 added, 200 removed), in a *single* commit ? It's a useful bit of functionality which definitely deserves to be included, and I do recognize and appreciate all the hard work that went into it, but... am I the only one who was a bit surprised to see this patch being applied [1] as-is? > d > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter [1] commit 3557acab
plans for 0.12
On Thu, 01 Mar 2012 18:43:50 -0400, David Bremner wrote: > On Thu, 01 Mar 2012 22:21:29 +0100, Pieter Praet wrote: > > > > Some of the features added/refactored post-0.11.1 don't have any > > test coverage yet. Should they, before wrapping up 0.12 ? > > (not a rhetorical question, I'm genuinely asking for opinions) > > > > Hi Pieter; > > My initial answer is probably not. I see the tests as mainly useful > during development, for detecting regressions. I think most people doing > development will be working from git, rather than the distribution > tarballs we ship. > > On the other hand, adding tests is also not that risky, so if the > concensus is strongly in favour of integrating them pre 0.12, and > somebody wants to review them all, then I'm willing to consider it. > Fair enough. Just in case anyone considers them beneficial and/or is willing to review (whether it be for inclusion in 0.12 or later), I've gotten rid of the merge conflict by moving the last test to a new file called `emacs-search' [1] (also see [2]). Other than that, it remains unchanged. > d Peace -- Pieter [1] id:"1331149792-17192-1-git-send-email-pieter at praet.org" [2] id:"87aa47euao.fsf at praet.org"
[PATCH v4] test: emacs: new test "notmuch-search: change tags of all matching messages"
* test/emacs-search: - New subtest "notmuch-search: change tags of all matching messages": `notmuch-search-tag-all' (bound to "*") adds and removes tags to/from all messages which match the query used to populate the current search buffer. --- Moved to a separate file to prevent a merge conflict when applied in conjunction with the patches listed @ id:"877gz4dnl2.fsf at praet.org". test/emacs-search | 48 test/notmuch-test |1 + 2 files changed, 49 insertions(+), 0 deletions(-) create mode 100755 test/emacs-search diff --git a/test/emacs-search b/test/emacs-search new file mode 100755 index 000..1cd8a89 --- /dev/null +++ b/test/emacs-search @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +test_description="Emacs notmuch-search-mode" +. test-lib.sh + +EXPECTED=$TEST_DIRECTORY/emacs-show.expected-output + +add_email_corpus + + +test_begin_subtest "notmuch-search: change tags of all matching messages" +old_tag="inbox" +new_tag="xobni" +filter="AND from:cworth" + +# Get initial tag counts and prevent false positives/negatives +old_tag_count_1=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_1=$(notmuch count tag:"${new_tag}" "${filter}") +test "${old_tag_count_1}" = "0" && old_tag_count_1="Need >0 matches!" +test "${new_tag_count_1}" = "0" || new_tag_count_1="Need 0 matches!" + +# Change tags of all matching messages and get tag counts +test_emacs "(notmuch-search \"tag:${old_tag} ${filter}\") + (notmuch-test-wait) + (notmuch-search-tag-all \"-${old_tag}\" \"+${new_tag}\")" +old_tag_count_2=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_2=$(notmuch count tag:"${new_tag}" "${filter}") + +# Revert tag changes and get tag counts +test_emacs "(notmuch-search \"tag:${new_tag} ${filter}\") + (notmuch-test-wait) + (notmuch-search-tag-all \"+${old_tag}\" \"-${new_tag}\")" +old_tag_count_3=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_3=$(notmuch count tag:"${new_tag}" "${filter}") + +# ... and verify the results +output=" +before: old:${old_tag_count_1} new:${new_tag_count_1} +after:old:${old_tag_count_2} new:${new_tag_count_2} +restored: old:${old_tag_count_3} new:${new_tag_count_3}" +expected=" +before: old:${old_tag_count_1} new:0 +after:old:0 new:${old_tag_count_1} +restored: old:${old_tag_count_1} new:0" +test_expect_equal "$output" "$expected" + + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index e14d34e..81d0d7f 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -54,6 +54,7 @@ TESTS=" argument-parsing emacs-test-functions emacs-address-cleaning + emacs-search emacs-show " TESTS=${NOTMUCH_TESTS:=$TESTS} -- 1.7.8.1
[PATCH v4] test: emacs: new test notmuch-search: change tags of all matching messages
* test/emacs-search: - New subtest notmuch-search: change tags of all matching messages: `notmuch-search-tag-all' (bound to *) adds and removes tags to/from all messages which match the query used to populate the current search buffer. --- Moved to a separate file to prevent a merge conflict when applied in conjunction with the patches listed @ id:877gz4dnl2@praet.org. test/emacs-search | 48 test/notmuch-test |1 + 2 files changed, 49 insertions(+), 0 deletions(-) create mode 100755 test/emacs-search diff --git a/test/emacs-search b/test/emacs-search new file mode 100755 index 000..1cd8a89 --- /dev/null +++ b/test/emacs-search @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +test_description=Emacs notmuch-search-mode +. test-lib.sh + +EXPECTED=$TEST_DIRECTORY/emacs-show.expected-output + +add_email_corpus + + +test_begin_subtest notmuch-search: change tags of all matching messages +old_tag=inbox +new_tag=xobni +filter=AND from:cworth + +# Get initial tag counts and prevent false positives/negatives +old_tag_count_1=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_1=$(notmuch count tag:${new_tag} ${filter}) +test ${old_tag_count_1} = 0 old_tag_count_1=Need 0 matches! +test ${new_tag_count_1} = 0 || new_tag_count_1=Need 0 matches! + +# Change tags of all matching messages and get tag counts +test_emacs (notmuch-search \tag:${old_tag} ${filter}\) + (notmuch-test-wait) + (notmuch-search-tag-all \-${old_tag}\ \+${new_tag}\) +old_tag_count_2=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_2=$(notmuch count tag:${new_tag} ${filter}) + +# Revert tag changes and get tag counts +test_emacs (notmuch-search \tag:${new_tag} ${filter}\) + (notmuch-test-wait) + (notmuch-search-tag-all \+${old_tag}\ \-${new_tag}\) +old_tag_count_3=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_3=$(notmuch count tag:${new_tag} ${filter}) + +# ... and verify the results +output= +before: old:${old_tag_count_1} new:${new_tag_count_1} +after:old:${old_tag_count_2} new:${new_tag_count_2} +restored: old:${old_tag_count_3} new:${new_tag_count_3} +expected= +before: old:${old_tag_count_1} new:0 +after:old:0 new:${old_tag_count_1} +restored: old:${old_tag_count_1} new:0 +test_expect_equal $output $expected + + +test_done diff --git a/test/notmuch-test b/test/notmuch-test index e14d34e..81d0d7f 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -54,6 +54,7 @@ TESTS= argument-parsing emacs-test-functions emacs-address-cleaning + emacs-search emacs-show TESTS=${NOTMUCH_TESTS:=$TESTS} -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] NEWS: add entry for `notmuch-show-stash-mlarchive-link{, -and-go}'
--- NEWS |6 ++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/NEWS b/NEWS index 8fb2f24..a739914 100644 --- a/NEWS +++ b/NEWS @@ -80,6 +80,12 @@ Attachment buttons can be used to view or save attachments. button 1 saves the attachment but this is customisable (option Notmuch Show Part Button Default Action). +New functions + + `notmuch-show-stash-mlarchive-link{,-and-go}' allow stashing and + optionally visiting a URI to the current message at one of a number + of Mailing List Archives. + Library changes --- -- 1.7.8.1
plans for 0.12
On Sat, 25 Feb 2012 10:27:02 -0400, David Bremner wrote: > > I would like to start a freeze (i.e. merge master to release) for 0.12 > within the next week, say March 1 for an easy to remember date. > > If you have suggestions for things that "should really go in", feel free > to follow up. The main point here is bug fixes, or features which are > there in a kindof half baked way. > Some of the features added/refactored post-0.11.1 don't have any test coverage yet. Should they, before wrapping up 0.12 ? (not a rhetorical question, I'm genuinely asking for opinions) Anyways, I've taken the liberty of tagging the following patches '0.12': - test: emacs: toggle processing of cryptographic MIME parts in `notmuch-show' - id:"1329684990-12504-2-git-send-email-pieter at praet.org" - test: emacs: toggle eliding of non-matching messages in `notmuch-show' - id:"1329684990-12504-3-git-send-email-pieter at praet.org" - test: emacs: toggle thread content indentation in `notmuch-show' - id:"1329684990-12504-4-git-send-email-pieter at praet.org" - test: emacs: new tests "notmuch-show: {add,remove} multiple tags {to,from} single message" - id:"1330122640-18895-2-git-send-email-pieter at praet.org" - test: emacs: new test "notmuch-show: change tags of all messages in current buffer" - id:"1330122640-18895-3-git-send-email-pieter at praet.org" - test: emacs: new test "notmuch-search: change tags of all matching messages" - id:"1329936867-923-1-git-send-email-pieter at praet.org" If applied in that order, the last one needs to be applied with the `--3way' option, which results in an easily resolved merge conflict, but if needed, I'll rebase it. > Bug fix wise, I know about > > id:"1330068983-4483-1-git-send-email-sojkam1 at fel.cvut.cz" > > This could use some review. > > It has also been some chatter that either (the next iteration of) > >id:"1329296619-7463-1-git-send-email-markwalters1009 at gmail.com" > > Should go in, or we should revert amdragon's exclude stuff. > > I don't have strong feelings either way, except it is somewhat late in > the day for a large(ish) and complicated series. > > There are several other patch series that look ready from a review point > of view, but I'd rather have them pushed earlier in the release cycle > (or at least I don't see a hurry). For example > >id:"1329490088-8323-2-git-send-email-dmitry.kurochkin at gmail.com" >id:"1329697590-7404-1-git-send-email-amdragon at mit.edu" > > My (tentative) plan is to push those once I have branched for release. > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter
[PATCH] emacs: Mention race condition safety in user visible documentation
On Wed, 29 Feb 2012 22:49:46 -0400, David Bremner wrote: > On Tue, 21 Feb 2012 10:15:08 +0100, Michal Sojka > wrote: > > -- >8 -- > > Subject: [PATCH] emacs: Clarify description of thread manipulating functions > > > > It is not clear whether the term "thread" refers to the thread in the > > database or to the thread currently shown in a buffer. Those two > > meanings may refer to different sets of messages, e.g. when a new email > > is added to the database while the buffer shows the state before the new > > email arrived. > > (will be) pushed. > > For future reference, it's slightly inconvenient for me to use "git am > -c". Not a big deal, but a sequence of those would make me cry... > Something like this might help save you some time: (assuming you'd rather not leave Emacs to apply patches) #+begin_src emacs-lisp (defvar praet/projects '(("notmuch at notmuchmail.org" . "~/src/dev/notmuch/") ("foo at bar.org" . "~/src/dev/foobar/"))) (defun praet/notmuch-patch-apply ( all-open) "Apply a patch from `notmuch-show-mode' using git-am(1). If ALL-OPEN is non-nil, (try to) apply all open messages." (interactive "P") (let* ((msg (notmuch-show-get-message-id t)) (rcpts (concat (notmuch-show-get-to) (notmuch-show-get-cc))) (projs (loop for project in praet/projects if (string-match (car project) rcpts) collect (cdr project))) (proj (if (> (length projs) 1) (ido-completing-read "Apply in: " projs) (car projs))) (cmd "git am --abort ; git am") (optargs '("--signoff" "--3way" "--scissors")) (args (read-string "Args: " nil '(optargs . 0 (message "Applying in '%s': '%s' (using '%s %s')" proj msg cmd args) (notmuch-show-pipe-message all-open (concat "(cd " proj " && (" cmd " " args ")" ")" (define-key notmuch-show-mode-map (kbd "C-c p a") 'praet/notmuch-patch-apply) #+end_src > d > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter
[PATCH v6 1/3] emacs: `notmuch-show-get-message-id': optionally return Message-Id sans prefix
On Wed, 29 Feb 2012 08:19:34 -0400, David Bremner wrote: > On Tue, 28 Feb 2012 19:40:04 +0100, Pieter Praet wrote: > > > > Though I couldn't help but notice (it's a curse...) that patch #3 > > seems to have gained an extra space in its commit message subject: > > > > Original (id:"1329684627-10708-4-git-send-email-pieter at praet.org"): > > emacs: add `notmuch-show-stash-mlarchive-link{,-and-go}' > > ^ > > I don't have any applypatch-msg hook. I am using > "notmuch show --format=raw $messageid | git am -" to > apply the patch. > > I looked at the file on disk, and something is wrapping the subject > there. Perhaps somebody's unwrapping code is buggy? I'm not sure what's > at fault here; [...] TL;DR: Doesn't seem like there's much we can do about it... According to RFC 2822 section 2.2.3 [1], header fields should be folded by inserting a CRLF right before the last whitespace char before the line exceeds 78 characters, and when a field contains comma-separated values (which is somewhat applicable in this case), it should be folded by inserting a CRLF right after a comma. Now, the issue is that unfolding is accomplished by simply removing any CRLF that is immediately followed by a whitespace char: If the subject headers of those patches were folded by simply inserting a CRLF, they couldn't possibly be unfolded again as there wouldn't be a whitespace char right after the CRLF, so Mailman seems to have helpfully inserted a tab... Here's one of those patches at a number of archives: - http://notmuchmail.org/pipermail/notmuch/2012/009575.html - http://mid.gmane.org/1329684627-10708-4-git-send-email-pieter at praet.org - http://mail-archive.com/search?l=mid=1329684627-10708-4-git-send-email-pieter at praet.org As you can see (in the source of those pages), both Pipermail and Gmane unfold the subject header by simply removing the line break, and at The Mail Archive, the tab is also replaced by a space. I assume the latter also happens in gmime ? So, I guess I'll just have to learn to live with it... :) > [...] maybe you could experiment with applying the the patches > from the list and let me know if e.g. going from files is better than > using "notmuch show --format=raw". > Based on my (admittedly very superficial) analysis of the problem, that won't do us any good wrt this issue, unfortunately... But it *would* buy us a (slight) performance increase, so if/when my patch to `notmuch-show-mapc' [2] goes in, we might want to consider making `notmuch-show-pipe-message' use `notmuch-show-get-filename' instead of `notmuch-show-get-message-{id,ids-for-open-messages}'. > d > > Peace -- Pieter [1] http://tools.ietf.org/html/rfc2822.html#section-2.2.3 [2] id:"1330122640-18895-5-git-send-email-pieter at praet.org"
Re: [PATCH v6 1/3] emacs: `notmuch-show-get-message-id': optionally return Message-Id sans prefix
On Wed, 29 Feb 2012 08:19:34 -0400, David Bremner da...@tethera.net wrote: On Tue, 28 Feb 2012 19:40:04 +0100, Pieter Praet pie...@praet.org wrote: Though I couldn't help but notice (it's a curse...) that patch #3 seems to have gained an extra space in its commit message subject: Original (id:1329684627-10708-4-git-send-email-pie...@praet.org): emacs: add `notmuch-show-stash-mlarchive-link{,-and-go}' ^ I don't have any applypatch-msg hook. I am using notmuch show --format=raw $messageid | git am - to apply the patch. I looked at the file on disk, and something is wrapping the subject there. Perhaps somebody's unwrapping code is buggy? I'm not sure what's at fault here; [...] TL;DR: Doesn't seem like there's much we can do about it... According to RFC 2822 section 2.2.3 [1], header fields should be folded by inserting a CRLF right before the last whitespace char before the line exceeds 78 characters, and when a field contains comma-separated values (which is somewhat applicable in this case), it should be folded by inserting a CRLF right after a comma. Now, the issue is that unfolding is accomplished by simply removing any CRLF that is immediately followed by a whitespace char: If the subject headers of those patches were folded by simply inserting a CRLF, they couldn't possibly be unfolded again as there wouldn't be a whitespace char right after the CRLF, so Mailman seems to have helpfully inserted a tab... Here's one of those patches at a number of archives: - http://notmuchmail.org/pipermail/notmuch/2012/009575.html - http://mid.gmane.org/1329684627-10708-4-git-send-email-pie...@praet.org - http://mail-archive.com/search?l=midq=1329684627-10708-4-git-send-email-pie...@praet.org As you can see (in the source of those pages), both Pipermail and Gmane unfold the subject header by simply removing the line break, and at The Mail Archive, the tab is also replaced by a space. I assume the latter also happens in gmime ? So, I guess I'll just have to learn to live with it... :) [...] maybe you could experiment with applying the the patches from the list and let me know if e.g. going from files is better than using notmuch show --format=raw. Based on my (admittedly very superficial) analysis of the problem, that won't do us any good wrt this issue, unfortunately... But it *would* buy us a (slight) performance increase, so if/when my patch to `notmuch-show-mapc' [2] goes in, we might want to consider making `notmuch-show-pipe-message' use `notmuch-show-get-filename' instead of `notmuch-show-get-message-{id,ids-for-open-messages}'. d Peace -- Pieter [1] http://tools.ietf.org/html/rfc2822.html#section-2.2.3 [2] id:1330122640-18895-5-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] emacs: Mention race condition safety in user visible documentation
On Wed, 29 Feb 2012 22:49:46 -0400, David Bremner da...@tethera.net wrote: On Tue, 21 Feb 2012 10:15:08 +0100, Michal Sojka sojk...@fel.cvut.cz wrote: -- 8 -- Subject: [PATCH] emacs: Clarify description of thread manipulating functions It is not clear whether the term thread refers to the thread in the database or to the thread currently shown in a buffer. Those two meanings may refer to different sets of messages, e.g. when a new email is added to the database while the buffer shows the state before the new email arrived. (will be) pushed. For future reference, it's slightly inconvenient for me to use git am -c. Not a big deal, but a sequence of those would make me cry... Something like this might help save you some time: (assuming you'd rather not leave Emacs to apply patches) #+begin_src emacs-lisp (defvar praet/projects '((notmuch@notmuchmail.org . ~/src/dev/notmuch/) (f...@bar.org . ~/src/dev/foobar/))) (defun praet/notmuch-patch-apply (optional all-open) Apply a patch from `notmuch-show-mode' using git-am(1). If ALL-OPEN is non-nil, (try to) apply all open messages. (interactive P) (let* ((msg (notmuch-show-get-message-id t)) (rcpts (concat (notmuch-show-get-to) (notmuch-show-get-cc))) (projs (loop for project in praet/projects if (string-match (car project) rcpts) collect (cdr project))) (proj (if ( (length projs) 1) (ido-completing-read Apply in: projs) (car projs))) (cmd git am --abort ; git am) (optargs '(--signoff --3way --scissors)) (args (read-string Args: nil '(optargs . 0 (message Applying in '%s': '%s' (using '%s %s') proj msg cmd args) (notmuch-show-pipe-message all-open (concat (cd proj ( cmd args ) ) (define-key notmuch-show-mode-map (kbd C-c p a) 'praet/notmuch-patch-apply) #+end_src d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: plans for 0.12
On Sat, 25 Feb 2012 10:27:02 -0400, David Bremner da...@tethera.net wrote: I would like to start a freeze (i.e. merge master to release) for 0.12 within the next week, say March 1 for an easy to remember date. If you have suggestions for things that should really go in, feel free to follow up. The main point here is bug fixes, or features which are there in a kindof half baked way. Some of the features added/refactored post-0.11.1 don't have any test coverage yet. Should they, before wrapping up 0.12 ? (not a rhetorical question, I'm genuinely asking for opinions) Anyways, I've taken the liberty of tagging the following patches '0.12': - test: emacs: toggle processing of cryptographic MIME parts in `notmuch-show' - id:1329684990-12504-2-git-send-email-pie...@praet.org - test: emacs: toggle eliding of non-matching messages in `notmuch-show' - id:1329684990-12504-3-git-send-email-pie...@praet.org - test: emacs: toggle thread content indentation in `notmuch-show' - id:1329684990-12504-4-git-send-email-pie...@praet.org - test: emacs: new tests notmuch-show: {add,remove} multiple tags {to,from} single message - id:1330122640-18895-2-git-send-email-pie...@praet.org - test: emacs: new test notmuch-show: change tags of all messages in current buffer - id:1330122640-18895-3-git-send-email-pie...@praet.org - test: emacs: new test notmuch-search: change tags of all matching messages - id:1329936867-923-1-git-send-email-pie...@praet.org If applied in that order, the last one needs to be applied with the `--3way' option, which results in an easily resolved merge conflict, but if needed, I'll rebase it. Bug fix wise, I know about id:1330068983-4483-1-git-send-email-sojk...@fel.cvut.cz This could use some review. It has also been some chatter that either (the next iteration of) id:1329296619-7463-1-git-send-email-markwalters1...@gmail.com Should go in, or we should revert amdragon's exclude stuff. I don't have strong feelings either way, except it is somewhat late in the day for a large(ish) and complicated series. There are several other patch series that look ready from a review point of view, but I'd rather have them pushed earlier in the release cycle (or at least I don't see a hurry). For example id:1329490088-8323-2-git-send-email-dmitry.kuroch...@gmail.com id:1329697590-7404-1-git-send-email-amdra...@mit.edu My (tentative) plan is to push those once I have branched for release. ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] NEWS: add entry for `notmuch-show-stash-mlarchive-link{, -and-go}'
--- NEWS |6 ++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/NEWS b/NEWS index 8fb2f24..a739914 100644 --- a/NEWS +++ b/NEWS @@ -80,6 +80,12 @@ Attachment buttons can be used to view or save attachments. button 1 saves the attachment but this is customisable (option Notmuch Show Part Button Default Action). +New functions + + `notmuch-show-stash-mlarchive-link{,-and-go}' allow stashing and + optionally visiting a URI to the current message at one of a number + of Mailing List Archives. + Library changes --- -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] doc: minor corrections in notmuch-config.1
On Tue, 28 Feb 2012 21:33:24 +0200, Jani Nikula wrote: > On Tue, 28 Feb 2012 19:42:03 +0100, Pieter Praet wrote: > > * man/man1/notmuch-config.1 > > > > - SYNOPSIS: > > Remove spaces in 'section.item' arg, and indicate that > > `notmuch config set' accepts multiple value args. > > > > - DESCRIPTION: > > Correct config option to exclude tags from search results. > > ('search.exclude_tags' instead of 'search.exclude') > > Oops, good catch. And thanks for showing that there was at least someone > who read the patch/man. :) > Hehe :) Rest assured: lack of replies != lack of readership/appreciation/scrutiny. Also, I think I'm not the only one having a hard time shaking off the candystore effect (so much good stuff, so little time to give it all a try, the Paradox of Choice) whenever checking out the Notmuch ML. Combine that with the realities of life and the need to scratch one's own itches, and the end result is an intermittently unresponsive list. Still the best damn list ever though... :) > Jani. > > [...] Peace -- Pieter
[PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Mon, 27 Feb 2012 16:50:53 +0200, Tomi Ollila wrote: > On Sat, 25 Feb 2012 12:20:31 -0400, David Bremner > wrote: > > On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet > > wrote: > > > On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner > > > wrote: > > > > On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin > > > at gmail.com> wrote: > > > > > > How about if '*' applies to all messages (as it currently does), > > > but 'C-u *' only to open messages? That would make more sense IMHO. > > > > > > But, conforming to your original request, I've implemented the inverse. > > > > > > > Thanks for implementing that. I could live with either way. Do other > > people have opinions on this? My reasoning is if you descend into a > > thread from some search page, it seems likely that you want to operate > > on the messages matching the search. > > I've pretty soon lost the original open/close status as I often navigate > through messages by opening/closing messages, so for me not operating > on all messages in thread is magic behaviour. In case I'd use C-u * > I first have to check through the full thread what are the actual > messages currently open (lots of screen scrolling :( ) > I share your sentiment. Also, the function is called `notmuch-show-tag-all', so having it operate only on open messages would be counterintuitive IMO. In other words, I think of the prefix arg as being a modifier for the meaning of 'all'. But either way, it's fairly trivial to invert its behavior [1]. > So, I prefer '*' operating on all messages in a thread and C-u '*' > for all open messages in a thread. > > > > > d > > Tomi Peace -- Pieter [1] id:"87sjhz22vw.fsf at praet.org"
[PATCH] man: document the notmuch configuration settings in notmuch-config(1)
On Sun, 26 Feb 2012 00:23:41 +0200, Jani Nikula wrote: > At the risk of duplication between the man page and the configuration > file generated by default, document the notmuch configuration options > in the notmuch config man page. > > Existing users of notmuch should not be expected to re-generate their > config file in order to get access to the documentation for new > configuration options. > > Include some minor fixes and cleanups while at it. > --- Nice! Minor correction: the config option to exclude tags from search results is called 'search.exclude_tags' instead of 'search.exclude'. Patch available [1]. Peace -- Pieter [1] id:"1330454523-32613-1-git-send-email-pieter at praet.org"
[PATCH] doc: minor corrections in notmuch-config.1
* man/man1/notmuch-config.1 - SYNOPSIS: Remove spaces in 'section.item' arg, and indicate that `notmuch config set' accepts multiple value args. - DESCRIPTION: Correct config option to exclude tags from search results. ('search.exclude_tags' instead of 'search.exclude') Also see commit bb8ab4c8. --- See my reply to id:"1330208621-7462-1-git-send-email-jani at nikula.org". man/man1/notmuch-config.1 |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/man1/notmuch-config.1 b/man/man1/notmuch-config.1 index 0260eb7..3d69cc6 100644 --- a/man/man1/notmuch-config.1 +++ b/man/man1/notmuch-config.1 @@ -4,10 +4,10 @@ notmuch-config \- Access notmuch configuration file. .SH SYNOPSIS .B notmuch config get -.RI "<" section "> . <" item ">" +.RI "<" section ">.<" item ">" .B notmuch config set -.RI "<" section "> . <" item "> [" value "]" +.RI "<" section ">.<" item "> [" value " ...]" .SH DESCRIPTION @@ -85,7 +85,7 @@ directory hierarchy. .RS 4 .TP 4 -.B search.exclude +.B search.exclude_tags A list of tags that will be excluded from search results by default. Using an excluded tag in a query will override that exclusion. -- 1.7.8.1
[PATCH v6 1/3] emacs: `notmuch-show-get-message-id': optionally return Message-Id sans prefix
On Sat, 25 Feb 2012 10:40:25 -0400, David Bremner wrote: > On Sun, 19 Feb 2012 21:50:25 +0100, Pieter Praet wrote: > > * emacs/notmuch-show.el > > > > (notmuch-show-get-message-id): > > Add optional arg BARE. When non-nil, return a Message-Id without > > quotes and prefix, thus obviating the need to strip them off again > > in various places. > > Pushed all three. > Thanks! Though I couldn't help but notice (it's a curse...) that patch #3 seems to have gained an extra space in its commit message subject: Original (id:"1329684627-10708-4-git-send-email-pieter at praet.org"): emacs: add `notmuch-show-stash-mlarchive-link{,-and-go}' ^ Pushed (commit 2f86290a): emacs: add `notmuch-show-stash-mlarchive-link{, -and-go}' ^ Don't know whether or not this was accidental, but it's happened before, with a similar commit message subject: Original (id:"1327292557-7701-1-git-send-email-pieter at praet.org"): search: rename auto_exclude_tags to {search,}exclude_tags ^ Pushed (commit 649a9f5f): search: rename auto_exclude_tags to {search, }exclude_tags ^ Perhaps you're calling uncrustify(1) or something similar from your '.git/hooks/applypatch-msg' ? > d Peace -- Pieter
[PATCH] emacs: Mention race condition safety in user visible documentation
On Sat, 18 Feb 2012 23:44:18 +0100, Michal Sojka wrote: > After recent rework of a/A/x/X key bindings, the important paragraph in > documentation of `notmuch-show-archive-thread' stayed hidden from users, > because no key is bound to this function. > > This patch copies the important paragraph to the documentation of > functions currently bound to keys. > --- FYI, I've removed the 'needs-review' flag from this patch, as it's obsoleted by the one @ id:"87linwsg2r.fsf at steelpick.2x.cz". Keep in mind that one needs to run `git-am' with the '--scissors' option when applying the latter. Peace -- Pieter
Re: [PATCH v6 1/3] emacs: `notmuch-show-get-message-id': optionally return Message-Id sans prefix
On Sat, 25 Feb 2012 10:40:25 -0400, David Bremner da...@tethera.net wrote: On Sun, 19 Feb 2012 21:50:25 +0100, Pieter Praet pie...@praet.org wrote: * emacs/notmuch-show.el (notmuch-show-get-message-id): Add optional arg BARE. When non-nil, return a Message-Id without quotes and prefix, thus obviating the need to strip them off again in various places. Pushed all three. Thanks! Though I couldn't help but notice (it's a curse...) that patch #3 seems to have gained an extra space in its commit message subject: Original (id:1329684627-10708-4-git-send-email-pie...@praet.org): emacs: add `notmuch-show-stash-mlarchive-link{,-and-go}' ^ Pushed (commit 2f86290a): emacs: add `notmuch-show-stash-mlarchive-link{, -and-go}' ^ Don't know whether or not this was accidental, but it's happened before, with a similar commit message subject: Original (id:1327292557-7701-1-git-send-email-pie...@praet.org): search: rename auto_exclude_tags to {search,}exclude_tags ^ Pushed (commit 649a9f5f): search: rename auto_exclude_tags to {search, }exclude_tags ^ Perhaps you're calling uncrustify(1) or something similar from your '.git/hooks/applypatch-msg' ? d Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] doc: minor corrections in notmuch-config.1
* man/man1/notmuch-config.1 - SYNOPSIS: Remove spaces in 'section.item' arg, and indicate that `notmuch config set' accepts multiple value args. - DESCRIPTION: Correct config option to exclude tags from search results. ('search.exclude_tags' instead of 'search.exclude') Also see commit bb8ab4c8. --- See my reply to id:1330208621-7462-1-git-send-email-j...@nikula.org. man/man1/notmuch-config.1 |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/man1/notmuch-config.1 b/man/man1/notmuch-config.1 index 0260eb7..3d69cc6 100644 --- a/man/man1/notmuch-config.1 +++ b/man/man1/notmuch-config.1 @@ -4,10 +4,10 @@ notmuch-config \- Access notmuch configuration file. .SH SYNOPSIS .B notmuch config get -.RI section . item +.RI section . item .B notmuch config set -.RI section . item [ value ] +.RI section . item [ value ...] .SH DESCRIPTION @@ -85,7 +85,7 @@ directory hierarchy. .RS 4 .TP 4 -.B search.exclude +.B search.exclude_tags A list of tags that will be excluded from search results by default. Using an excluded tag in a query will override that exclusion. -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] man: document the notmuch configuration settings in notmuch-config(1)
On Sun, 26 Feb 2012 00:23:41 +0200, Jani Nikula j...@nikula.org wrote: At the risk of duplication between the man page and the configuration file generated by default, document the notmuch configuration options in the notmuch config man page. Existing users of notmuch should not be expected to re-generate their config file in order to get access to the documentation for new configuration options. Include some minor fixes and cleanups while at it. --- Nice! Minor correction: the config option to exclude tags from search results is called 'search.exclude_tags' instead of 'search.exclude'. Patch available [1]. Peace -- Pieter [1] id:1330454523-32613-1-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Mon, 27 Feb 2012 16:50:53 +0200, Tomi Ollila tomi.oll...@iki.fi wrote: On Sat, 25 Feb 2012 12:20:31 -0400, David Bremner da...@tethera.net wrote: On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet pie...@praet.org wrote: On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner da...@tethera.net wrote: On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: How about if '*' applies to all messages (as it currently does), but 'C-u *' only to open messages? That would make more sense IMHO. But, conforming to your original request, I've implemented the inverse. Thanks for implementing that. I could live with either way. Do other people have opinions on this? My reasoning is if you descend into a thread from some search page, it seems likely that you want to operate on the messages matching the search. I've pretty soon lost the original open/close status as I often navigate through messages by opening/closing messages, so for me not operating on all messages in thread is magic behaviour. In case I'd use C-u * I first have to check through the full thread what are the actual messages currently open (lots of screen scrolling :( ) I share your sentiment. Also, the function is called `notmuch-show-tag-all', so having it operate only on open messages would be counterintuitive IMO. In other words, I think of the prefix arg as being a modifier for the meaning of 'all'. But either way, it's fairly trivial to invert its behavior [1]. So, I prefer '*' operating on all messages in a thread and C-u '*' for all open messages in a thread. d Tomi Peace -- Pieter [1] id:87sjhz22vw@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] doc: minor corrections in notmuch-config.1
On Tue, 28 Feb 2012 21:33:24 +0200, Jani Nikula j...@nikula.org wrote: On Tue, 28 Feb 2012 19:42:03 +0100, Pieter Praet pie...@praet.org wrote: * man/man1/notmuch-config.1 - SYNOPSIS: Remove spaces in 'section.item' arg, and indicate that `notmuch config set' accepts multiple value args. - DESCRIPTION: Correct config option to exclude tags from search results. ('search.exclude_tags' instead of 'search.exclude') Oops, good catch. And thanks for showing that there was at least someone who read the patch/man. :) Hehe :) Rest assured: lack of replies != lack of readership/appreciation/scrutiny. Also, I think I'm not the only one having a hard time shaking off the candystore effect (so much good stuff, so little time to give it all a try, the Paradox of Choice) whenever checking out the Notmuch ML. Combine that with the realities of life and the need to scratch one's own itches, and the end result is an intermittently unresponsive list. Still the best damn list ever though... :) Jani. [...] Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 23:38:20 +0100, Pieter Praet wrote: > [...] > Same here. In v2 [1], '*' tags all and 'C-u *' tags only open. > > One can always swap the keybindings if so inclined. > Did I really say that? There's only a single keybinding, so swap it with *what* ?!? Itself ? This should work though: #+begin_src emacs-lisp (define-key notmuch-show-mode-map "*" (lambda (prefix tag-changes) (interactive (cons (not current-prefix-arg) (notmuch-read-tag-changes nil notmuch-show-thread-id))) (apply 'notmuch-show-tag-all prefix tag-changes))) #+end_src > [...] Peace -- Pieter
[PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 14:33:35 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 14:30:29 +0400, Dmitry Kurochkin gmail.com> wrote: > > On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet > > wrote: > > > On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner > > > wrote: > > > > On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin > > > at gmail.com> wrote: > > > > > Changes: > > > > > > > > > > v4: > > > > > > > > > > * rebased on master, no conflicts so no need for another review > > > > > > > > > > > > > I pushed this series. > > > > > > > > Maybe this was discussed already, but I think ideally * would apply only > > > > to open messages. So consider that a feature request if someone is > > > > looking for a project. > > > > > > > > > > How about if '*' applies to all messages (as it currently does), > > > but 'C-u *' only to open messages? That would make more sense IMHO. > > > > > > But, conforming to your original request, I've implemented the inverse. > > > > > > > I personally do like '*' as is and do not want to change it's behavior. > > Though I am not against adding a prefix argument for it. > > > > Also can you please send new patches (and patch series) in a new > separate thread? If they are related to another thread, you can add a > reference. But having multiple patch series with multiple versions in a > single thread is very confusing IMO. > Since I've already soiled this thread with my initial series, I've sent v2 [1] in reply to David's request as well, but will make sure to start a fresh thread from now on. > Regards, > Dmitry > > > Regards, > > Dmitry > > > > > Patches follow. > > > > > > > > > > d > > > > ___ > > > > notmuch mailing list > > > > notmuch at notmuchmail.org > > > > http://notmuchmail.org/mailman/listinfo/notmuch > > > > > > > > > Peace > > > > > > -- > > > Pieter Thanks for all your comments! Peace -- Pieter [1] id:"1330122640-18895-1-git-send-email-pieter at praet.org"
[PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 14:30:29 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet wrote: > > On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner > > wrote: > > > On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin > > gmail.com> wrote: > > > > Changes: > > > > > > > > v4: > > > > > > > > * rebased on master, no conflicts so no need for another review > > > > > > > > > > I pushed this series. > > > > > > Maybe this was discussed already, but I think ideally * would apply only > > > to open messages. So consider that a feature request if someone is > > > looking for a project. > > > > > > > How about if '*' applies to all messages (as it currently does), > > but 'C-u *' only to open messages? That would make more sense IMHO. > > > > But, conforming to your original request, I've implemented the inverse. > > > > I personally do like '*' as is and do not want to change it's behavior. > Though I am not against adding a prefix argument for it. > Same here. In v2 [1], '*' tags all and 'C-u *' tags only open. One can always swap the keybindings if so inclined. > Regards, > Dmitry > > > Patches follow. > > > > > > > d > > > ___ > > > notmuch mailing list > > > notmuch at notmuchmail.org > > > http://notmuchmail.org/mailman/listinfo/notmuch > > > > > > Peace > > > > -- > > Pieter > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter [1] id:"1330122640-18895-1-git-send-email-pieter at praet.org"
[PATCH 6/6] emacs: `notmuch-show-tag-all' sans prefix arg only tags open messages
On Fri, 24 Feb 2012 14:47:30 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 00:09:14 +0100, Pieter Praet wrote: > > * emacs/notmuch-show.el > > > > (notmuch-show-get-messages-ids): > > New optional argument ONLY-OPEN. If non-nil, only return > > Message-Id's for messages which are currently visible. > > > > (notmuch-show-tag-all): > > New optional argument IGNORE-VISIBILITY, of which the inverse is > > passed as ONLY-OPEN argument to `notmuch-show-get-messages-ids': > > If called with a prefix arg, affect *all* messages in the current > > buffer. Otherwise, only change tags of visible messages. > > > > (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 | 28 > > test/emacs|1 - > > 2 files changed, 20 insertions(+), 9 deletions(-) > > > > diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el > > index 4b37c77..4499fcd 100644 > > --- a/emacs/notmuch-show.el > > +++ b/emacs/notmuch-show.el > > @@ -1334,13 +1334,17 @@ (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 ( separator) > > +(defun notmuch-show-get-messages-ids ( only-open separator) > >"Return a list of Message-Id's of all messages in the current buffer. > > > > +If optional argument ONLY-OPEN is non-nil, only return > > +Message-Id's for messages which are currently visible. > > + > > If provided with optional argument SEPARATOR, return a string > > instead, consisting of all Message-Id's separated by SEPARATOR." > >(let ((message-ids)) > > -(notmuch-show-mapc t > > +(notmuch-show-mapc > > + `(if only-open (notmuch-show-message-visible-p) t) > > How about changing ONLY-OPEN to a general optional PREDICATE argument > and pass it as is to `notmuch-show-mapc'? Please make it the last > argument. > Done. > Regards, > Dmitry > > > (lambda () (push (notmuch-show-get-message-id) message-ids))) > > (if separator > > (mapconcat 'identity message-ids separator) > > @@ -1628,13 +1632,21 @@ (defun notmuch-show-tag ( initial-input) > > initial-input (notmuch-show-get-message-id > > (apply 'notmuch-show-tag-message tag-changes))) > > > > -(defun notmuch-show-tag-all ( tag-changes) > > - "Change tags for all messages in the current thread. > > +(defun notmuch-show-tag-all ( ignore-visibility tag-changes) > > + "Change tags of all open messages in the current buffer. > > + > > +If optional arg IGNORE-VISIBILITY is non-nil, change tags of > > +*all* messages in the current buffer, independent of their > > +visibility. > > > > 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) > > - (notmuch-show-mapc t > > + (interactive (cons current-prefix-arg > > +(notmuch-read-tag-changes nil notmuch-show-thread-id))) > > + (apply 'notmuch-tag > > +(notmuch-show-get-messages-ids (not ignore-visibility) " or ") > > +tag-changes) > > + (notmuch-show-mapc > > + `(if ignore-visibility t (notmuch-show-message-visible-p)) > > (lambda () > > (let* ((current-tags (notmuch-show-get-tags)) > > (new-tags (notmuch-update-tags current-tags tag-changes))) > > @@ -1719,7 +1731,7 @@ (defun notmuch-show-archive-thread ( > > unarchive) > > buffer." > >(interactive "P") > >(let ((op (if unarchive "+" "-"))) > > -(notmuch-show-tag-all (concat op "inbox" > > +(notmuch-show-tag-all t (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 644ef59..c286ff5 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 > > Peace -- Pieter
[PATCH 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}'
On Fri, 24 Feb 2012 14:42:53 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 00:09:13 +0100, Pieter Praet wrote: > > * emacs/notmuch-show.el > > > > (notmuch-show-get-messages-ids): > > If provided with optional arg SEPARATOR, return a string consisting > > of all Message-Id's, separated by SEPARATOR. Also improve original > > docstring wrt default return value. > > > > (notmuch-show-get-messages-ids-search): > > Removed, as its functionality is now in `notmuch-show-get-messages-ids'. > > > > (notmuch-show-tag-all): > > Call `notmuch-show-get-messages-ids' with SEPARATOR arg instead of > > `notmuch-show-get-messages-ids-search'. > > --- > > There is another similar case in notmuch.el: > `notmuch-show-get-messages-ids' and > `notmuch-show-get-messages-ids-search'. There may be more. > > Please change them as well. > You mean `notmuch-search-find-thread-id-region{,-search}' ? They aren't relevant to this series, so I'll submit a separate patch for that (later). A quick `rgrep' doesn't reveal any others, but if you happen to stumble across any, feel free to point them out. > Regards, > Dmitry > > > emacs/notmuch-show.el | 18 +- > > 1 files changed, 9 insertions(+), 9 deletions(-) > > > > diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el > > index 5fc0e43..4b37c77 100644 > > --- a/emacs/notmuch-show.el > > +++ b/emacs/notmuch-show.el > > @@ -1334,17 +1334,17 @@ (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 () > > - "Return all message ids of messages in the current thread." > > +(defun notmuch-show-get-messages-ids ( separator) > > + "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." > >(let ((message-ids)) > > (notmuch-show-mapc t > > (lambda () (push (notmuch-show-get-message-id) message-ids))) > > -message-ids)) > > - > > -(defun notmuch-show-get-messages-ids-search () > > - "Return a search string for all message ids of messages in the > > -current thread." > > - (mapconcat 'identity (notmuch-show-get-messages-ids) " or ")) > > +(if separator > > + (mapconcat 'identity message-ids separator) > > + message-ids))) > > > > ;; dme: Would it make sense to use a macro for many of these? > > > > @@ -1633,7 +1633,7 @@ (defun notmuch-show-tag-all ( tag-changes) > > > > 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-search) tag-changes) > > + (apply 'notmuch-tag (notmuch-show-get-messages-ids " or ") tag-changes) > >(notmuch-show-mapc t > > (lambda () > > (let* ((current-tags (notmuch-show-get-tags)) > > -- > > 1.7.8.1 > > Peace -- Pieter
[PATCH 4/6] emacs: add predicate arg to `notmuch-show-mapc'
On Fri, 24 Feb 2012 14:39:41 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 00:09:12 +0100, Pieter Praet wrote: > > * emacs/notmuch-show.el > > > > (notmuch-show-mapc): > > Only call FUNCTION if new argument PREDICATE is satisfied. > > Also correct original docstring: 's/thread/buffer/'. > > > > (notmuch-show-get-messages-ids): > > Update wrt changes to `notmuch-show-mapc'. > > > > (notmuch-show-tag-all): > > Update wrt changes to `notmuch-show-mapc'. > > --- > > emacs/notmuch-show.el | 15 --- > > 1 files changed, 8 insertions(+), 7 deletions(-) > > > > diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el > > index aa9ccee..5fc0e43 100644 > > --- a/emacs/notmuch-show.el > > +++ b/emacs/notmuch-show.el > > @@ -1272,13 +1272,14 @@ (defun notmuch-show-goto-message-previous () > > (notmuch-show-move-to-message-top) > > t)) > > > > -(defun notmuch-show-mapc (function) > > - "Iterate through all messages in the current thread with > > -`notmuch-show-goto-message-next' and call FUNCTION for side > > -effects." > > +(defun notmuch-show-mapc (predicate function) > > Please make PREDICATE optional to avoid giving t when it is not needed. > Done. > I would expect PREDICATE to be a function, [...] Well, it *can* be a function actually (see later usage in e.g. `notmuch-show-get-messages-ids' [1]), but should be provided as a form instead of as a quoted symbol. > [...] but perhaps the way you > implemented it is common in Emacs. > Far from it, apparently. I did it that way to prevent `funcall' from choking on t/nil, which -in retrospect- was rather shortsighted... I've used a more sensible approach in v2 [2]. > Regards, > Dmitry > > > + "Iterate through all messages in the current buffer with > > +`notmuch-show-goto-message-next'. If PREDICATE is satisfied, > > +call FUNCTION for side effects." > >(save-excursion > > (goto-char (point-min)) > > -(loop do (funcall function) > > +(loop do (if (eval predicate) > > +(funcall function)) > > while (notmuch-show-goto-message-next > > > > ;; Functions relating to the visibility of messages and their > > @@ -1336,7 +1337,7 @@ (defun notmuch-show-get-message-id () > > (defun notmuch-show-get-messages-ids () > >"Return all message ids of messages in the current thread." > >(let ((message-ids)) > > -(notmuch-show-mapc > > +(notmuch-show-mapc t > > (lambda () (push (notmuch-show-get-message-id) message-ids))) > > message-ids)) > > > > @@ -1633,7 +1634,7 @@ (defun notmuch-show-tag-all ( tag-changes) > > 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-search) tag-changes) > > - (notmuch-show-mapc > > + (notmuch-show-mapc t > > (lambda () > > (let* ((current-tags (notmuch-show-get-tags)) > > (new-tags (notmuch-update-tags current-tags tag-changes))) > > -- > > 1.7.8.1 > > Peace -- Pieter [1] id:"1330038554-10347-6-git-send-email-pieter at praet.org" [2] id:"1330122640-18895-5-git-send-email-pieter at praet.org"
[PATCH 1/6] test: emacs: new tests "notmuch-show: {add, remove} multiple tags {to, from} single message"
On Fri, 24 Feb 2012 14:35:22 +0400, Dmitry Kurochkin wrote: > On Fri, 24 Feb 2012 00:09:09 +0100, Pieter Praet wrote: > > * test/emacs: > > > > - Rename subtests "{Add,Remove} tag from notmuch-show view" to > > "notmuch-show: {add,remove} single tag {to,from} single message" > > to be consistent with the following tests. > > > > - New subtest "notmuch-show: add multiple tags to single message": > > `notmuch-show-add-tag' ("+") can add multiple tags to a message. > > > > - New subtest "notmuch-show: remove multiple tags from single message": > > `notmuch-show-remove-tag' ("-") can remove multiple tags from a message. > > --- > > Would be nice to have another patch that moves notmuch-show tests to > emacs-show file. > TL;DR: It's on my todo list. Yeah, the Emacs test series *as a whole* desperately needs some reorganizing, not in the least because it's still severely lacking in coverage. Some more structure/consistency would considerably increase the feasibility (or at least reduce the PITAness...) of filling in the numerous blanks and reducing duplication of effort (regarding both hard- and wetware based cycles), as well as increasing the likelihood that developers (not looking in any specific direction) serve their code with a side dish of tests. Ideally (IMHO), it would be split up into separate files by mode, i.e. `notmuch-hello', `notmuch-search', `notmuch-show', `notmuch-{message,mua}', and those can be further divided into sections like navigation, tagging, visibility stuff, hooks, ... There's probably quite a number of implicit interdependencies that need to be taken care of though, and I (as well as others) still have a bunch of tests waiting to be applied, so we might want to do this gradually. > Regards, > Dmitry > > > test/emacs | 16 ++-- > > 1 files changed, 14 insertions(+), 2 deletions(-) > > > > diff --git a/test/emacs b/test/emacs > > index b74cfa9..ec1dbb0 100755 > > --- a/test/emacs > > +++ b/test/emacs > > @@ -112,18 +112,30 @@ test_emacs "(notmuch-search \"$os_x_darwin_thread\") > > output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox unread)" > > > > -test_begin_subtest "Add tag from notmuch-show view" > > +test_begin_subtest "notmuch-show: add single tag to single message" > > test_emacs "(notmuch-show \"$os_x_darwin_thread\") > > (execute-kbd-macro \"+tag-from-show-view\")" > > output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox tag-from-show-view unread)" > > > > -test_begin_subtest "Remove tag from notmuch-show view" > > +test_begin_subtest "notmuch-show: remove single tag from single message" > > test_emacs "(notmuch-show \"$os_x_darwin_thread\") > > (execute-kbd-macro \"-tag-from-show-view\")" > > output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox unread)" > > > > +test_begin_subtest "notmuch-show: add multiple tags to single message" > > +test_emacs "(notmuch-show \"$os_x_darwin_thread\") > > + (execute-kbd-macro \"+tag1-from-show-view +tag2-from-show-view\")" > > +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox tag1-from-show-view tag2-from-show-view unread)" > > + > > +test_begin_subtest "notmuch-show: remove multiple tags from single message" > > +test_emacs "(notmuch-show \"$os_x_darwin_thread\") > > + (execute-kbd-macro \"-tag1-from-show-view -tag2-from-show-view\")" > > +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox unread)" > > + > > test_begin_subtest "Message with .. in Message-Id:" > > add_message [id]=123..456 at example '[subject]="Message with .. in > > Message-Id"' > > test_emacs '(notmuch-search "id:\"123..456 at example\"") > > -- > > 1.7.8.1 > > Peace -- Pieter
[PATCH v2 6/6] emacs: `notmuch-show-tag-all' with prefix arg only tags open messages
* 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 ( separator) +(defun notmuch-show-get-messages-ids ( 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 ( initial-input) initial-input (notmuch-show-get-message-id (apply 'notmuch-show-tag-message tag-changes))) -(defun notmuch-show-tag-all ( tag-changes) - "Change tags for all messages in the current thread. +(defun notmuch-show-tag-all (only-open 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 ( 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
[PATCH v2 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}'
* emacs/notmuch-show.el (notmuch-show-get-messages-ids): If provided with optional arg SEPARATOR, return a string consisting of all Message-Id's, separated by SEPARATOR. Also improve original docstring wrt default return value. (notmuch-show-get-messages-ids-search): Removed, as its functionality is now in `notmuch-show-get-messages-ids'. (notmuch-show-tag-all): Call `notmuch-show-get-messages-ids' with SEPARATOR arg instead of `notmuch-show-get-messages-ids-search'. --- emacs/notmuch-show.el | 18 +- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 6adbdc0..05606fc 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1339,17 +1339,17 @@ (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 () - "Return all message ids of messages in the current thread." +(defun notmuch-show-get-messages-ids ( separator) + "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." (let ((message-ids)) (notmuch-show-mapc (lambda () (push (notmuch-show-get-message-id) message-ids))) -message-ids)) - -(defun notmuch-show-get-messages-ids-search () - "Return a search string for all message ids of messages in the -current thread." - (mapconcat 'identity (notmuch-show-get-messages-ids) " or ")) +(if separator + (mapconcat 'identity message-ids separator) + message-ids))) ;; dme: Would it make sense to use a macro for many of these? @@ -1638,7 +1638,7 @@ (defun notmuch-show-tag-all ( tag-changes) 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-search) tag-changes) + (apply 'notmuch-tag (notmuch-show-get-messages-ids " or ") tag-changes) (notmuch-show-mapc (lambda () (let* ((current-tags (notmuch-show-get-tags)) -- 1.7.8.1
[PATCH v2 4/6] emacs: add optional predicate arg to `notmuch-show-mapc'
* emacs/notmuch-show.el (notmuch-show-mapc): If provided with optional argument PREDICATE, only call FUNCTION if calling PREDICATE returns non-nil. Also correct original docstring: 's/thread/buffer/'. --- emacs/notmuch-show.el | 14 ++ 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..6adbdc0 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1272,13 +1272,19 @@ (defun notmuch-show-goto-message-previous () (notmuch-show-move-to-message-top) t)) -(defun notmuch-show-mapc (function) - "Iterate through all messages in the current thread with +(defun notmuch-show-mapc (function predicate) + "Iterate through all messages in the current buffer with `notmuch-show-goto-message-next' and call FUNCTION for side -effects." +effects. + +If provided with optional argument PREDICATE, only call +FUNCTION if calling PREDICATE returns non-nil." (save-excursion (goto-char (point-min)) -(loop do (funcall function) +(loop do (if predicate +(if (funcall predicate) +(funcall function)) + (funcall function)) while (notmuch-show-goto-message-next ;; Functions relating to the visibility of messages and their -- 1.7.8.1
[PATCH v2 3/6] test: emacs: `notmuch-show-tag-all' with prefix arg should only tag open messages
* test/emacs: - New subtest "notmuch-show: change tags of open messages in current buffer": When called with a prefix arg, `notmuch-show-tag-all' ("*") should only change the tags of *open* messages. Currently broken, fix follows later. --- test/emacs | 16 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index d2dbafc..9088ced 100755 --- a/test/emacs +++ b/test/emacs @@ -151,6 +151,22 @@ count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_t 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" +del_tag="inbox" +count_total=$(notmuch count -- "$query") # = 4 +count_match=$(notmuch count -- "$query" AND "$filter") # = 2 +test_emacs "(notmuch-search \"$query AND $filter\") +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \"*+$add_tag -$del_tag\")" +count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_tag") +notmuch tag +"$del_tag" -"$add_tag" -- "$query" # revert tag changes +test_expect_equal "$count_changed" "$count_match" # assert that CHANGED == MATCHING + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH v2 2/6] test: emacs: new test "notmuch-show: change tags of all messages in current buffer"
* test/emacs: New subtest "notmuch-show: change tags of all messages in current buffer": `notmuch-show-tag-all' ("*") changes tags of *all* messages in current buffer. --- test/emacs | 15 +++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index ec1dbb0..d2dbafc 100755 --- a/test/emacs +++ b/test/emacs @@ -136,6 +136,21 @@ test_emacs "(notmuch-show \"$os_x_darwin_thread\") output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" +test_begin_subtest "notmuch-show: change tags of all messages in current buffer" +query="$os_x_darwin_thread" +filter="from:Jiang" +add_tag="notmuch-show-tag-all" +del_tag="inbox" +count_total=$(notmuch count -- "$query") # = 4 +count_match=$(notmuch count -- "$query" AND "$filter") # = 2 +test_emacs "(notmuch-search \"$query AND $filter\") +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \"*+$add_tag -$del_tag\")" +count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_tag") +notmuch tag +"$del_tag" -"$add_tag" -- "$query" # revert tag changes +test_expect_equal "$count_changed" "$count_total" # assert that CHANGED == TOTAL + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH v2 1/6] test: emacs: new tests "notmuch-show: {add, remove} multiple tags {to, from} single message"
* test/emacs: - Rename subtests "{Add,Remove} tag from notmuch-show view" to "notmuch-show: {add,remove} single tag {to,from} single message" to be consistent with the following tests. - New subtest "notmuch-show: add multiple tags to single message": `notmuch-show-add-tag' ("+") can add multiple tags to a message. - New subtest "notmuch-show: remove multiple tags from single message": `notmuch-show-remove-tag' ("-") can remove multiple tags from a message. --- test/emacs | 16 ++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..ec1dbb0 100755 --- a/test/emacs +++ b/test/emacs @@ -112,18 +112,30 @@ test_emacs "(notmuch-search \"$os_x_darwin_thread\") output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" -test_begin_subtest "Add tag from notmuch-show view" +test_begin_subtest "notmuch-show: add single tag to single message" test_emacs "(notmuch-show \"$os_x_darwin_thread\") (execute-kbd-macro \"+tag-from-show-view\")" output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread)" -test_begin_subtest "Remove tag from notmuch-show view" +test_begin_subtest "notmuch-show: remove single tag from single message" test_emacs "(notmuch-show \"$os_x_darwin_thread\") (execute-kbd-macro \"-tag-from-show-view\")" output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" +test_begin_subtest "notmuch-show: add multiple tags to single message" +test_emacs "(notmuch-show \"$os_x_darwin_thread\") + (execute-kbd-macro \"+tag1-from-show-view +tag2-from-show-view\")" +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag1-from-show-view tag2-from-show-view unread)" + +test_begin_subtest "notmuch-show: remove multiple tags from single message" +test_emacs "(notmuch-show \"$os_x_darwin_thread\") + (execute-kbd-macro \"-tag1-from-show-view -tag2-from-show-view\")" +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH v2 0/6] `notmuch-show-tag-all' with prefix arg only tags open messages
Addresses Dmitry's comments [1,2,3], save for the ones that aren't directly related to this series [4,5] and will be dealt with later. Also made `notmuch-show-tag-all's ONLY-OPEN arg non-optional. Otherwise it would cause issues when running non-interactively. Peace -- Pieter [1] id:"87fwe0jz0y.fsf at gmail.com" [2] id:"87aa48jynx.fsf at gmail.com" [3] id:"87obsojzga.fsf at gmail.com" [4] id:"87ipiwjz85.fsf at gmail.com" [5] id:"87d394jyvm.fsf at gmail.com"
[PATCH 6/6] emacs: `notmuch-show-tag-all' sans prefix arg only tags open messages
* emacs/notmuch-show.el (notmuch-show-get-messages-ids): New optional argument ONLY-OPEN. If non-nil, only return Message-Id's for messages which are currently visible. (notmuch-show-tag-all): New optional argument IGNORE-VISIBILITY, of which the inverse is passed as ONLY-OPEN argument to `notmuch-show-get-messages-ids': If called with a prefix arg, affect *all* messages in the current buffer. Otherwise, only change tags of visible messages. (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 | 28 test/emacs|1 - 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 4b37c77..4499fcd 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1334,13 +1334,17 @@ (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 ( separator) +(defun notmuch-show-get-messages-ids ( only-open separator) "Return a list of Message-Id's of all messages in the current buffer. +If optional argument ONLY-OPEN is non-nil, only return +Message-Id's for messages which are currently visible. + If provided with optional argument SEPARATOR, return a string instead, consisting of all Message-Id's separated by SEPARATOR." (let ((message-ids)) -(notmuch-show-mapc t +(notmuch-show-mapc + `(if only-open (notmuch-show-message-visible-p) t) (lambda () (push (notmuch-show-get-message-id) message-ids))) (if separator (mapconcat 'identity message-ids separator) @@ -1628,13 +1632,21 @@ (defun notmuch-show-tag ( initial-input) initial-input (notmuch-show-get-message-id (apply 'notmuch-show-tag-message tag-changes))) -(defun notmuch-show-tag-all ( tag-changes) - "Change tags for all messages in the current thread. +(defun notmuch-show-tag-all ( ignore-visibility tag-changes) + "Change tags of all open messages in the current buffer. + +If optional arg IGNORE-VISIBILITY is non-nil, change tags of +*all* messages in the current buffer, independent of their +visibility. 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) - (notmuch-show-mapc t + (interactive (cons current-prefix-arg +(notmuch-read-tag-changes nil notmuch-show-thread-id))) + (apply 'notmuch-tag +(notmuch-show-get-messages-ids (not ignore-visibility) " or ") +tag-changes) + (notmuch-show-mapc + `(if ignore-visibility t (notmuch-show-message-visible-p)) (lambda () (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) @@ -1719,7 +1731,7 @@ (defun notmuch-show-archive-thread ( unarchive) buffer." (interactive "P") (let ((op (if unarchive "+" "-"))) -(notmuch-show-tag-all (concat op "inbox" +(notmuch-show-tag-all t (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 644ef59..c286ff5 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
[PATCH 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}'
* emacs/notmuch-show.el (notmuch-show-get-messages-ids): If provided with optional arg SEPARATOR, return a string consisting of all Message-Id's, separated by SEPARATOR. Also improve original docstring wrt default return value. (notmuch-show-get-messages-ids-search): Removed, as its functionality is now in `notmuch-show-get-messages-ids'. (notmuch-show-tag-all): Call `notmuch-show-get-messages-ids' with SEPARATOR arg instead of `notmuch-show-get-messages-ids-search'. --- emacs/notmuch-show.el | 18 +- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 5fc0e43..4b37c77 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1334,17 +1334,17 @@ (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 () - "Return all message ids of messages in the current thread." +(defun notmuch-show-get-messages-ids ( separator) + "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." (let ((message-ids)) (notmuch-show-mapc t (lambda () (push (notmuch-show-get-message-id) message-ids))) -message-ids)) - -(defun notmuch-show-get-messages-ids-search () - "Return a search string for all message ids of messages in the -current thread." - (mapconcat 'identity (notmuch-show-get-messages-ids) " or ")) +(if separator + (mapconcat 'identity message-ids separator) + message-ids))) ;; dme: Would it make sense to use a macro for many of these? @@ -1633,7 +1633,7 @@ (defun notmuch-show-tag-all ( tag-changes) 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-search) tag-changes) + (apply 'notmuch-tag (notmuch-show-get-messages-ids " or ") tag-changes) (notmuch-show-mapc t (lambda () (let* ((current-tags (notmuch-show-get-tags)) -- 1.7.8.1
[PATCH 4/6] emacs: add predicate arg to `notmuch-show-mapc'
* emacs/notmuch-show.el (notmuch-show-mapc): Only call FUNCTION if new argument PREDICATE is satisfied. Also correct original docstring: 's/thread/buffer/'. (notmuch-show-get-messages-ids): Update wrt changes to `notmuch-show-mapc'. (notmuch-show-tag-all): Update wrt changes to `notmuch-show-mapc'. --- emacs/notmuch-show.el | 15 --- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..5fc0e43 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1272,13 +1272,14 @@ (defun notmuch-show-goto-message-previous () (notmuch-show-move-to-message-top) t)) -(defun notmuch-show-mapc (function) - "Iterate through all messages in the current thread with -`notmuch-show-goto-message-next' and call FUNCTION for side -effects." +(defun notmuch-show-mapc (predicate function) + "Iterate through all messages in the current buffer with +`notmuch-show-goto-message-next'. If PREDICATE is satisfied, +call FUNCTION for side effects." (save-excursion (goto-char (point-min)) -(loop do (funcall function) +(loop do (if (eval predicate) +(funcall function)) while (notmuch-show-goto-message-next ;; Functions relating to the visibility of messages and their @@ -1336,7 +1337,7 @@ (defun notmuch-show-get-message-id () (defun notmuch-show-get-messages-ids () "Return all message ids of messages in the current thread." (let ((message-ids)) -(notmuch-show-mapc +(notmuch-show-mapc t (lambda () (push (notmuch-show-get-message-id) message-ids))) message-ids)) @@ -1633,7 +1634,7 @@ (defun notmuch-show-tag-all ( tag-changes) 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-search) tag-changes) - (notmuch-show-mapc + (notmuch-show-mapc t (lambda () (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) -- 1.7.8.1
[PATCH 3/6] test: emacs: `notmuch-show-tag-all' sans prefix arg should only tag open messages
* test/emacs: - Alter subtest "notmuch-show: change tags of all messages in current buffer": Pass a prefix arg to `notmuch-show-tag-all' ("*"). - New subtest "notmuch-show: change tags of open messages in current buffer": When called *without* a prefix arg, `notmuch-show-tag-all' ("*") should only change the tags of *open* messages. Currently broken, fix follows later. --- test/emacs | 18 +- 1 files changed, 17 insertions(+), 1 deletions(-) diff --git a/test/emacs b/test/emacs index d2dbafc..644ef59 100755 --- a/test/emacs +++ b/test/emacs @@ -146,11 +146,27 @@ count_match=$(notmuch count -- "$query" AND "$filter") # = 2 test_emacs "(notmuch-search \"$query AND $filter\") (notmuch-test-wait) (notmuch-search-show-thread) -(execute-kbd-macro \"*+$add_tag -$del_tag\")" +(execute-kbd-macro \"*+$add_tag -$del_tag\")" count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_tag") 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" +del_tag="inbox" +count_total=$(notmuch count -- "$query") # = 4 +count_match=$(notmuch count -- "$query" AND "$filter") # = 2 +test_emacs "(notmuch-search \"$query AND $filter\") +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \"*+$add_tag -$del_tag\")" +count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_tag") +notmuch tag +"$del_tag" -"$add_tag" -- "$query" # revert tag changes +test_expect_equal "$count_changed" "$count_match" # assert that CHANGED == MATCHING + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH 2/6] test: emacs: new test "notmuch-show: change tags of all messages in current buffer"
* test/emacs: New subtest "notmuch-show: change tags of all messages in current buffer": `notmuch-show-tag-all' ("*") changes tags of *all* messages in current buffer. --- test/emacs | 15 +++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index ec1dbb0..d2dbafc 100755 --- a/test/emacs +++ b/test/emacs @@ -136,6 +136,21 @@ test_emacs "(notmuch-show \"$os_x_darwin_thread\") output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" +test_begin_subtest "notmuch-show: change tags of all messages in current buffer" +query="$os_x_darwin_thread" +filter="from:Jiang" +add_tag="notmuch-show-tag-all" +del_tag="inbox" +count_total=$(notmuch count -- "$query") # = 4 +count_match=$(notmuch count -- "$query" AND "$filter") # = 2 +test_emacs "(notmuch-search \"$query AND $filter\") +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \"*+$add_tag -$del_tag\")" +count_changed=$(notmuch count -- "$query" AND tag:"$add_tag" AND NOT tag:"$del_tag") +notmuch tag +"$del_tag" -"$add_tag" -- "$query" # revert tag changes +test_expect_equal "$count_changed" "$count_total" # assert that CHANGED == TOTAL + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH 1/6] test: emacs: new tests "notmuch-show: {add, remove} multiple tags {to, from} single message"
* test/emacs: - Rename subtests "{Add,Remove} tag from notmuch-show view" to "notmuch-show: {add,remove} single tag {to,from} single message" to be consistent with the following tests. - New subtest "notmuch-show: add multiple tags to single message": `notmuch-show-add-tag' ("+") can add multiple tags to a message. - New subtest "notmuch-show: remove multiple tags from single message": `notmuch-show-remove-tag' ("-") can remove multiple tags from a message. --- test/emacs | 16 ++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..ec1dbb0 100755 --- a/test/emacs +++ b/test/emacs @@ -112,18 +112,30 @@ test_emacs "(notmuch-search \"$os_x_darwin_thread\") output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" -test_begin_subtest "Add tag from notmuch-show view" +test_begin_subtest "notmuch-show: add single tag to single message" test_emacs "(notmuch-show \"$os_x_darwin_thread\") (execute-kbd-macro \"+tag-from-show-view\")" output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread)" -test_begin_subtest "Remove tag from notmuch-show view" +test_begin_subtest "notmuch-show: remove single tag from single message" test_emacs "(notmuch-show \"$os_x_darwin_thread\") (execute-kbd-macro \"-tag-from-show-view\")" output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" +test_begin_subtest "notmuch-show: add multiple tags to single message" +test_emacs "(notmuch-show \"$os_x_darwin_thread\") + (execute-kbd-macro \"+tag1-from-show-view +tag2-from-show-view\")" +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag1-from-show-view tag2-from-show-view unread)" + +test_begin_subtest "notmuch-show: remove multiple tags from single message" +test_emacs "(notmuch-show \"$os_x_darwin_thread\") + (execute-kbd-macro \"-tag1-from-show-view -tag2-from-show-view\")" +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner wrote: > On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin gmail.com> wrote: > > Changes: > > > > v4: > > > > * rebased on master, no conflicts so no need for another review > > > > I pushed this series. > > Maybe this was discussed already, but I think ideally * would apply only > to open messages. So consider that a feature request if someone is > looking for a project. > How about if '*' applies to all messages (as it currently does), but 'C-u *' only to open messages? That would make more sense IMHO. But, conforming to your original request, I've implemented the inverse. Patches follow. > d > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter
[PATCH v2 0/6] `notmuch-show-tag-all' with prefix arg only tags open messages
Addresses Dmitry's comments [1,2,3], save for the ones that aren't directly related to this series [4,5] and will be dealt with later. Also made `notmuch-show-tag-all's ONLY-OPEN arg non-optional. Otherwise it would cause issues when running non-interactively. Peace -- Pieter [1] id:87fwe0jz0y@gmail.com [2] id:87aa48jynx@gmail.com [3] id:87obsojzga@gmail.com [4] id:87ipiwjz85@gmail.com [5] id:87d394jyvm@gmail.com ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 2/6] test: emacs: new test notmuch-show: change tags of all messages in current buffer
* test/emacs: New subtest notmuch-show: change tags of all messages in current buffer: `notmuch-show-tag-all' (*) changes tags of *all* messages in current buffer. --- test/emacs | 15 +++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index ec1dbb0..d2dbafc 100755 --- a/test/emacs +++ b/test/emacs @@ -136,6 +136,21 @@ test_emacs (notmuch-show \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) +test_begin_subtest notmuch-show: change tags of all messages in current buffer +query=$os_x_darwin_thread +filter=from:Jiang +add_tag=notmuch-show-tag-all +del_tag=inbox +count_total=$(notmuch count -- $query) # = 4 +count_match=$(notmuch count -- $query AND $filter) # = 2 +test_emacs (notmuch-search \$query AND $filter\) +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \*+$add_tag -$del_tag\) +count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_tag) +notmuch tag +$del_tag -$add_tag -- $query # revert tag changes +test_expect_equal $count_changed $count_total # assert that CHANGED == TOTAL + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 3/6] test: emacs: `notmuch-show-tag-all' with prefix arg should only tag open messages
* test/emacs: - New subtest notmuch-show: change tags of open messages in current buffer: When called with a prefix arg, `notmuch-show-tag-all' (*) should only change the tags of *open* messages. Currently broken, fix follows later. --- test/emacs | 16 1 files changed, 16 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index d2dbafc..9088ced 100755 --- a/test/emacs +++ b/test/emacs @@ -151,6 +151,22 @@ count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_t 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 +del_tag=inbox +count_total=$(notmuch count -- $query) # = 4 +count_match=$(notmuch count -- $query AND $filter) # = 2 +test_emacs (notmuch-search \$query AND $filter\) +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \*+$add_tag -$del_tag\) +count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_tag) +notmuch tag +$del_tag -$add_tag -- $query # revert tag changes +test_expect_equal $count_changed $count_match # assert that CHANGED == MATCHING + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 4/6] emacs: add optional predicate arg to `notmuch-show-mapc'
* emacs/notmuch-show.el (notmuch-show-mapc): If provided with optional argument PREDICATE, only call FUNCTION if calling PREDICATE returns non-nil. Also correct original docstring: 's/thread/buffer/'. --- emacs/notmuch-show.el | 14 ++ 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..6adbdc0 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1272,13 +1272,19 @@ (defun notmuch-show-goto-message-previous () (notmuch-show-move-to-message-top) t)) -(defun notmuch-show-mapc (function) - Iterate through all messages in the current thread with +(defun notmuch-show-mapc (function optional predicate) + Iterate through all messages in the current buffer with `notmuch-show-goto-message-next' and call FUNCTION for side -effects. +effects. + +If provided with optional argument PREDICATE, only call +FUNCTION if calling PREDICATE returns non-nil. (save-excursion (goto-char (point-min)) -(loop do (funcall function) +(loop do (if predicate +(if (funcall predicate) +(funcall function)) + (funcall function)) while (notmuch-show-goto-message-next ;; Functions relating to the visibility of messages and their -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 6/6] emacs: `notmuch-show-tag-all' with prefix arg only tags open messages
* 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 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 1/6] test: emacs: new tests notmuch-show: {add, remove} multiple tags {to, from} single message
* test/emacs: - Rename subtests {Add,Remove} tag from notmuch-show view to notmuch-show: {add,remove} single tag {to,from} single message to be consistent with the following tests. - New subtest notmuch-show: add multiple tags to single message: `notmuch-show-add-tag' (+) can add multiple tags to a message. - New subtest notmuch-show: remove multiple tags from single message: `notmuch-show-remove-tag' (-) can remove multiple tags from a message. --- test/emacs | 16 ++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..ec1dbb0 100755 --- a/test/emacs +++ b/test/emacs @@ -112,18 +112,30 @@ test_emacs (notmuch-search \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) -test_begin_subtest Add tag from notmuch-show view +test_begin_subtest notmuch-show: add single tag to single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \+tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread) -test_begin_subtest Remove tag from notmuch-show view +test_begin_subtest notmuch-show: remove single tag from single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \-tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) +test_begin_subtest notmuch-show: add multiple tags to single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \+tag1-from-show-view +tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag1-from-show-view tag2-from-show-view unread) + +test_begin_subtest notmuch-show: remove multiple tags from single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \-tag1-from-show-view -tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH 1/6] test: emacs: new tests notmuch-show: {add, remove} multiple tags {to, from} single message
On Fri, 24 Feb 2012 14:35:22 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:09:09 +0100, Pieter Praet pie...@praet.org wrote: * test/emacs: - Rename subtests {Add,Remove} tag from notmuch-show view to notmuch-show: {add,remove} single tag {to,from} single message to be consistent with the following tests. - New subtest notmuch-show: add multiple tags to single message: `notmuch-show-add-tag' (+) can add multiple tags to a message. - New subtest notmuch-show: remove multiple tags from single message: `notmuch-show-remove-tag' (-) can remove multiple tags from a message. --- Would be nice to have another patch that moves notmuch-show tests to emacs-show file. TL;DR: It's on my todo list. Yeah, the Emacs test series *as a whole* desperately needs some reorganizing, not in the least because it's still severely lacking in coverage. Some more structure/consistency would considerably increase the feasibility (or at least reduce the PITAness...) of filling in the numerous blanks and reducing duplication of effort (regarding both hard- and wetware based cycles), as well as increasing the likelihood that developers (not looking in any specific direction) serve their code with a side dish of tests. Ideally (IMHO), it would be split up into separate files by mode, i.e. `notmuch-hello', `notmuch-search', `notmuch-show', `notmuch-{message,mua}', and those can be further divided into sections like navigation, tagging, visibility stuff, hooks, ... There's probably quite a number of implicit interdependencies that need to be taken care of though, and I (as well as others) still have a bunch of tests waiting to be applied, so we might want to do this gradually. Regards, Dmitry test/emacs | 16 ++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..ec1dbb0 100755 --- a/test/emacs +++ b/test/emacs @@ -112,18 +112,30 @@ test_emacs (notmuch-search \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) -test_begin_subtest Add tag from notmuch-show view +test_begin_subtest notmuch-show: add single tag to single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \+tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread) -test_begin_subtest Remove tag from notmuch-show view +test_begin_subtest notmuch-show: remove single tag from single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \-tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) +test_begin_subtest notmuch-show: add multiple tags to single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \+tag1-from-show-view +tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag1-from-show-view tag2-from-show-view unread) + +test_begin_subtest notmuch-show: remove multiple tags from single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \-tag1-from-show-view -tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH 4/6] emacs: add predicate arg to `notmuch-show-mapc'
On Fri, 24 Feb 2012 14:39:41 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:09:12 +0100, Pieter Praet pie...@praet.org wrote: * emacs/notmuch-show.el (notmuch-show-mapc): Only call FUNCTION if new argument PREDICATE is satisfied. Also correct original docstring: 's/thread/buffer/'. (notmuch-show-get-messages-ids): Update wrt changes to `notmuch-show-mapc'. (notmuch-show-tag-all): Update wrt changes to `notmuch-show-mapc'. --- emacs/notmuch-show.el | 15 --- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..5fc0e43 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1272,13 +1272,14 @@ (defun notmuch-show-goto-message-previous () (notmuch-show-move-to-message-top) t)) -(defun notmuch-show-mapc (function) - Iterate through all messages in the current thread with -`notmuch-show-goto-message-next' and call FUNCTION for side -effects. +(defun notmuch-show-mapc (predicate function) Please make PREDICATE optional to avoid giving t when it is not needed. Done. I would expect PREDICATE to be a function, [...] Well, it *can* be a function actually (see later usage in e.g. `notmuch-show-get-messages-ids' [1]), but should be provided as a form instead of as a quoted symbol. [...] but perhaps the way you implemented it is common in Emacs. Far from it, apparently. I did it that way to prevent `funcall' from choking on t/nil, which -in retrospect- was rather shortsighted... I've used a more sensible approach in v2 [2]. Regards, Dmitry + Iterate through all messages in the current buffer with +`notmuch-show-goto-message-next'. If PREDICATE is satisfied, +call FUNCTION for side effects. (save-excursion (goto-char (point-min)) -(loop do (funcall function) +(loop do (if (eval predicate) +(funcall function)) while (notmuch-show-goto-message-next ;; Functions relating to the visibility of messages and their @@ -1336,7 +1337,7 @@ (defun notmuch-show-get-message-id () (defun notmuch-show-get-messages-ids () Return all message ids of messages in the current thread. (let ((message-ids)) -(notmuch-show-mapc +(notmuch-show-mapc t (lambda () (push (notmuch-show-get-message-id) message-ids))) message-ids)) @@ -1633,7 +1634,7 @@ (defun notmuch-show-tag-all (rest tag-changes) 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-search) tag-changes) - (notmuch-show-mapc + (notmuch-show-mapc t (lambda () (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) -- 1.7.8.1 Peace -- Pieter [1] id:1330038554-10347-6-git-send-email-pie...@praet.org [2] id:1330122640-18895-5-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH 5/6] emacs: simplify `notmuch-show-get-messages-ids{, -search}'
On Fri, 24 Feb 2012 14:42:53 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:09:13 +0100, Pieter Praet pie...@praet.org wrote: * emacs/notmuch-show.el (notmuch-show-get-messages-ids): If provided with optional arg SEPARATOR, return a string consisting of all Message-Id's, separated by SEPARATOR. Also improve original docstring wrt default return value. (notmuch-show-get-messages-ids-search): Removed, as its functionality is now in `notmuch-show-get-messages-ids'. (notmuch-show-tag-all): Call `notmuch-show-get-messages-ids' with SEPARATOR arg instead of `notmuch-show-get-messages-ids-search'. --- There is another similar case in notmuch.el: `notmuch-show-get-messages-ids' and `notmuch-show-get-messages-ids-search'. There may be more. Please change them as well. You mean `notmuch-search-find-thread-id-region{,-search}' ? They aren't relevant to this series, so I'll submit a separate patch for that (later). A quick `rgrep' doesn't reveal any others, but if you happen to stumble across any, feel free to point them out. Regards, Dmitry emacs/notmuch-show.el | 18 +- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 5fc0e43..4b37c77 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1334,17 +1334,17 @@ (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 () - Return all message ids of messages in the current thread. +(defun notmuch-show-get-messages-ids (optional separator) + 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. (let ((message-ids)) (notmuch-show-mapc t (lambda () (push (notmuch-show-get-message-id) message-ids))) -message-ids)) - -(defun notmuch-show-get-messages-ids-search () - Return a search string for all message ids of messages in the -current thread. - (mapconcat 'identity (notmuch-show-get-messages-ids) or )) +(if separator + (mapconcat 'identity message-ids separator) + message-ids))) ;; dme: Would it make sense to use a macro for many of these? @@ -1633,7 +1633,7 @@ (defun notmuch-show-tag-all (rest tag-changes) 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-search) tag-changes) + (apply 'notmuch-tag (notmuch-show-get-messages-ids or ) tag-changes) (notmuch-show-mapc t (lambda () (let* ((current-tags (notmuch-show-get-tags)) -- 1.7.8.1 Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH 6/6] emacs: `notmuch-show-tag-all' sans prefix arg only tags open messages
On Fri, 24 Feb 2012 14:47:30 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:09:14 +0100, Pieter Praet pie...@praet.org wrote: * emacs/notmuch-show.el (notmuch-show-get-messages-ids): New optional argument ONLY-OPEN. If non-nil, only return Message-Id's for messages which are currently visible. (notmuch-show-tag-all): New optional argument IGNORE-VISIBILITY, of which the inverse is passed as ONLY-OPEN argument to `notmuch-show-get-messages-ids': If called with a prefix arg, affect *all* messages in the current buffer. Otherwise, only change tags of visible messages. (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 | 28 test/emacs|1 - 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 4b37c77..4499fcd 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1334,13 +1334,17 @@ (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 only-open separator) Return a list of Message-Id's of all messages in the current buffer. +If optional argument ONLY-OPEN is non-nil, only return +Message-Id's for messages which are currently visible. + If provided with optional argument SEPARATOR, return a string instead, consisting of all Message-Id's separated by SEPARATOR. (let ((message-ids)) -(notmuch-show-mapc t +(notmuch-show-mapc + `(if only-open (notmuch-show-message-visible-p) t) How about changing ONLY-OPEN to a general optional PREDICATE argument and pass it as is to `notmuch-show-mapc'? Please make it the last argument. Done. Regards, Dmitry (lambda () (push (notmuch-show-get-message-id) message-ids))) (if separator (mapconcat 'identity message-ids separator) @@ -1628,13 +1632,21 @@ (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 (optional ignore-visibility rest tag-changes) + Change tags of all open messages in the current buffer. + +If optional arg IGNORE-VISIBILITY is non-nil, change tags of +*all* messages in the current buffer, independent of their +visibility. 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) - (notmuch-show-mapc t + (interactive (cons current-prefix-arg +(notmuch-read-tag-changes nil notmuch-show-thread-id))) + (apply 'notmuch-tag +(notmuch-show-get-messages-ids (not ignore-visibility) or ) +tag-changes) + (notmuch-show-mapc + `(if ignore-visibility t (notmuch-show-message-visible-p)) (lambda () (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) @@ -1719,7 +1731,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 t (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 644ef59..c286ff5 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 Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 14:30:29 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet pie...@praet.org wrote: On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner da...@tethera.net wrote: On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: Changes: v4: * rebased on master, no conflicts so no need for another review I pushed this series. Maybe this was discussed already, but I think ideally * would apply only to open messages. So consider that a feature request if someone is looking for a project. How about if '*' applies to all messages (as it currently does), but 'C-u *' only to open messages? That would make more sense IMHO. But, conforming to your original request, I've implemented the inverse. I personally do like '*' as is and do not want to change it's behavior. Though I am not against adding a prefix argument for it. Same here. In v2 [1], '*' tags all and 'C-u *' tags only open. One can always swap the keybindings if so inclined. Regards, Dmitry Patches follow. d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter [1] id:1330122640-18895-1-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 14:33:35 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 14:30:29 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Fri, 24 Feb 2012 00:07:27 +0100, Pieter Praet pie...@praet.org wrote: On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner da...@tethera.net wrote: On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: Changes: v4: * rebased on master, no conflicts so no need for another review I pushed this series. Maybe this was discussed already, but I think ideally * would apply only to open messages. So consider that a feature request if someone is looking for a project. How about if '*' applies to all messages (as it currently does), but 'C-u *' only to open messages? That would make more sense IMHO. But, conforming to your original request, I've implemented the inverse. I personally do like '*' as is and do not want to change it's behavior. Though I am not against adding a prefix argument for it. Also can you please send new patches (and patch series) in a new separate thread? If they are related to another thread, you can add a reference. But having multiple patch series with multiple versions in a single thread is very confusing IMO. Since I've already soiled this thread with my initial series, I've sent v2 [1] in reply to David's request as well, but will make sure to start a fresh thread from now on. Regards, Dmitry Regards, Dmitry Patches follow. d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter Thanks for all your comments! Peace -- Pieter [1] id:1330122640-18895-1-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Fri, 24 Feb 2012 23:38:20 +0100, Pieter Praet pie...@praet.org wrote: [...] Same here. In v2 [1], '*' tags all and 'C-u *' tags only open. One can always swap the keybindings if so inclined. Did I really say that? There's only a single keybinding, so swap it with *what* ?!? Itself ? This should work though: #+begin_src emacs-lisp (define-key notmuch-show-mode-map * (lambda (prefix rest tag-changes) (interactive (cons (not current-prefix-arg) (notmuch-read-tag-changes nil notmuch-show-thread-id))) (apply 'notmuch-show-tag-all prefix tag-changes))) #+end_src [...] Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v5 00/12] emacs: more flexible and consistent tagging operations
On Wed, 08 Feb 2012 11:58:32 -0400, David Bremner da...@tethera.net wrote: On Sun, 5 Feb 2012 11:13:41 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: Changes: v4: * rebased on master, no conflicts so no need for another review I pushed this series. Maybe this was discussed already, but I think ideally * would apply only to open messages. So consider that a feature request if someone is looking for a project. How about if '*' applies to all messages (as it currently does), but 'C-u *' only to open messages? That would make more sense IMHO. But, conforming to your original request, I've implemented the inverse. Patches follow. d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 1/6] test: emacs: new tests notmuch-show: {add, remove} multiple tags {to, from} single message
* test/emacs: - Rename subtests {Add,Remove} tag from notmuch-show view to notmuch-show: {add,remove} single tag {to,from} single message to be consistent with the following tests. - New subtest notmuch-show: add multiple tags to single message: `notmuch-show-add-tag' (+) can add multiple tags to a message. - New subtest notmuch-show: remove multiple tags from single message: `notmuch-show-remove-tag' (-) can remove multiple tags from a message. --- test/emacs | 16 ++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..ec1dbb0 100755 --- a/test/emacs +++ b/test/emacs @@ -112,18 +112,30 @@ test_emacs (notmuch-search \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) -test_begin_subtest Add tag from notmuch-show view +test_begin_subtest notmuch-show: add single tag to single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \+tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag-from-show-view unread) -test_begin_subtest Remove tag from notmuch-show view +test_begin_subtest notmuch-show: remove single tag from single message test_emacs (notmuch-show \$os_x_darwin_thread\) (execute-kbd-macro \-tag-from-show-view\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) +test_begin_subtest notmuch-show: add multiple tags to single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \+tag1-from-show-view +tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox tag1-from-show-view tag2-from-show-view unread) + +test_begin_subtest notmuch-show: remove multiple tags from single message +test_emacs (notmuch-show \$os_x_darwin_thread\) + (execute-kbd-macro \-tag1-from-show-view -tag2-from-show-view\) +output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) +test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 2/6] test: emacs: new test notmuch-show: change tags of all messages in current buffer
* test/emacs: New subtest notmuch-show: change tags of all messages in current buffer: `notmuch-show-tag-all' (*) changes tags of *all* messages in current buffer. --- test/emacs | 15 +++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index ec1dbb0..d2dbafc 100755 --- a/test/emacs +++ b/test/emacs @@ -136,6 +136,21 @@ test_emacs (notmuch-show \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) +test_begin_subtest notmuch-show: change tags of all messages in current buffer +query=$os_x_darwin_thread +filter=from:Jiang +add_tag=notmuch-show-tag-all +del_tag=inbox +count_total=$(notmuch count -- $query) # = 4 +count_match=$(notmuch count -- $query AND $filter) # = 2 +test_emacs (notmuch-search \$query AND $filter\) +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \*+$add_tag -$del_tag\) +count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_tag) +notmuch tag +$del_tag -$add_tag -- $query # revert tag changes +test_expect_equal $count_changed $count_total # assert that CHANGED == TOTAL + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 3/6] test: emacs: `notmuch-show-tag-all' sans prefix arg should only tag open messages
* test/emacs: - Alter subtest notmuch-show: change tags of all messages in current buffer: Pass a prefix arg to `notmuch-show-tag-all' (*). - New subtest notmuch-show: change tags of open messages in current buffer: When called *without* a prefix arg, `notmuch-show-tag-all' (*) should only change the tags of *open* messages. Currently broken, fix follows later. --- test/emacs | 18 +- 1 files changed, 17 insertions(+), 1 deletions(-) diff --git a/test/emacs b/test/emacs index d2dbafc..644ef59 100755 --- a/test/emacs +++ b/test/emacs @@ -146,11 +146,27 @@ count_match=$(notmuch count -- $query AND $filter) # = 2 test_emacs (notmuch-search \$query AND $filter\) (notmuch-test-wait) (notmuch-search-show-thread) -(execute-kbd-macro \*+$add_tag -$del_tag\) +(execute-kbd-macro \*+$add_tag -$del_tag\) count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_tag) 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 +del_tag=inbox +count_total=$(notmuch count -- $query) # = 4 +count_match=$(notmuch count -- $query AND $filter) # = 2 +test_emacs (notmuch-search \$query AND $filter\) +(notmuch-test-wait) +(notmuch-search-show-thread) +(execute-kbd-macro \*+$add_tag -$del_tag\) +count_changed=$(notmuch count -- $query AND tag:$add_tag AND NOT tag:$del_tag) +notmuch tag +$del_tag -$add_tag -- $query # revert tag changes +test_expect_equal $count_changed $count_match # assert that CHANGED == MATCHING + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 6/6] emacs: `notmuch-show-tag-all' sans prefix arg only tags open messages
* emacs/notmuch-show.el (notmuch-show-get-messages-ids): New optional argument ONLY-OPEN. If non-nil, only return Message-Id's for messages which are currently visible. (notmuch-show-tag-all): New optional argument IGNORE-VISIBILITY, of which the inverse is passed as ONLY-OPEN argument to `notmuch-show-get-messages-ids': If called with a prefix arg, affect *all* messages in the current buffer. Otherwise, only change tags of visible messages. (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 | 28 test/emacs|1 - 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 4b37c77..4499fcd 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1334,13 +1334,17 @@ (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 only-open separator) Return a list of Message-Id's of all messages in the current buffer. +If optional argument ONLY-OPEN is non-nil, only return +Message-Id's for messages which are currently visible. + If provided with optional argument SEPARATOR, return a string instead, consisting of all Message-Id's separated by SEPARATOR. (let ((message-ids)) -(notmuch-show-mapc t +(notmuch-show-mapc + `(if only-open (notmuch-show-message-visible-p) t) (lambda () (push (notmuch-show-get-message-id) message-ids))) (if separator (mapconcat 'identity message-ids separator) @@ -1628,13 +1632,21 @@ (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 (optional ignore-visibility rest tag-changes) + Change tags of all open messages in the current buffer. + +If optional arg IGNORE-VISIBILITY is non-nil, change tags of +*all* messages in the current buffer, independent of their +visibility. 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) - (notmuch-show-mapc t + (interactive (cons current-prefix-arg +(notmuch-read-tag-changes nil notmuch-show-thread-id))) + (apply 'notmuch-tag +(notmuch-show-get-messages-ids (not ignore-visibility) or ) +tag-changes) + (notmuch-show-mapc + `(if ignore-visibility t (notmuch-show-message-visible-p)) (lambda () (let* ((current-tags (notmuch-show-get-tags)) (new-tags (notmuch-update-tags current-tags tag-changes))) @@ -1719,7 +1731,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 t (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 644ef59..c286ff5 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 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] emacs: correct `notmuch-search-mode's docstring wrt `notmuch-search-tag-all'
* emacs/notmuch.el (notmuch-search-mode): `notmuch-search-tag-all' currently uses the current query string instead of `notmuch-search-find-thread-id-region-search', which might cause a race condition. --- emacs/notmuch.el |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index f851c6f..0a9fffd 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -435,8 +435,9 @@ (defun notmuch-search-mode () Pressing \\[notmuch-search-show-thread] on any line displays that thread. The '\\[notmuch-search-add-tag]' and '\\[notmuch-search-remove-tag]' keys can be used to add or remove tags from a thread. The '\\[notmuch-search-archive-thread]' key is a convenience for archiving a thread (removing the \"inbox\" -tag). The '\\[notmuch-search-tag-all]' key can be used to add or remove a tag from all -threads in the current buffer. +tag). The '\\[notmuch-search-tag-all]' key can be used to add and/or remove tags from all +messages (as opposed to threads) that match the current query. Use with caution, as this +will also tag matching messages that arrived *after* constructing the buffer. Other useful commands are '\\[notmuch-search-filter]' for filtering the current search based on an additional query string, '\\[notmuch-search-filter-by-tag]' for filtering to include -- 1.7.8.1
[PATCH] emacs: Mention race condition safety in user visible documentation
On Tue, 21 Feb 2012 10:15:08 +0100, Michal Sojka wrote: > [...] > OK, at least one supporter here :) The updated patch follows: > > -- >8 -- > Subject: [PATCH] emacs: Clarify description of thread manipulating functions > > It is not clear whether the term "thread" refers to the thread in the > database or to the thread currently shown in a buffer. Those two > meanings may refer to different sets of messages, e.g. when a new email > is added to the database while the buffer shows the state before the new > email arrived. > > This patch replaces the term thread with the term current buffer, which > is hopefully less ambiguous. > --- +1 Also, the inverse is true for the comment about `notmuch-search-tag-all' in `notmuch-search-mode's docstring. Patch follows. Peace -- Pieter
[PATCH v3 0/3] Fix refreshing with state and make it the default
On Tue, 21 Feb 2012 10:42:30 -0500, Austin Clements wrote: > Third time's the charm. This fixes show refresh to not mark anything > read when keeping state while refreshing and makes it the default. > LGTM. Peace -- Pieter
[PATCH v3] test: emacs: new test "notmuch-search: change tags of all matching messages"
`notmuch-search-tag-all' (bound to "*") adds and removes tags to/from all messages which match the query used to populate the current search buffer. --- test/emacs | 38 ++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..d64dcd0 100755 --- a/test/emacs +++ b/test/emacs @@ -124,6 +124,44 @@ test_emacs "(notmuch-show \"$os_x_darwin_thread\") output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread)" + +test_begin_subtest "notmuch-search: change tags of all matching messages" +old_tag="inbox" +new_tag="xobni" +filter="AND from:cworth" + +# Get initial tag counts and prevent false positives/negatives +old_tag_count_1=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_1=$(notmuch count tag:"${new_tag}" "${filter}") +test "${old_tag_count_1}" = "0" && old_tag_count_1="Need >0 matches!" +test "${new_tag_count_1}" = "0" || new_tag_count_1="Need 0 matches!" + +# Change tags of all matching messages and get tag counts +test_emacs "(notmuch-search \"tag:${old_tag} ${filter}\") + (notmuch-test-wait) + (notmuch-search-tag-all \"-${old_tag}\" \"+${new_tag}\")" +old_tag_count_2=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_2=$(notmuch count tag:"${new_tag}" "${filter}") + +# Revert tag changes and get tag counts +test_emacs "(notmuch-search \"tag:${new_tag} ${filter}\") + (notmuch-test-wait) + (notmuch-search-tag-all \"+${old_tag}\" \"-${new_tag}\")" +old_tag_count_3=$(notmuch count tag:"${old_tag}" "${filter}") +new_tag_count_3=$(notmuch count tag:"${new_tag}" "${filter}") + +# ... and verify the results +output=" +before: old:${old_tag_count_1} new:${new_tag_count_1} +after:old:${old_tag_count_2} new:${new_tag_count_2} +restored: old:${old_tag_count_3} new:${new_tag_count_3}" +expected=" +before: old:${old_tag_count_1} new:0 +after:old:0 new:${old_tag_count_1} +restored: old:${old_tag_count_1} new:0" +test_expect_equal "$output" "$expected" + + test_begin_subtest "Message with .. in Message-Id:" add_message [id]=123..456 at example '[subject]="Message with .. in Message-Id"' test_emacs '(notmuch-search "id:\"123..456 at example\"") -- 1.7.8.1
[PATCH v2 4/4] test: emacs: new test "notmuch-search: change tags of all matching messages"
On Mon, 20 Feb 2012 16:25:05 +0400, Dmitry Kurochkin wrote: > On Sun, 19 Feb 2012 21:38:28 +0100, Pieter Praet wrote: > > `notmuch-search-tag-all' (bound to "*") adds and removes tags > > to/from all messages which match the query used to populate the > > current search buffer. > > LGTM. But since you will need to send a new version to address Tomi's > comments anyway, below are few minor comments. > > Regards, > Dmitry > > > --- > > test/emacs | 32 > > 1 files changed, 32 insertions(+), 0 deletions(-) > > > > diff --git a/test/emacs b/test/emacs > > index b0fb760..1db8540 100755 > > --- a/test/emacs > > +++ b/test/emacs > > @@ -124,6 +124,38 @@ test_emacs "(notmuch-show \"$os_x_darwin_thread\") > > output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) > > test_expect_equal "$output" "thread:XXX 2009-11-18 [4/4] Jjgod Jiang, > > Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues > > (inbox unread)" > > > > +test_begin_subtest "notmuch-search: change tags of all matching messages" > > +old_tag="inbox" > > +new_tag="xobni" > > +filter="AND from:cworth" > > +# Get initial tag counts and prevent false positives/negatives > > +old_tag_count_1=$(notmuch count tag:"${old_tag}" "${filter}") > > +new_tag_count_1=$(notmuch count tag:"${new_tag}" "${filter}") > > +test "${old_tag_count_1}" == "0" && old_tag_count_1="Need 1+ matches!" > > Consider s/1+/>0/. > > > +test "${new_tag_count_1}" == "0" || new_tag_count_1="Need 0 matches!" > > +# Change tags of all matching messages and get tag counts > > +test_emacs "(notmuch-search \"tag:${old_tag} ${filter}\") > > + (notmuch-test-wait) > > + (notmuch-search-tag-all \"-${old_tag}\" \"+${new_tag}\")" > > +old_tag_count_2=$(notmuch count tag:"${old_tag}" "${filter}") > > +new_tag_count_2=$(notmuch count tag:"${new_tag}" "${filter}") > > +# Revert tag changes and get tag counts > > +test_emacs "(notmuch-search \"tag:${new_tag} ${filter}\") > > + (notmuch-test-wait) > > + (notmuch-search-tag-all \"+${old_tag}\" \"-${new_tag}\")" > > +old_tag_count_3=$(notmuch count tag:"${old_tag}" "${filter}") > > +new_tag_count_3=$(notmuch count tag:"${new_tag}" "${filter}") > > +# ... and verify the results > > +output=" > > +before: old:${old_tag_count_1} new:${new_tag_count_1} > > +after:old:${old_tag_count_2} new:${new_tag_count_2} > > +restored: old:${old_tag_count_3} new:${new_tag_count_3}" > > +expected=" > > +before: old:${old_tag_count_1} new:0 > > +after:old:0 new:${old_tag_count_1} > > +restored: old:${old_tag_count_1} new:0" > > +test_expect_equal "$output" "$expected" > > + > > I would add a newline before every commented block. > Agreed, on all accounts. > Regards, > Dmitry > > > test_begin_subtest "Message with .. in Message-Id:" > > add_message [id]=123..456 at example '[subject]="Message with .. in > > Message-Id"' > > test_emacs '(notmuch-search "id:\"123..456 at example\"") > > -- > > 1.7.8.1 > > Peace -- Pieter
[PATCH v2 4/4] test: emacs: new test "notmuch-search: change tags of all matching messages"
On Sun, 19 Feb 2012 23:08:30 +0200, Tomi Ollila wrote: > On Sun, 19 Feb 2012 21:38:28 +0100, Pieter Praet wrote: > > `notmuch-search-tag-all' (bound to "*") adds and removes tags > > to/from all messages which match the query used to populate the > > current search buffer. > > --- > > test/emacs | 32 > > 1 files changed, 32 insertions(+), 0 deletions(-) > > > > [ ... ] > > > +old_tag_count_1=$(notmuch count tag:"${old_tag}" "${filter}") > > +new_tag_count_1=$(notmuch count tag:"${new_tag}" "${filter}") > > +test "${old_tag_count_1}" == "0" && old_tag_count_1="Need 1+ matches!" > > +test "${new_tag_count_1}" == "0" || new_tag_count_1="Need 0 matches!" > > +# Change tags of all matching messages and get tag counts > > +test_emacs "(notmuch-search \"tag:${old_tag} ${filter}\") > > Small nit: string equality comparison operator is '='. > Use grep '==' test/* to confirm (or man test). > Argh... Nice catch! > [ ... ] > > Tomi Peace -- Pieter
[PATCH v2 3/4] test: emacs: new test "notmuch-search: when reply is sent, parent message should be tagged 'replied'"
On Mon, 20 Feb 2012 16:20:28 +0400, Dmitry Kurochkin wrote: > On Sun, 19 Feb 2012 21:38:27 +0100, Pieter Praet wrote: > > When a message is replied to, it should be tagged `replied'. > > --- > > test/emacs |5 + > > 1 files changed, 5 insertions(+), 0 deletions(-) > > > > diff --git a/test/emacs b/test/emacs > > index 0f4f42b..b0fb760 100755 > > --- a/test/emacs > > +++ b/test/emacs > > @@ -314,6 +314,11 @@ Reply to a message via Emacs with fake SMTP > > EOF > > test_expect_equal_file OUTPUT EXPECTED > > > > +test_begin_subtest "notmuch-search: when reply is sent, the parent message > > should be tagged 'replied'" > > +# depends on subtest "notmuch-search: replying to a thread (sending)" > > +output=$(notmuch search 'tag:replied' | notmuch_search_sanitize) > > Add subject:"testing message sent via SMTP" to the query to avoid > potential collisions with other tests. > Good point. Depends on the previous test though, which is postponed [1], so I won't submit a v3 of this for the time being. > Regards, > Dmitry > > > +test_expect_equal "$output" "thread:XXX 2000-01-01 [1/2] Notmuch Test > > Suite; Testing message sent via SMTP (inbox replied)" > > + > > test_begin_subtest "Quote MML tags in reply" > > message_id='test-emacs-mml-quoting at message.id' > > add_message [id]="$message_id" \ > > -- > > 1.7.8.1 > > Peace -- Pieter [1] id:"87k43e8zxb.fsf at praet.org"
[PATCH v2 2/4] test: emacs: new test "notmuch-search: replying to a thread (sending)"
On Mon, 20 Feb 2012 16:44:32 +0400, Dmitry Kurochkin wrote: > On Sun, 19 Feb 2012 21:38:26 +0100, Pieter Praet wrote: > > As pointed out in the previous commit, the test for replying from > > within Emacs didn't actually submit the reply. This one does. > > --- > > test/emacs | 41 + > > 1 files changed, 41 insertions(+), 0 deletions(-) > > > > diff --git a/test/emacs b/test/emacs > > index 308d749..0f4f42b 100755 > > --- a/test/emacs > > +++ b/test/emacs > > @@ -273,6 +273,47 @@ On 01 Jan 2000 12:00:00 -, Notmuch Test Suite > > w > > EOF > > test_expect_equal_file OUTPUT EXPECTED > > > > +test_begin_subtest "notmuch-search: replying to a thread (sending)" > > +$TEST_DIRECTORY/smtp-dummy sent_message & > > +smtp_dummy_pid=$! > > +test_emacs \ > > +'(let ((message-send-mail-function '\''message-smtpmail-send-it) > > + (smtpmail-smtp-server "localhost") > > + (smtpmail-smtp-service "25025")) > > + (notmuch-search "subject:\"testing message sent via SMTP\"") > > + (notmuch-test-wait) > > + (notmuch-search-reply-to-thread) > > + (end-of-buffer) > > + (newline) > > + (insert "Reply to a message via Emacs with fake SMTP") > > + (message-send-and-exit))' >/dev/null 2>&1 > > +wait ${smtp_dummy_pid} > > +notmuch new >/dev/null > > +sed \ > > +-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX > > Emacs/XXX,' \ > > +-e s',^Message-ID: <.*>$,Message-ID: ,' \ > > +-e s',^In-Reply-To: <.*>$,In-Reply-To: ,' \ > > +-e s',^References: <.*>$,References: ,' \ > > +-e s',^Date: .*$,Date: Fri\, 29 Mar 1974 10:05:00 -,' < > > sent_message >OUTPUT > > This sed command is a (partial) copy past from "Sending a message via > (fake) SMTP" test. [...] Aye, that's the one. > [...] I suggest adding notmuch_sent_message_sanitize > function which would replace common headers with XXX. > > Replace Date with XXX for Date for consistency with other headers, > AFAICT a valid date value is not needed here. > Agreed. Will have another look at it when Tomi's refactoring is done [1,2]. > Regards, > Dmitry > > > +cat <EXPECTED > > +From: Notmuch Test Suite > > +To: user at example.com > > +Subject: Re: Testing message sent via SMTP > > +In-Reply-To: > > +References: > > +User-Agent: Notmuch/XXX Emacs/XXX > > +Date: Fri, 29 Mar 1974 10:05:00 - > > +Message-ID: > > +MIME-Version: 1.0 > > +Content-Type: text/plain; charset=us-ascii > > + > > +On 01 Jan 2000 12:00:00 -, Notmuch Test Suite > notmuchmail.org> wrote: > > +> This is a test that messages are sent via SMTP > > + > > +Reply to a message via Emacs with fake SMTP > > +EOF > > +test_expect_equal_file OUTPUT EXPECTED > > + > > test_begin_subtest "Quote MML tags in reply" > > message_id='test-emacs-mml-quoting at message.id' > > add_message [id]="$message_id" \ > > -- > > 1.7.8.1 > > Peace -- Pieter [1] id:"m239a6wn4p.fsf at guru.guru-group.fi" [2] id:"87mx8a900t.fsf at praet.org"
[PATCH v2 2/4] test: emacs: new test "notmuch-search: replying to a thread (sending)"
On Sun, 19 Feb 2012 23:04:38 +0200, Tomi Ollila wrote: > On Sun, 19 Feb 2012 21:38:26 +0100, Pieter Praet wrote: > > As pointed out in the previous commit, the test for replying from > > within Emacs didn't actually submit the reply. This one does. > > --- > > test/emacs | 41 + > > 1 files changed, 41 insertions(+), 0 deletions(-) > > > > diff --git a/test/emacs b/test/emacs > > index 308d749..0f4f42b 100755 > > --- a/test/emacs > > +++ b/test/emacs > > @@ -273,6 +273,47 @@ On 01 Jan 2000 12:00:00 -, Notmuch Test Suite > > w > > EOF > > test_expect_equal_file OUTPUT EXPECTED > > > > +test_begin_subtest "notmuch-search: replying to a thread (sending)" > > +$TEST_DIRECTORY/smtp-dummy sent_message & > > +smtp_dummy_pid=$! > > +test_emacs \ > > +'(let ((message-send-mail-function '\''message-smtpmail-send-it) > > + (smtpmail-smtp-server "localhost") > > + (smtpmail-smtp-service "25025")) > > + (notmuch-search "subject:\"testing message sent via SMTP\"") > > + (notmuch-test-wait) > > + (notmuch-search-reply-to-thread) > > + (end-of-buffer) > > + (newline) > > + (insert "Reply to a message via Emacs with fake SMTP") > > + (message-send-and-exit))' >/dev/null 2>&1 > > +wait ${smtp_dummy_pid} > > +notmuch new >/dev/null > > The above part smells like CopyPasteProgramming; (old version of) > emacs_deliver_message copied (old as this version is lacking > opportunistic quit). > Nope, "Sending a message via (fake) SMTP", around 2011-05 to be exact [1]. My main intention was to get a bugfix [2] applied (still isn't BTW), which might have been expedited by providing a test which checks whether messages are properly tagged 'replied' when and *only* when applicable, and for that I needed a quick way to test replying to a thread, so I lazily repurposed an existing test. Not much point in reinventing the wheel, is there? Still haven't gotten around to writing the actual test to demonstrate that messages are tagged 'replied' prematurely, but this should be the gist of it: #+begin_src emacs-lisp ;; ask for confirmation (using `y-or-n-p') before sending (let ((message-confirm-send t)) ;; temporarily redefine `y-or-n-p', immediately returns nil (flet ((y-or-n-p ( args) nil)) ;; then try to send message (which will fail) (message-send-and-exit))) ;; Parent message should NOT be tagged 'replied' now, yet it is, ;; since `notmuch-message-mark-replied' is added to `message-send-hook' ;; instead of `message-sent-hook'. #+end_src > Maybe the functionality of emacs_deliver_message needs to be > split into 3 parts: initialization, sending and finalization. > then other uses can use initialization and finalization parts > and provide their own sending part. > That would be *much* better, indeed. > I have work-in-progress code for initialization and finalization > parts of that and I don't want to do the changes in 2 places... > OK. I'll mark this patch (and the next, which depends on it) as 'wip', and pick them up again when your refactoring efforts hit mainline. > Tomi Peace -- Pieter [1] id:"1305299270-4316-1-git-send-email-pieter at praet.org" [2] id:"1305275652-22956-1-git-send-email-pieter at praet.org"
[PATCH v2 7/7] emacs: `notmuch-show-toggle-visibility-messages' with prefix arg filters by tag
* emacs/notmuch-show.el (notmuch-show-toggle-visibility-messages): When provided with a prefix arg, prompt the user for a tag. Show all messages that have it and hide those that don't. --- emacs/notmuch-show.el | 13 ++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 82d4265..b5e482b 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -38,6 +38,7 @@ (declare-function notmuch-call-notmuch-process "notmuch" ( args)) (declare-function notmuch-fontify-headers "notmuch" nil) +(declare-function notmuch-select-tag-with-completion "notmuch" (prompt search-terms)) (declare-function notmuch-read-tag-changes "notmuch" ( initial-input search-terms)) (declare-function notmuch-search-next-thread "notmuch" nil) (declare-function notmuch-search-show-thread "notmuch" nil) @@ -1670,13 +1671,19 @@ (defun notmuch-show-toggle-visibility-message () (defun notmuch-show-toggle-visibility-messages () "Toggle the visibility of all messages in the current thread. -If the current message is visible, hide all messages -- and vice versa." +If the current message is visible, hide all messages -- and vice versa. + +With a prefix argument, prompt for a tag and only show messages which have it." (interactive) - (let ((visible-p (notmuch-show-message-visible-p))) + (let ((visible-p (notmuch-show-message-visible-p)) + (filter (if current-prefix-arg + (notmuch-select-tag-with-completion "Filter by tag: " (notmuch-show-mapc (lambda () (notmuch-show-message-visible (notmuch-show-get-message-properties) -(not visible-p) +(if current-prefix-arg +(member filter (notmuch-show-get-tags)) + (not visible-p)) ;; Put the current message properly into focus, but don't ;; obscure the presence of previous messages in the thread. -- 1.7.8.1
[PATCH v2 6/7] emacs: make `notmuch-show-toggle-visibility-messages' live up to its new name
* emacs/notmuch-show.el (notmuch-show-toggle-visibility-messages): Toggle visibility of all messages in current thread based on visibility of the current message, instead of setting visibility based on whether or not a prefix arg was supplied. Also move current buffer line to the 2nd window line so the current message is put properly into focus, whilst making the presence of previous messages in the thread obvious. Same functionality, less effort (reaching for 'C-u' is a pain)... --- emacs/notmuch-show.el | 20 test/emacs|6 +++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index e4d1f9c..82d4265 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1669,15 +1669,19 @@ (defun notmuch-show-toggle-visibility-message () (force-window-update)) (defun notmuch-show-toggle-visibility-messages () - "Set the visibility all of the messages in the current thread. -By default make all of the messages visible. With a prefix -argument, hide all of the messages." + "Toggle the visibility of all messages in the current thread. +If the current message is visible, hide all messages -- and vice versa." (interactive) - (save-excursion -(goto-char (point-min)) -(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties) - (not current-prefix-arg)) - until (not (notmuch-show-goto-message-next + (let ((visible-p (notmuch-show-message-visible-p))) +(notmuch-show-mapc + (lambda () (notmuch-show-message-visible +(notmuch-show-get-message-properties) +(not visible-p) + + ;; Put the current message properly into focus, but don't + ;; obscure the presence of previous messages in the thread. + (recenter-top-bottom 1) + (force-window-update)) (defun notmuch-show-next-button () diff --git a/test/emacs b/test/emacs index 29fdec0..5c61743 100755 --- a/test/emacs +++ b/test/emacs @@ -410,14 +410,14 @@ test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden test_begin_subtest "notmuch-show: collapse all messages in thread" test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") - (let ((current-prefix-arg t)) - (notmuch-show-toggle-visibility-messages) - (test-visible-output))' + (notmuch-show-toggle-visibility-messages) + (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-collapsed test_begin_subtest "notmuch-show: uncollapse all messages in thread" test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") (notmuch-show-toggle-visibility-messages) + (notmuch-show-toggle-visibility-messages) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-uncollapsed -- 1.7.8.1
[PATCH v2 5/7] emacs: rename `notmuch-show-open-or-close-all' to `notmuch-show-toggle-visibility-messages'
* emacs/notmuch-show.el (notmuch-show-open-or-close-all): Rename to `notmuch-show-toggle-visibility-messages'. (notmuch-show-mode-map): Update "M-RET" binding wrt renamed `notmuch-show-open-or-close-all'. * test/emacs: Update subtests wrt renamed `notmuch-show-open-or-close-all': - "notmuch-show: collapse all messages in thread" - "notmuch-show: uncollapse all messages in thread" --- emacs/notmuch-show.el |4 ++-- test/emacs|4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 9b879c7..e4d1f9c 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1182,8 +1182,8 @@ (defvar notmuch-show-mode-map (define-key map "p" 'notmuch-show-previous-open-message) (define-key map (kbd "DEL") 'notmuch-show-rewind) (define-key map " " 'notmuch-show-advance-and-archive) - (define-key map (kbd "M-RET") 'notmuch-show-open-or-close-all) (define-key map (kbd "RET") 'notmuch-show-toggle-visibility-message) + (define-key map (kbd "M-RET") 'notmuch-show-toggle-visibility-messages) (define-key map "#" 'notmuch-show-print-message) (define-key map "!" 'notmuch-show-toggle-elide-non-matching) (define-key map "$" 'notmuch-show-toggle-process-crypto) @@ -1668,7 +1668,7 @@ (defun notmuch-show-toggle-visibility-message () (not (plist-get props :message-visible (force-window-update)) -(defun notmuch-show-open-or-close-all () +(defun notmuch-show-toggle-visibility-messages () "Set the visibility all of the messages in the current thread. By default make all of the messages visible. With a prefix argument, hide all of the messages." diff --git a/test/emacs b/test/emacs index 6f14895..29fdec0 100755 --- a/test/emacs +++ b/test/emacs @@ -411,13 +411,13 @@ test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden test_begin_subtest "notmuch-show: collapse all messages in thread" test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") (let ((current-prefix-arg t)) - (notmuch-show-open-or-close-all) + (notmuch-show-toggle-visibility-messages) (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-collapsed test_begin_subtest "notmuch-show: uncollapse all messages in thread" test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") - (notmuch-show-open-or-close-all) + (notmuch-show-toggle-visibility-messages) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-uncollapsed -- 1.7.8.1
[PATCH v2 4/7] emacs: rename `notmuch-show-toggle-message' to `notmuch-show-toggle-visibility-message'
* emacs/notmuch-show.el (notmuch-show-toggle-message): Rename to `notmuch-show-toggle-visibility-message'. (notmuch-show-mode-map): Update "RET" binding wrt renamed `notmuch-show-toggle-message'. * test/emacs: Update subtests wrt renamed `notmuch-show-toggle-message': - "Hiding message in notmuch-show view" - "Hiding message with visible citation in notmuch-show view" - "Refresh modified show buffer" --- emacs/notmuch-show.el |4 ++-- test/emacs|8 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 861018d..9b879c7 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1183,7 +1183,7 @@ (defvar notmuch-show-mode-map (define-key map (kbd "DEL") 'notmuch-show-rewind) (define-key map " " 'notmuch-show-advance-and-archive) (define-key map (kbd "M-RET") 'notmuch-show-open-or-close-all) - (define-key map (kbd "RET") 'notmuch-show-toggle-message) + (define-key map (kbd "RET") 'notmuch-show-toggle-visibility-message) (define-key map "#" 'notmuch-show-print-message) (define-key map "!" 'notmuch-show-toggle-elide-non-matching) (define-key map "$" 'notmuch-show-toggle-process-crypto) @@ -1659,7 +1659,7 @@ (defun notmuch-show-toggle-visibility-headers () (not (plist-get props :headers-visible (force-window-update)) -(defun notmuch-show-toggle-message () +(defun notmuch-show-toggle-visibility-message () "Toggle the visibility of the current message." (interactive) (let ((props (notmuch-show-get-message-properties))) diff --git a/test/emacs b/test/emacs index f17efbd..6f14895 100755 --- a/test/emacs +++ b/test/emacs @@ -371,7 +371,7 @@ test_expect_equal_file OUTPUT EXPECTED test_begin_subtest "Hiding message in notmuch-show view" test_emacs '(notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages @@ -379,7 +379,7 @@ test_begin_subtest "Hiding message with visible citation in notmuch-show view" test_emacs '(notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") (search-forward "Click/Enter to show.") (button-activate (button-at (point))) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages @@ -496,9 +496,9 @@ test_expect_equal_file OUTPUT EXPECTED test_begin_subtest "Refresh modified show buffer" test_subtest_known_broken test_emacs '(notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (notmuch-show-next-message) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output "EXPECTED") (notmuch-show-refresh-view) (test-visible-output)' -- 1.7.8.1
[PATCH v2 3/7] emacs: rename `notmuch-show-toggle-headers' to `notmuch-show-toggle-visibility-headers'
* emacs/notmuch-show.el (notmuch-show-toggle-headers): Rename to `notmuch-show-toggle-visibility-headers'. (notmuch-show-mode-map): Update "h" binding wrt renamed `notmuch-show-toggle-headers'. (notmuch-message-headers): Update docstring wrt renamed `notmuch-show-toggle-headers'. (notmuch-message-headers-visible): Update docstring wrt renamed `notmuch-show-toggle-headers'. Also fixed a small typo. * test/emacs: Update subtest wrt renamed `notmuch-show-toggle-headers': - "notmuch-show: hide message headers (w/ notmuch-show-toggle-headers)" --- emacs/notmuch-show.el | 12 ++-- test/emacs|4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..861018d 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -48,8 +48,8 @@ (defcustom notmuch-message-headers '("Subject" "To" "Cc" "Date") For an open message, all of these headers will be made visible according to `notmuch-message-headers-visible' or can be toggled -with `notmuch-show-toggle-headers'. For a closed message, only -the first header in the list will be visible." +with `notmuch-show-toggle-visibility-headers'. For a closed message, +only the first header in the list will be visible." :type '(repeat string) :group 'notmuch-show) @@ -59,8 +59,8 @@ (defcustom notmuch-message-headers-visible t If this value is non-nil, then all of the headers defined in `notmuch-message-headers' will be visible by default in the display of each message. Otherwise, these headers will be hidden and -`notmuch-show-toggle-headers' can be used to make the visible for -any given message." +`notmuch-show-toggle-visibility-headers' can be used to make them +visible for any given message." :type 'boolean :group 'notmuch-show) @@ -1168,7 +1168,7 @@ (defvar notmuch-show-mode-map (define-key map "v" 'notmuch-show-view-all-mime-parts) (define-key map "c" 'notmuch-show-stash-map) (define-key map "=" 'notmuch-show-refresh-view) - (define-key map "h" 'notmuch-show-toggle-headers) + (define-key map "h" 'notmuch-show-toggle-visibility-headers) (define-key map "*" 'notmuch-show-tag-all) (define-key map "-" 'notmuch-show-remove-tag) (define-key map "+" 'notmuch-show-add-tag) @@ -1650,7 +1650,7 @@ (defun notmuch-show-remove-tag () (interactive) (notmuch-show-tag "-")) -(defun notmuch-show-toggle-headers () +(defun notmuch-show-toggle-visibility-headers () "Toggle the visibility of the current message headers." (interactive) (let ((props (notmuch-show-get-message-properties))) diff --git a/test/emacs b/test/emacs index 7d6e6ee..f17efbd 100755 --- a/test/emacs +++ b/test/emacs @@ -399,12 +399,12 @@ test_emacs \ (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden -test_begin_subtest "notmuch-show: hide message headers (w/ notmuch-show-toggle-headers)" +test_begin_subtest "notmuch-show: hide message headers (w/ notmuch-show-toggle-visibility-headers)" test_emacs \ '(let ((notmuch-message-headers '\''("Subject" "To" "Cc" "Date")) (notmuch-message-headers-visible t)) (notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") - (notmuch-show-toggle-headers) + (notmuch-show-toggle-visibility-headers) (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden -- 1.7.8.1
[PATCH v2 2/7] test: emacs: new tests "notmuch-show: {, un}collapse all messages in thread"
* test/emacs: - New subtest "notmuch-show: collapse all messages in thread": `notmuch-show-open-or-close-all' with prefix arg ("C-u M-RET") collapses all messages in thread. - New subtest "notmuch-show: uncollapse all messages in thread": `notmuch-show-open-or-close-all' without prefix arg ("M-RET") uncollapses all messages in thread. --- test/emacs | 13 +++ ...notmuch-show-thread-with-all-messages-collapsed |4 + ...tmuch-show-thread-with-all-messages-uncollapsed | 79 3 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed create mode 100644 test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed diff --git a/test/emacs b/test/emacs index f9ea1c3..7d6e6ee 100755 --- a/test/emacs +++ b/test/emacs @@ -408,6 +408,19 @@ test_emacs \ (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden +test_begin_subtest "notmuch-show: collapse all messages in thread" +test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") + (let ((current-prefix-arg t)) + (notmuch-show-open-or-close-all) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-collapsed + +test_begin_subtest "notmuch-show: uncollapse all messages in thread" +test_emacs '(notmuch-show "id:f35dbb950911171435ieecd458o853c873e35f4be95 at mail.gmail.com") + (notmuch-show-open-or-close-all) + (test-visible-output)' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-uncollapsed + test_begin_subtest "Stashing in notmuch-show" add_message '[date]="Sat, 01 Jan 2000 12:00:00 -"' \ '[from]="Some One "' \ diff --git a/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed new file mode 100644 index 000..73b0e60 --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed @@ -0,0 +1,4 @@ +Jan Janak (2009-11-17) (inbox) +Subject: [notmuch] What a great idea! + Jan Janak (2009-11-17) (inbox) + Carl Worth (2009-11-18) (inbox unread) diff --git a/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed new file mode 100644 index 000..bd5598e --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed @@ -0,0 +1,79 @@ +Jan Janak (2009-11-17) (inbox) +Subject: [notmuch] What a great idea! +To: notmuch at notmuchmail.org +Date: Tue, 17 Nov 2009 23:35:30 +0100 + +Hello, + +First of all, notmuch is a wonderful idea, both the cmdline tool and +the emacs interface! Thanks a lot for writing it, I was really excited +when I read the announcement today. + +Have you considered sending an announcement to the org-mode mailing list? +http://org-mode.org + +Various ways of searching/referencing emails from emacs were discussed +there several times and none of them were as elegant as notmuch (not +even close). Maybe notmuch would attract some of the developers +there.. + + -- Jan + Jan Janak (2009-11-17) (inbox) + Subject: [notmuch] What a great idea! + To: notmuch at notmuchmail.org + Date: Tue, 17 Nov 2009 23:38:47 +0100 + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak wrote: + > Hello, + > + > First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + > + > Have you considered sending an announcement to the org-mode mailing list? + > http://org-mode.org + + Sorry, wrong URL, the correct one is: http://orgmode.org + + > Various ways of searching/referencing emails from emacs were discussed + > there several times and none of them were as elegant as notmuch (not + > even close). Maybe notmuch would attract some of the developers + > there.. + + -- Jan + Carl Worth (2009-11-18) (inbox unread) + Subject: [notmuch] What a great idea! + To: notmuch at notmuchmail.org + Date: Wed, 18 Nov 2009 02:49:52 -0800 + + On Tue, 17 Nov 2009 23:35:30 +0100, Jan Janak wrote: + > First of all, notmuch is a wonderful idea, both the cmdline tool and + > the emacs interface! Thanks a lot for writing it, I was really excited + > when I read the announcement today. + + Ah, here's where I planned a nice welcome. So welcome (again), Jan! :-) + + I've been having a lot of fun with notmuch already, (though there have + been some days of pain before it was functional enough and my + email-reply latency went way up). But regardless---I got through that, + and I'm able to work more efficiently with notmuch now than I could with + sup before. So I'm happy. + + And I'm delighted when other people find this interesting as well. + + > Have you
[PATCH v2 1/7] test: emacs: new tests "notmuch-show: {show, hide} message headers"
* test/emacs: - New subtest "notmuch-show: show message headers": Setting `notmuch-message-headers-visible' to t causes all headers defined in `notmuch-message-headers' to be shown. - New subtest "notmuch-show: hide message headers": Setting `notmuch-message-headers-visible' to nil causes all headers defined in `notmuch-message-headers' to be hidden. ("Subject:" may be an exception; See the use of `headers-start' in `notmuch-show-insert-msg') - New subtest "notmuch-show: hide message headers (w/ notmuch-show-toggle-headers)": Setting `notmuch-message-headers-visible' to t causes all headers defined in `notmuch-message-headers' to be shown, but they can be hidden for the current message by running `notmuch-show-toggle-headers'. --- test/emacs | 25 .../notmuch-show-message-with-headers-hidden | 22 + .../notmuch-show-message-with-headers-visible | 25 3 files changed, 72 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-message-with-headers-hidden create mode 100644 test/emacs.expected-output/notmuch-show-message-with-headers-visible diff --git a/test/emacs b/test/emacs index b74cfa9..f9ea1c3 100755 --- a/test/emacs +++ b/test/emacs @@ -383,6 +383,31 @@ test_emacs '(notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail. (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages +test_begin_subtest "notmuch-show: show message headers" +test_emacs \ + '(let ((notmuch-message-headers '\''("Subject" "To" "Cc" "Date")) + (notmuch-message-headers-visible t)) + (notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-visible + +test_begin_subtest "notmuch-show: hide message headers" +test_emacs \ + '(let ((notmuch-message-headers '\''("Subject" "To" "Cc" "Date")) + (notmuch-message-headers-visible nil)) + (notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden + +test_begin_subtest "notmuch-show: hide message headers (w/ notmuch-show-toggle-headers)" +test_emacs \ + '(let ((notmuch-message-headers '\''("Subject" "To" "Cc" "Date")) + (notmuch-message-headers-visible t)) + (notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail.gmail.com") + (notmuch-show-toggle-headers) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden + test_begin_subtest "Stashing in notmuch-show" add_message '[date]="Sat, 01 Jan 2000 12:00:00 -"' \ '[from]="Some One "' \ diff --git a/test/emacs.expected-output/notmuch-show-message-with-headers-hidden b/test/emacs.expected-output/notmuch-show-message-with-headers-hidden new file mode 100644 index 000..9d7f91b --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-message-with-headers-hidden @@ -0,0 +1,22 @@ +Jan Janak (2009-11-17) (inbox unread) +Subject: [notmuch] What a great idea! + Jan Janak (2009-11-17) (inbox) + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak wrote: + > Hello, + > + > First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + > + > Have you considered sending an announcement to the org-mode mailing list? + > http://org-mode.org + + Sorry, wrong URL, the correct one is: http://orgmode.org + + > Various ways of searching/referencing emails from emacs were discussed + > there several times and none of them were as elegant as notmuch (not + > even close). Maybe notmuch would attract some of the developers + > there.. + + -- Jan + Carl Worth (2009-11-18) (inbox unread) diff --git a/test/emacs.expected-output/notmuch-show-message-with-headers-visible b/test/emacs.expected-output/notmuch-show-message-with-headers-visible new file mode 100644 index 000..8efbd60 --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-message-with-headers-visible @@ -0,0 +1,25 @@ +Jan Janak (2009-11-17) (inbox unread) +Subject: [notmuch] What a great idea! + Jan Janak (2009-11-17) (inbox) + Subject: [notmuch] What a great idea! + To: notmuch at notmuchmail.org + Date: Tue, 17 Nov 2009 23:38:47 +0100 + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak wrote: + > Hello, + > + > First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + > + > Have you considered sending an announcement to the org-mode mailing list? + > http://org-mode.org + + Sorry, wrong URL, the correct one is: http://orgmode.org + + > Various
[PATCH] emacs: make `notmuch-show-open-or-close-all' toggle visibility
On Mon, 13 Feb 2012 14:51:17 +0400, Dmitry Kurochkin wrote: > Hi Pieter. > > On Wed, 25 Jan 2012 06:25:39 +0100, Pieter Praet wrote: > > * emacs/notmuch-show.el (notmuch-show-open-or-close-all): > > Rename to `notmuch-show-toggle-all-messages', and make it toggle > > visibility of all messages based on the visibility of the current > > message, instead of setting visibility based on whether or not a > > prefix arg was supplied. > > > > Same functionality, less effort (reaching for 'C-u' is a pain)... > > > > --- > > emacs/notmuch-show.el | 22 -- > > 1 files changed, 12 insertions(+), 10 deletions(-) > > > > diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el > > index e6a5b31..2d17f74 100644 > > --- a/emacs/notmuch-show.el > > +++ b/emacs/notmuch-show.el > > @@ -1050,8 +1050,8 @@ thread id. If a prefix is given, crypto processing > > is toggled." > > (define-key map "p" 'notmuch-show-previous-open-message) > > (define-key map (kbd "DEL") 'notmuch-show-rewind) > > (define-key map " " 'notmuch-show-advance-and-archive) > > - (define-key map (kbd "M-RET") 'notmuch-show-open-or-close-all) > > (define-key map (kbd "RET") 'notmuch-show-toggle-message) > > + (define-key map (kbd "M-RET") 'notmuch-show-toggle-all-messages) > > Should the function name include "visible" or "visibility" to make it > clear what is toggled? E.g. `notmuch-show-toggle-visibility-all'. > > Also, consider changing "all-messages" to just "all" or "thread". That > seems to be more consistent with other functions. > Good point, but we also have `notmuch-show-toggle-message' and `notmuch-show-toggle-headers', so `notmuch-show-toggle-visibility-all' would imply that both messages as well as headers are toggled. Also, `notmuch-show-toggle-visibility-thread' sounds to me like it would toggle the thread itself instead of the messages of which it is composed, so my personal expectation would be that it just blanks the entire buffer. (what's in a name) How about renaming the relevant functions like so: - `notmuch-show-toggle-headers'-> `notmuch-show-toggle-visibility-headers' - `notmuch-show-toggle-message'-> `notmuch-show-toggle-visibility-message' - `notmuch-show-open-or-close-all' -> `notmuch-show-toggle-visibility-messages' > > (define-key map "#" 'notmuch-show-print-message) > > map) > >"Keymap for \"notmuch show\" buffers.") > > @@ -1502,16 +1502,18 @@ the result." > > (not (plist-get props :message-visible > >(force-window-update)) > > > > -(defun notmuch-show-open-or-close-all () > > - "Set the visibility all of the messages in the current thread. > > -By default make all of the messages visible. With a prefix > > -argument, hide all of the messages." > > +(defun notmuch-show-toggle-all-messages () > > + "Toggle the visibility of all messages in the current thread. > > +If the current message is visible, hide all messages -- and vice versa." > >(interactive) > > - (save-excursion > > -(goto-char (point-min)) > > -(loop do (notmuch-show-message-visible > > (notmuch-show-get-message-properties) > > - (not current-prefix-arg)) > > - until (not (notmuch-show-goto-message-next > > + (let ((toggle (notmuch-show-message-visible-p))) > > Please rename "toggle" to "visible-p". That would make it more clear > what the variable means, and is consistent with > `notmuch-show-message-visible-p'. > AFAIK the '-p' suffix is "reserved" for predicate functions, and using it for a variable could be confusing. But I'm not aware of any guidelines on indicating the variable type except when it stores one or more functions [1,2]... Perhaps we could call it `visible-bool' ? Anyways, I've gone with your suggestion: `visible-p' it is... > > +(save-excursion > > + (goto-char (point-min)) > > + (loop do (notmuch-show-message-visible > > + (notmuch-show-get-message-properties) > > + (not toggle)) > > + until (not (notmuch-show-goto-message-next) > > A new `notmuch-show-mapc' function was introduced in a recent commit. > Please use it here instead of a custom loop. > Nice! > > + (recenter-top-bottom 1) > > There was no `recenter-top-bottom' call before. Why is it needed now? > It seems like an independent change and, if it is needed, would be >
Re: [PATCH] emacs: make `notmuch-show-open-or-close-all' toggle visibility
On Mon, 13 Feb 2012 14:51:17 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: Hi Pieter. On Wed, 25 Jan 2012 06:25:39 +0100, Pieter Praet pie...@praet.org wrote: * emacs/notmuch-show.el (notmuch-show-open-or-close-all): Rename to `notmuch-show-toggle-all-messages', and make it toggle visibility of all messages based on the visibility of the current message, instead of setting visibility based on whether or not a prefix arg was supplied. Same functionality, less effort (reaching for 'C-u' is a pain)... --- emacs/notmuch-show.el | 22 -- 1 files changed, 12 insertions(+), 10 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index e6a5b31..2d17f74 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1050,8 +1050,8 @@ thread id. If a prefix is given, crypto processing is toggled. (define-key map p 'notmuch-show-previous-open-message) (define-key map (kbd DEL) 'notmuch-show-rewind) (define-key map 'notmuch-show-advance-and-archive) - (define-key map (kbd M-RET) 'notmuch-show-open-or-close-all) (define-key map (kbd RET) 'notmuch-show-toggle-message) + (define-key map (kbd M-RET) 'notmuch-show-toggle-all-messages) Should the function name include visible or visibility to make it clear what is toggled? E.g. `notmuch-show-toggle-visibility-all'. Also, consider changing all-messages to just all or thread. That seems to be more consistent with other functions. Good point, but we also have `notmuch-show-toggle-message' and `notmuch-show-toggle-headers', so `notmuch-show-toggle-visibility-all' would imply that both messages as well as headers are toggled. Also, `notmuch-show-toggle-visibility-thread' sounds to me like it would toggle the thread itself instead of the messages of which it is composed, so my personal expectation would be that it just blanks the entire buffer. (what's in a name) How about renaming the relevant functions like so: - `notmuch-show-toggle-headers'- `notmuch-show-toggle-visibility-headers' - `notmuch-show-toggle-message'- `notmuch-show-toggle-visibility-message' - `notmuch-show-open-or-close-all' - `notmuch-show-toggle-visibility-messages' (define-key map # 'notmuch-show-print-message) map) Keymap for \notmuch show\ buffers.) @@ -1502,16 +1502,18 @@ the result. (not (plist-get props :message-visible (force-window-update)) -(defun notmuch-show-open-or-close-all () - Set the visibility all of the messages in the current thread. -By default make all of the messages visible. With a prefix -argument, hide all of the messages. +(defun notmuch-show-toggle-all-messages () + Toggle the visibility of all messages in the current thread. +If the current message is visible, hide all messages -- and vice versa. (interactive) - (save-excursion -(goto-char (point-min)) -(loop do (notmuch-show-message-visible (notmuch-show-get-message-properties) - (not current-prefix-arg)) - until (not (notmuch-show-goto-message-next + (let ((toggle (notmuch-show-message-visible-p))) Please rename toggle to visible-p. That would make it more clear what the variable means, and is consistent with `notmuch-show-message-visible-p'. AFAIK the '-p' suffix is reserved for predicate functions, and using it for a variable could be confusing. But I'm not aware of any guidelines on indicating the variable type except when it stores one or more functions [1,2]... Perhaps we could call it `visible-bool' ? Anyways, I've gone with your suggestion: `visible-p' it is... +(save-excursion + (goto-char (point-min)) + (loop do (notmuch-show-message-visible + (notmuch-show-get-message-properties) + (not toggle)) + until (not (notmuch-show-goto-message-next) A new `notmuch-show-mapc' function was introduced in a recent commit. Please use it here instead of a custom loop. Nice! + (recenter-top-bottom 1) There was no `recenter-top-bottom' call before. Why is it needed now? It seems like an independent change and, if it is needed, would be better as a separate patch. At the very least, it's worth mentioning in the preamble and perhaps in a comment. It ensures that the message being uncollapsed is put properly in view (instead of starting somewhere in the middle of the buffer) whilst also making it obvious that/if/when there's previous messages in the thread (due to its argument being 1 instead of 0). I thought about using `notmuch-show-message-adjust' instead, but that obscures the fact that there's previous messages. As it's quite essential in making the function DTRT, I've opted to clarify it in a comment as well as the commit message instead of splitting it out into a separate patch. Regards, Dmitry (force-window-update)) (defun
[PATCH v2 2/7] test: emacs: new tests notmuch-show: {, un}collapse all messages in thread
* test/emacs: - New subtest notmuch-show: collapse all messages in thread: `notmuch-show-open-or-close-all' with prefix arg (C-u M-RET) collapses all messages in thread. - New subtest notmuch-show: uncollapse all messages in thread: `notmuch-show-open-or-close-all' without prefix arg (M-RET) uncollapses all messages in thread. --- test/emacs | 13 +++ ...notmuch-show-thread-with-all-messages-collapsed |4 + ...tmuch-show-thread-with-all-messages-uncollapsed | 79 3 files changed, 96 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed create mode 100644 test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed diff --git a/test/emacs b/test/emacs index f9ea1c3..7d6e6ee 100755 --- a/test/emacs +++ b/test/emacs @@ -408,6 +408,19 @@ test_emacs \ (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden +test_begin_subtest notmuch-show: collapse all messages in thread +test_emacs '(notmuch-show id:f35dbb950911171435ieecd458o853c873e35f4b...@mail.gmail.com) + (let ((current-prefix-arg t)) + (notmuch-show-open-or-close-all) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-collapsed + +test_begin_subtest notmuch-show: uncollapse all messages in thread +test_emacs '(notmuch-show id:f35dbb950911171435ieecd458o853c873e35f4b...@mail.gmail.com) + (notmuch-show-open-or-close-all) + (test-visible-output)' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-all-messages-uncollapsed + test_begin_subtest Stashing in notmuch-show add_message '[date]=Sat, 01 Jan 2000 12:00:00 -' \ '[from]=Some One some...@somewhere.org' \ diff --git a/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed new file mode 100644 index 000..73b0e60 --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-collapsed @@ -0,0 +1,4 @@ +Jan Janak j...@ryngle.com (2009-11-17) (inbox) +Subject: [notmuch] What a great idea! + Jan Janak j...@ryngle.com (2009-11-17) (inbox) + Carl Worth cwo...@cworth.org (2009-11-18) (inbox unread) diff --git a/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed new file mode 100644 index 000..bd5598e --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-thread-with-all-messages-uncollapsed @@ -0,0 +1,79 @@ +Jan Janak j...@ryngle.com (2009-11-17) (inbox) +Subject: [notmuch] What a great idea! +To: notmuch@notmuchmail.org +Date: Tue, 17 Nov 2009 23:35:30 +0100 + +Hello, + +First of all, notmuch is a wonderful idea, both the cmdline tool and +the emacs interface! Thanks a lot for writing it, I was really excited +when I read the announcement today. + +Have you considered sending an announcement to the org-mode mailing list? +http://org-mode.org + +Various ways of searching/referencing emails from emacs were discussed +there several times and none of them were as elegant as notmuch (not +even close). Maybe notmuch would attract some of the developers +there.. + + -- Jan + Jan Janak j...@ryngle.com (2009-11-17) (inbox) + Subject: [notmuch] What a great idea! + To: notmuch@notmuchmail.org + Date: Tue, 17 Nov 2009 23:38:47 +0100 + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak jan at ryngle.com wrote: + Hello, + + First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + + Have you considered sending an announcement to the org-mode mailing list? + http://org-mode.org + + Sorry, wrong URL, the correct one is: http://orgmode.org + + Various ways of searching/referencing emails from emacs were discussed + there several times and none of them were as elegant as notmuch (not + even close). Maybe notmuch would attract some of the developers + there.. + + -- Jan + Carl Worth cwo...@cworth.org (2009-11-18) (inbox unread) + Subject: [notmuch] What a great idea! + To: notmuch@notmuchmail.org + Date: Wed, 18 Nov 2009 02:49:52 -0800 + + On Tue, 17 Nov 2009 23:35:30 +0100, Jan Janak jan at ryngle.com wrote: + First of all, notmuch is a wonderful idea, both the cmdline tool and + the emacs interface! Thanks a lot for writing it, I was really excited + when I read the announcement today. + + Ah, here's where I planned a nice welcome. So welcome (again), Jan! :-) + + I've been having a lot of fun with notmuch already, (though there have + been some days of pain before it was functional enough and my + email-reply latency went way up). But regardless---I got through that, + and I'm able to work more efficiently with notmuch now than I could with + sup before. So
[PATCH v2 1/7] test: emacs: new tests notmuch-show: {show, hide} message headers
* test/emacs: - New subtest notmuch-show: show message headers: Setting `notmuch-message-headers-visible' to t causes all headers defined in `notmuch-message-headers' to be shown. - New subtest notmuch-show: hide message headers: Setting `notmuch-message-headers-visible' to nil causes all headers defined in `notmuch-message-headers' to be hidden. (Subject: may be an exception; See the use of `headers-start' in `notmuch-show-insert-msg') - New subtest notmuch-show: hide message headers (w/ notmuch-show-toggle-headers): Setting `notmuch-message-headers-visible' to t causes all headers defined in `notmuch-message-headers' to be shown, but they can be hidden for the current message by running `notmuch-show-toggle-headers'. --- test/emacs | 25 .../notmuch-show-message-with-headers-hidden | 22 + .../notmuch-show-message-with-headers-visible | 25 3 files changed, 72 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-message-with-headers-hidden create mode 100644 test/emacs.expected-output/notmuch-show-message-with-headers-visible diff --git a/test/emacs b/test/emacs index b74cfa9..f9ea1c3 100755 --- a/test/emacs +++ b/test/emacs @@ -383,6 +383,31 @@ test_emacs '(notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae@mail. (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages +test_begin_subtest notmuch-show: show message headers +test_emacs \ + '(let ((notmuch-message-headers '\''(Subject To Cc Date)) + (notmuch-message-headers-visible t)) + (notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-visible + +test_begin_subtest notmuch-show: hide message headers +test_emacs \ + '(let ((notmuch-message-headers '\''(Subject To Cc Date)) + (notmuch-message-headers-visible nil)) + (notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden + +test_begin_subtest notmuch-show: hide message headers (w/ notmuch-show-toggle-headers) +test_emacs \ + '(let ((notmuch-message-headers '\''(Subject To Cc Date)) + (notmuch-message-headers-visible t)) + (notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) + (notmuch-show-toggle-headers) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden + test_begin_subtest Stashing in notmuch-show add_message '[date]=Sat, 01 Jan 2000 12:00:00 -' \ '[from]=Some One some...@somewhere.org' \ diff --git a/test/emacs.expected-output/notmuch-show-message-with-headers-hidden b/test/emacs.expected-output/notmuch-show-message-with-headers-hidden new file mode 100644 index 000..9d7f91b --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-message-with-headers-hidden @@ -0,0 +1,22 @@ +Jan Janak j...@ryngle.com (2009-11-17) (inbox unread) +Subject: [notmuch] What a great idea! + Jan Janak j...@ryngle.com (2009-11-17) (inbox) + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak jan at ryngle.com wrote: + Hello, + + First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + + Have you considered sending an announcement to the org-mode mailing list? + http://org-mode.org + + Sorry, wrong URL, the correct one is: http://orgmode.org + + Various ways of searching/referencing emails from emacs were discussed + there several times and none of them were as elegant as notmuch (not + even close). Maybe notmuch would attract some of the developers + there.. + + -- Jan + Carl Worth cwo...@cworth.org (2009-11-18) (inbox unread) diff --git a/test/emacs.expected-output/notmuch-show-message-with-headers-visible b/test/emacs.expected-output/notmuch-show-message-with-headers-visible new file mode 100644 index 000..8efbd60 --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-message-with-headers-visible @@ -0,0 +1,25 @@ +Jan Janak j...@ryngle.com (2009-11-17) (inbox unread) +Subject: [notmuch] What a great idea! + Jan Janak j...@ryngle.com (2009-11-17) (inbox) + Subject: [notmuch] What a great idea! + To: notmuch@notmuchmail.org + Date: Tue, 17 Nov 2009 23:38:47 +0100 + + On Tue, Nov 17, 2009 at 11:35 PM, Jan Janak jan at ryngle.com wrote: + Hello, + + First of all, notmuch is a wonderful idea, both the cmdline tool and + [ 2 more citation lines. Click/Enter to show. ] + + Have you considered sending an announcement to the org-mode mailing list? + http://org-mode.org + + Sorry, wrong URL, the
[PATCH v2 4/7] emacs: rename `notmuch-show-toggle-message' to `notmuch-show-toggle-visibility-message'
* emacs/notmuch-show.el (notmuch-show-toggle-message): Rename to `notmuch-show-toggle-visibility-message'. (notmuch-show-mode-map): Update RET binding wrt renamed `notmuch-show-toggle-message'. * test/emacs: Update subtests wrt renamed `notmuch-show-toggle-message': - Hiding message in notmuch-show view - Hiding message with visible citation in notmuch-show view - Refresh modified show buffer --- emacs/notmuch-show.el |4 ++-- test/emacs|8 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 861018d..9b879c7 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1183,7 +1183,7 @@ (defvar notmuch-show-mode-map (define-key map (kbd DEL) 'notmuch-show-rewind) (define-key map 'notmuch-show-advance-and-archive) (define-key map (kbd M-RET) 'notmuch-show-open-or-close-all) - (define-key map (kbd RET) 'notmuch-show-toggle-message) + (define-key map (kbd RET) 'notmuch-show-toggle-visibility-message) (define-key map # 'notmuch-show-print-message) (define-key map ! 'notmuch-show-toggle-elide-non-matching) (define-key map $ 'notmuch-show-toggle-process-crypto) @@ -1659,7 +1659,7 @@ (defun notmuch-show-toggle-visibility-headers () (not (plist-get props :headers-visible (force-window-update)) -(defun notmuch-show-toggle-message () +(defun notmuch-show-toggle-visibility-message () Toggle the visibility of the current message. (interactive) (let ((props (notmuch-show-get-message-properties))) diff --git a/test/emacs b/test/emacs index f17efbd..6f14895 100755 --- a/test/emacs +++ b/test/emacs @@ -371,7 +371,7 @@ test_expect_equal_file OUTPUT EXPECTED test_begin_subtest Hiding message in notmuch-show view test_emacs '(notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages @@ -379,7 +379,7 @@ test_begin_subtest Hiding message with visible citation in notmuch-show view test_emacs '(notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) (search-forward Click/Enter to show.) (button-activate (button-at (point))) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output)' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages @@ -496,9 +496,9 @@ test_expect_equal_file OUTPUT EXPECTED test_begin_subtest Refresh modified show buffer test_subtest_known_broken test_emacs '(notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (notmuch-show-next-message) - (notmuch-show-toggle-message) + (notmuch-show-toggle-visibility-message) (test-visible-output EXPECTED) (notmuch-show-refresh-view) (test-visible-output)' -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 7/7] emacs: `notmuch-show-toggle-visibility-messages' with prefix arg filters by tag
* emacs/notmuch-show.el (notmuch-show-toggle-visibility-messages): When provided with a prefix arg, prompt the user for a tag. Show all messages that have it and hide those that don't. --- emacs/notmuch-show.el | 13 ++--- 1 files changed, 10 insertions(+), 3 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index 82d4265..b5e482b 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -38,6 +38,7 @@ (declare-function notmuch-call-notmuch-process notmuch (rest args)) (declare-function notmuch-fontify-headers notmuch nil) +(declare-function notmuch-select-tag-with-completion notmuch (prompt rest search-terms)) (declare-function notmuch-read-tag-changes notmuch (optional initial-input rest search-terms)) (declare-function notmuch-search-next-thread notmuch nil) (declare-function notmuch-search-show-thread notmuch nil) @@ -1670,13 +1671,19 @@ (defun notmuch-show-toggle-visibility-message () (defun notmuch-show-toggle-visibility-messages () Toggle the visibility of all messages in the current thread. -If the current message is visible, hide all messages -- and vice versa. +If the current message is visible, hide all messages -- and vice versa. + +With a prefix argument, prompt for a tag and only show messages which have it. (interactive) - (let ((visible-p (notmuch-show-message-visible-p))) + (let ((visible-p (notmuch-show-message-visible-p)) + (filter (if current-prefix-arg + (notmuch-select-tag-with-completion Filter by tag: (notmuch-show-mapc (lambda () (notmuch-show-message-visible (notmuch-show-get-message-properties) -(not visible-p) +(if current-prefix-arg +(member filter (notmuch-show-get-tags)) + (not visible-p)) ;; Put the current message properly into focus, but don't ;; obscure the presence of previous messages in the thread. -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v2 3/7] emacs: rename `notmuch-show-toggle-headers' to `notmuch-show-toggle-visibility-headers'
* emacs/notmuch-show.el (notmuch-show-toggle-headers): Rename to `notmuch-show-toggle-visibility-headers'. (notmuch-show-mode-map): Update h binding wrt renamed `notmuch-show-toggle-headers'. (notmuch-message-headers): Update docstring wrt renamed `notmuch-show-toggle-headers'. (notmuch-message-headers-visible): Update docstring wrt renamed `notmuch-show-toggle-headers'. Also fixed a small typo. * test/emacs: Update subtest wrt renamed `notmuch-show-toggle-headers': - notmuch-show: hide message headers (w/ notmuch-show-toggle-headers) --- emacs/notmuch-show.el | 12 ++-- test/emacs|4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..861018d 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -48,8 +48,8 @@ (defcustom notmuch-message-headers '(Subject To Cc Date) For an open message, all of these headers will be made visible according to `notmuch-message-headers-visible' or can be toggled -with `notmuch-show-toggle-headers'. For a closed message, only -the first header in the list will be visible. +with `notmuch-show-toggle-visibility-headers'. For a closed message, +only the first header in the list will be visible. :type '(repeat string) :group 'notmuch-show) @@ -59,8 +59,8 @@ (defcustom notmuch-message-headers-visible t If this value is non-nil, then all of the headers defined in `notmuch-message-headers' will be visible by default in the display of each message. Otherwise, these headers will be hidden and -`notmuch-show-toggle-headers' can be used to make the visible for -any given message. +`notmuch-show-toggle-visibility-headers' can be used to make them +visible for any given message. :type 'boolean :group 'notmuch-show) @@ -1168,7 +1168,7 @@ (defvar notmuch-show-mode-map (define-key map v 'notmuch-show-view-all-mime-parts) (define-key map c 'notmuch-show-stash-map) (define-key map = 'notmuch-show-refresh-view) - (define-key map h 'notmuch-show-toggle-headers) + (define-key map h 'notmuch-show-toggle-visibility-headers) (define-key map * 'notmuch-show-tag-all) (define-key map - 'notmuch-show-remove-tag) (define-key map + 'notmuch-show-add-tag) @@ -1650,7 +1650,7 @@ (defun notmuch-show-remove-tag () (interactive) (notmuch-show-tag -)) -(defun notmuch-show-toggle-headers () +(defun notmuch-show-toggle-visibility-headers () Toggle the visibility of the current message headers. (interactive) (let ((props (notmuch-show-get-message-properties))) diff --git a/test/emacs b/test/emacs index 7d6e6ee..f17efbd 100755 --- a/test/emacs +++ b/test/emacs @@ -399,12 +399,12 @@ test_emacs \ (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden -test_begin_subtest notmuch-show: hide message headers (w/ notmuch-show-toggle-headers) +test_begin_subtest notmuch-show: hide message headers (w/ notmuch-show-toggle-visibility-headers) test_emacs \ '(let ((notmuch-message-headers '\''(Subject To Cc Date)) (notmuch-message-headers-visible t)) (notmuch-show id:f35dbb950911171438k5df6eb56k77b6c0944e2e7...@mail.gmail.com) - (notmuch-show-toggle-headers) + (notmuch-show-toggle-visibility-headers) (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-message-with-headers-hidden -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v2 2/4] test: emacs: new test notmuch-search: replying to a thread (sending)
On Sun, 19 Feb 2012 23:04:38 +0200, Tomi Ollila tomi.oll...@iki.fi wrote: On Sun, 19 Feb 2012 21:38:26 +0100, Pieter Praet pie...@praet.org wrote: As pointed out in the previous commit, the test for replying from within Emacs didn't actually submit the reply. This one does. --- test/emacs | 41 + 1 files changed, 41 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index 308d749..0f4f42b 100755 --- a/test/emacs +++ b/test/emacs @@ -273,6 +273,47 @@ On 01 Jan 2000 12:00:00 -, Notmuch Test Suite test_su...@notmuchmail.org w EOF test_expect_equal_file OUTPUT EXPECTED +test_begin_subtest notmuch-search: replying to a thread (sending) +$TEST_DIRECTORY/smtp-dummy sent_message +smtp_dummy_pid=$! +test_emacs \ +'(let ((message-send-mail-function '\''message-smtpmail-send-it) + (smtpmail-smtp-server localhost) + (smtpmail-smtp-service 25025)) + (notmuch-search subject:\testing message sent via SMTP\) + (notmuch-test-wait) + (notmuch-search-reply-to-thread) + (end-of-buffer) + (newline) + (insert Reply to a message via Emacs with fake SMTP) + (message-send-and-exit))' /dev/null 21 +wait ${smtp_dummy_pid} +notmuch new /dev/null The above part smells like CopyPasteProgramming; (old version of) emacs_deliver_message copied (old as this version is lacking opportunistic quit). Nope, Sending a message via (fake) SMTP, around 2011-05 to be exact [1]. My main intention was to get a bugfix [2] applied (still isn't BTW), which might have been expedited by providing a test which checks whether messages are properly tagged 'replied' when and *only* when applicable, and for that I needed a quick way to test replying to a thread, so I lazily repurposed an existing test. Not much point in reinventing the wheel, is there? Still haven't gotten around to writing the actual test to demonstrate that messages are tagged 'replied' prematurely, but this should be the gist of it: #+begin_src emacs-lisp ;; ask for confirmation (using `y-or-n-p') before sending (let ((message-confirm-send t)) ;; temporarily redefine `y-or-n-p', immediately returns nil (flet ((y-or-n-p (rest args) nil)) ;; then try to send message (which will fail) (message-send-and-exit))) ;; Parent message should NOT be tagged 'replied' now, yet it is, ;; since `notmuch-message-mark-replied' is added to `message-send-hook' ;; instead of `message-sent-hook'. #+end_src Maybe the functionality of emacs_deliver_message needs to be split into 3 parts: initialization, sending and finalization. then other uses can use initialization and finalization parts and provide their own sending part. That would be *much* better, indeed. I have work-in-progress code for initialization and finalization parts of that and I don't want to do the changes in 2 places... OK. I'll mark this patch (and the next, which depends on it) as 'wip', and pick them up again when your refactoring efforts hit mainline. Tomi Peace -- Pieter [1] id:1305299270-4316-1-git-send-email-pie...@praet.org [2] id:1305275652-22956-1-git-send-email-pie...@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v2 2/4] test: emacs: new test notmuch-search: replying to a thread (sending)
On Mon, 20 Feb 2012 16:44:32 +0400, Dmitry Kurochkin dmitry.kuroch...@gmail.com wrote: On Sun, 19 Feb 2012 21:38:26 +0100, Pieter Praet pie...@praet.org wrote: As pointed out in the previous commit, the test for replying from within Emacs didn't actually submit the reply. This one does. --- test/emacs | 41 + 1 files changed, 41 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index 308d749..0f4f42b 100755 --- a/test/emacs +++ b/test/emacs @@ -273,6 +273,47 @@ On 01 Jan 2000 12:00:00 -, Notmuch Test Suite test_su...@notmuchmail.org w EOF test_expect_equal_file OUTPUT EXPECTED +test_begin_subtest notmuch-search: replying to a thread (sending) +$TEST_DIRECTORY/smtp-dummy sent_message +smtp_dummy_pid=$! +test_emacs \ +'(let ((message-send-mail-function '\''message-smtpmail-send-it) + (smtpmail-smtp-server localhost) + (smtpmail-smtp-service 25025)) + (notmuch-search subject:\testing message sent via SMTP\) + (notmuch-test-wait) + (notmuch-search-reply-to-thread) + (end-of-buffer) + (newline) + (insert Reply to a message via Emacs with fake SMTP) + (message-send-and-exit))' /dev/null 21 +wait ${smtp_dummy_pid} +notmuch new /dev/null +sed \ +-e s',^User-Agent: Notmuch/.* Emacs/.*,User-Agent: Notmuch/XXX Emacs/XXX,' \ +-e s',^Message-ID: .*$,Message-ID: XXX,' \ +-e s',^In-Reply-To: .*$,In-Reply-To: XXX,' \ +-e s',^References: .*$,References: XXX,' \ +-e s',^Date: .*$,Date: Fri\, 29 Mar 1974 10:05:00 -,' sent_message OUTPUT This sed command is a (partial) copy past from Sending a message via (fake) SMTP test. [...] Aye, that's the one. [...] I suggest adding notmuch_sent_message_sanitize function which would replace common headers with XXX. Replace Date with XXX for Date for consistency with other headers, AFAICT a valid date value is not needed here. Agreed. Will have another look at it when Tomi's refactoring is done [1,2]. Regards, Dmitry +cat EOF EXPECTED +From: Notmuch Test Suite test_su...@notmuchmail.org +To: u...@example.com +Subject: Re: Testing message sent via SMTP +In-Reply-To: XXX +References: XXX +User-Agent: Notmuch/XXX Emacs/XXX +Date: Fri, 29 Mar 1974 10:05:00 - +Message-ID: XXX +MIME-Version: 1.0 +Content-Type: text/plain; charset=us-ascii + +On 01 Jan 2000 12:00:00 -, Notmuch Test Suite test_su...@notmuchmail.org wrote: + This is a test that messages are sent via SMTP + +Reply to a message via Emacs with fake SMTP +EOF +test_expect_equal_file OUTPUT EXPECTED + test_begin_subtest Quote MML tags in reply message_id='test-emacs-mml-quot...@message.id' add_message [id]=$message_id \ -- 1.7.8.1 Peace -- Pieter [1] id:m239a6wn4p@guru.guru-group.fi [2] id:87mx8a900t@praet.org ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v2 4/4] test: emacs: new test notmuch-search: change tags of all matching messages
On Sun, 19 Feb 2012 23:08:30 +0200, Tomi Ollila tomi.oll...@iki.fi wrote: On Sun, 19 Feb 2012 21:38:28 +0100, Pieter Praet pie...@praet.org wrote: `notmuch-search-tag-all' (bound to *) adds and removes tags to/from all messages which match the query used to populate the current search buffer. --- test/emacs | 32 1 files changed, 32 insertions(+), 0 deletions(-) [ ... ] +old_tag_count_1=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_1=$(notmuch count tag:${new_tag} ${filter}) +test ${old_tag_count_1} == 0 old_tag_count_1=Need 1+ matches! +test ${new_tag_count_1} == 0 || new_tag_count_1=Need 0 matches! +# Change tags of all matching messages and get tag counts +test_emacs (notmuch-search \tag:${old_tag} ${filter}\) Small nit: string equality comparison operator is '='. Use grep '==' test/* to confirm (or man test). Argh... Nice catch! [ ... ] Tomi Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH v3] test: emacs: new test notmuch-search: change tags of all matching messages
`notmuch-search-tag-all' (bound to *) adds and removes tags to/from all messages which match the query used to populate the current search buffer. --- test/emacs | 38 ++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..d64dcd0 100755 --- a/test/emacs +++ b/test/emacs @@ -124,6 +124,44 @@ test_emacs (notmuch-show \$os_x_darwin_thread\) output=$(notmuch search $os_x_darwin_thread | notmuch_search_sanitize) test_expect_equal $output thread:XXX 2009-11-18 [4/4] Jjgod Jiang, Alexander Botero-Lowry; [notmuch] Mac OS X/Darwin compatibility issues (inbox unread) + +test_begin_subtest notmuch-search: change tags of all matching messages +old_tag=inbox +new_tag=xobni +filter=AND from:cworth + +# Get initial tag counts and prevent false positives/negatives +old_tag_count_1=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_1=$(notmuch count tag:${new_tag} ${filter}) +test ${old_tag_count_1} = 0 old_tag_count_1=Need 0 matches! +test ${new_tag_count_1} = 0 || new_tag_count_1=Need 0 matches! + +# Change tags of all matching messages and get tag counts +test_emacs (notmuch-search \tag:${old_tag} ${filter}\) + (notmuch-test-wait) + (notmuch-search-tag-all \-${old_tag}\ \+${new_tag}\) +old_tag_count_2=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_2=$(notmuch count tag:${new_tag} ${filter}) + +# Revert tag changes and get tag counts +test_emacs (notmuch-search \tag:${new_tag} ${filter}\) + (notmuch-test-wait) + (notmuch-search-tag-all \+${old_tag}\ \-${new_tag}\) +old_tag_count_3=$(notmuch count tag:${old_tag} ${filter}) +new_tag_count_3=$(notmuch count tag:${new_tag} ${filter}) + +# ... and verify the results +output= +before: old:${old_tag_count_1} new:${new_tag_count_1} +after:old:${old_tag_count_2} new:${new_tag_count_2} +restored: old:${old_tag_count_3} new:${new_tag_count_3} +expected= +before: old:${old_tag_count_1} new:0 +after:old:0 new:${old_tag_count_1} +restored: old:${old_tag_count_1} new:0 +test_expect_equal $output $expected + + test_begin_subtest Message with .. in Message-Id: add_message [id]=123..456@example '[subject]=Message with .. in Message-Id' test_emacs '(notmuch-search id:\123..456@example\) -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH] emacs: Mention race condition safety in user visible documentation
On Tue, 21 Feb 2012 10:15:08 +0100, Michal Sojka sojk...@fel.cvut.cz wrote: [...] OK, at least one supporter here :) The updated patch follows: -- 8 -- Subject: [PATCH] emacs: Clarify description of thread manipulating functions It is not clear whether the term thread refers to the thread in the database or to the thread currently shown in a buffer. Those two meanings may refer to different sets of messages, e.g. when a new email is added to the database while the buffer shows the state before the new email arrived. This patch replaces the term thread with the term current buffer, which is hopefully less ambiguous. --- +1 Also, the inverse is true for the comment about `notmuch-search-tag-all' in `notmuch-search-mode's docstring. Patch follows. Peace -- Pieter ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH] emacs: correct `notmuch-search-mode's docstring wrt `notmuch-search-tag-all'
* emacs/notmuch.el (notmuch-search-mode): `notmuch-search-tag-all' currently uses the current query string instead of `notmuch-search-find-thread-id-region-search', which might cause a race condition. --- emacs/notmuch.el |5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/emacs/notmuch.el b/emacs/notmuch.el index f851c6f..0a9fffd 100644 --- a/emacs/notmuch.el +++ b/emacs/notmuch.el @@ -435,8 +435,9 @@ (defun notmuch-search-mode () Pressing \\[notmuch-search-show-thread] on any line displays that thread. The '\\[notmuch-search-add-tag]' and '\\[notmuch-search-remove-tag]' keys can be used to add or remove tags from a thread. The '\\[notmuch-search-archive-thread]' key is a convenience for archiving a thread (removing the \inbox\ -tag). The '\\[notmuch-search-tag-all]' key can be used to add or remove a tag from all -threads in the current buffer. +tag). The '\\[notmuch-search-tag-all]' key can be used to add and/or remove tags from all +messages (as opposed to threads) that match the current query. Use with caution, as this +will also tag matching messages that arrived *after* constructing the buffer. Other useful commands are '\\[notmuch-search-filter]' for filtering the current search based on an additional query string, '\\[notmuch-search-filter-by-tag]' for filtering to include -- 1.7.8.1 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 3/3] test: emacs: toggle thread content indentation in `notmuch-show'
See commit c205e8ff. --- test/emacs |9 ++ .../notmuch-show-indent-thread-content-off | 79 2 files changed, 88 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-indent-thread-content-off diff --git a/test/emacs b/test/emacs index 320057a..357ac73 100755 --- a/test/emacs +++ b/test/emacs @@ -591,5 +591,14 @@ test_emacs '(let ((notmuch-show-only-matching-messages nil)) (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-elide-non-matching-messages-on +test_begin_subtest "notmuch-show: disable indentation of thread content (w/ notmuch-show-toggle-thread-indentation)" +test_emacs '(notmuch-search "from:lars at seas.harvard.edu and subject:\"Maildir storage\"") + (notmuch-test-wait) + (notmuch-search-show-thread) + (notmuch-test-wait) + (notmuch-show-toggle-thread-indentation) + (test-visible-output)' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-indent-thread-content-off + test_done diff --git a/test/emacs.expected-output/notmuch-show-indent-thread-content-off b/test/emacs.expected-output/notmuch-show-indent-thread-content-off new file mode 100644 index 000..37b4f7d --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-indent-thread-content-off @@ -0,0 +1,79 @@ +Lars Kellogg-Stedman (2009-11-17) (inbox signed) +Subject: [notmuch] Working with Maildir storage? +To: notmuch at notmuchmail.org +Date: Tue, 17 Nov 2009 14:00:54 -0500 + +[ multipart/mixed ] +[ multipart/signed ] +[ text/plain ] +I saw the LWN article and decided to take a look at notmuch. I'm +currently using mutt and mairix to index and read a collection of +Maildir mail folders (around 40,000 messages total). + +notmuch indexed the messages without complaint, but my attempt at +searching bombed out. Running, for example: + + notmuch search storage + +Resulted in 4604 lines of errors along the lines of: + + Error opening + /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=3026:2,S: + Too many open files + +I'm curious if this is expected behavior (i.e., notmuch does not work +with Maildir) or if something else is going on. + +Cheers, + +[ 4-line signature. Click/Enter to show. ] +[ application/pgp-signature ] +[ text/plain ] +[ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox signed unread) + Lars Kellogg-Stedman (2009-11-17) (inbox signed) +Subject: Re: [notmuch] Working with Maildir storage? +To: Mikhail Gusarov +Cc: notmuch at notmuchmail.org +Date: Tue, 17 Nov 2009 15:33:01 -0500 + +[ multipart/mixed ] +[ multipart/signed ] +[ text/plain ] +> See the patch just posted here. + +Is the list archived anywhere? The obvious archives +(http://notmuchmail.org/pipermail/notmuch/) aren't available, and I +think I subscribed too late to get the patch (I only just saw the +discussion about it). + +It doesn't look like the patch is in git yet. + +-- Lars + +[ 4-line signature. Click/Enter to show. ] +[ application/pgp-signature ] +[ text/plain ] +[ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox unread) + Keith Packard (2009-11-17) (inbox unread) +Lars Kellogg-Stedman (2009-11-18) (inbox signed unread) +Subject: Re: [notmuch] Working with Maildir storage? +To: Keith Packard +Cc: notmuch at notmuchmail.org +Date: Tue, 17 Nov 2009 19:50:40 -0500 + +[ multipart/mixed ] +[ multipart/signed ] +[ text/plain ] +> I've also pushed a slightly more complicated (and complete) fix to my +> private notmuch repository + +The version of lib/messages.cc in your repo doesn't build because it's +missing "#include " (for the uint32_t on line 466). + +[ 4-line signature. Click/Enter to show. ] +[ application/pgp-signature ] +[ text/plain ] +[ 4-line signature. Click/Enter to show. ] + Carl Worth (2009-11-18) (inbox unread) -- 1.7.8.1
[PATCH 2/3] test: emacs: toggle eliding of non-matching messages in `notmuch-show'
See commits 44a544ed, 866ce8b1, 668b66ec. --- test/emacs | 38 ++ .../notmuch-show-elide-non-matching-messages-off | 79 .../notmuch-show-elide-non-matching-messages-on| 75 +++ 3 files changed, 192 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-elide-non-matching-messages-off create mode 100644 test/emacs.expected-output/notmuch-show-elide-non-matching-messages-on diff --git a/test/emacs b/test/emacs index b207d20..320057a 100755 --- a/test/emacs +++ b/test/emacs @@ -553,5 +553,43 @@ test_emacs '(let ((notmuch-crypto-process-mime nil)) (test-visible-output))' test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-process-crypto-mime-parts-on +test_begin_subtest "notmuch-show: don't elide non-matching messages" +test_emacs '(let ((notmuch-show-only-matching-messages nil)) + (notmuch-search "from:lars at seas.harvard.edu and subject:\"Maildir storage\"") + (notmuch-test-wait) + (notmuch-search-show-thread) + (notmuch-test-wait) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-elide-non-matching-messages-off + +test_begin_subtest "notmuch-show: elide non-matching messages" +test_emacs '(let ((notmuch-show-only-matching-messages t)) + (notmuch-search "from:lars at seas.harvard.edu and subject:\"Maildir storage\"") + (notmuch-test-wait) + (notmuch-search-show-thread) + (notmuch-test-wait) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-elide-non-matching-messages-on + +test_begin_subtest "notmuch-show: elide non-matching messages (w/ notmuch-show-toggle-elide-non-matching)" +test_emacs '(let ((notmuch-show-only-matching-messages nil)) + (notmuch-search "from:lars at seas.harvard.edu and subject:\"Maildir storage\"") + (notmuch-test-wait) + (notmuch-search-show-thread) + (notmuch-test-wait) + (notmuch-show-toggle-elide-non-matching) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-elide-non-matching-messages-on + +test_begin_subtest "notmuch-show: elide non-matching messages (w/ prefix arg to notmuch-show)" +test_emacs '(let ((notmuch-show-only-matching-messages nil)) + (notmuch-search "from:lars at seas.harvard.edu and subject:\"Maildir storage\"") + (notmuch-test-wait) + (let ((current-prefix-arg t)) + (notmuch-search-show-thread)) + (notmuch-test-wait) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-elide-non-matching-messages-on + test_done diff --git a/test/emacs.expected-output/notmuch-show-elide-non-matching-messages-off b/test/emacs.expected-output/notmuch-show-elide-non-matching-messages-off new file mode 100644 index 000..b31fe62 --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-elide-non-matching-messages-off @@ -0,0 +1,79 @@ +Lars Kellogg-Stedman (2009-11-17) (inbox signed) +Subject: [notmuch] Working with Maildir storage? +To: notmuch at notmuchmail.org +Date: Tue, 17 Nov 2009 14:00:54 -0500 + +[ multipart/mixed ] +[ multipart/signed ] +[ text/plain ] +I saw the LWN article and decided to take a look at notmuch. I'm +currently using mutt and mairix to index and read a collection of +Maildir mail folders (around 40,000 messages total). + +notmuch indexed the messages without complaint, but my attempt at +searching bombed out. Running, for example: + + notmuch search storage + +Resulted in 4604 lines of errors along the lines of: + + Error opening + /home/lars/Mail/read-messages.2008/cur/1246413773.24928_27334.hostname,U=3026:2,S: + Too many open files + +I'm curious if this is expected behavior (i.e., notmuch does not work +with Maildir) or if something else is going on. + +Cheers, + +[ 4-line signature. Click/Enter to show. ] +[ application/pgp-signature ] +[ text/plain ] +[ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox signed unread) + Lars Kellogg-Stedman (2009-11-17) (inbox signed) + Subject: Re: [notmuch] Working with Maildir storage? + To: Mikhail Gusarov + Cc: notmuch at notmuchmail.org + Date: Tue, 17 Nov 2009 15:33:01 -0500 + + [ multipart/mixed ] + [ multipart/signed ] + [ text/plain ] + > See the patch just posted here. + + Is the list archived anywhere? The obvious archives + (http://notmuchmail.org/pipermail/notmuch/) aren't available, and I + think I subscribed too late to get the patch (I only just saw the + discussion about it). + + It doesn't look like the patch is in git yet. + + -- Lars + + [ 4-line signature. Click/Enter to show. ] + [ application/pgp-signature ] + [ text/plain ] + [ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox unread) + Keith Packard (2009-11-17) (inbox unread) +Lars Kellogg-Stedman (2009-11-18) (inbox signed unread) +
[PATCH 1/3] test: emacs: toggle processing of cryptographic MIME parts in `notmuch-show'
See commit 19ec74c5. --- test/emacs | 20 .../notmuch-show-process-crypto-mime-parts-off | 31 +++ .../notmuch-show-process-crypto-mime-parts-on | 32 3 files changed, 83 insertions(+), 0 deletions(-) create mode 100644 test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-off create mode 100644 test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-on diff --git a/test/emacs b/test/emacs index b74cfa9..b207d20 100755 --- a/test/emacs +++ b/test/emacs @@ -534,4 +534,24 @@ counter=$(test_emacs \ ) test_expect_equal "$counter" 2 +test_begin_subtest "notmuch-show: don't process cryptographic MIME parts" +test_emacs '(let ((notmuch-crypto-process-mime nil)) + (notmuch-show "id:20091117203301.GV3165 at dottiness.seas.harvard.edu") + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-process-crypto-mime-parts-off + +test_begin_subtest "notmuch-show: process cryptographic MIME parts" +test_emacs '(let ((notmuch-crypto-process-mime t)) + (notmuch-show "id:20091117203301.GV3165 at dottiness.seas.harvard.edu") + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-process-crypto-mime-parts-on + +test_begin_subtest "notmuch-show: process cryptographic MIME parts (w/ notmuch-show-toggle-process-crypto)" +test_emacs '(let ((notmuch-crypto-process-mime nil)) + (notmuch-show "id:20091117203301.GV3165 at dottiness.seas.harvard.edu") + (notmuch-show-toggle-process-crypto) + (test-visible-output))' +test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-process-crypto-mime-parts-on + + test_done diff --git a/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-off b/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-off new file mode 100644 index 000..076083a --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-off @@ -0,0 +1,31 @@ +Lars Kellogg-Stedman (2009-11-17) (inbox signed) +Subject: [notmuch] Working with Maildir storage? + Mikhail Gusarov (2009-11-17) (inbox signed unread) + Lars Kellogg-Stedman (2009-11-17) (inbox signed) + Subject: Re: [notmuch] Working with Maildir storage? + To: Mikhail Gusarov + Cc: notmuch at notmuchmail.org + Date: Tue, 17 Nov 2009 15:33:01 -0500 + + [ multipart/mixed ] + [ multipart/signed ] + [ text/plain ] + > See the patch just posted here. + + Is the list archived anywhere? The obvious archives + (http://notmuchmail.org/pipermail/notmuch/) aren't available, and I + think I subscribed too late to get the patch (I only just saw the + discussion about it). + + It doesn't look like the patch is in git yet. + + -- Lars + + [ 4-line signature. Click/Enter to show. ] + [ application/pgp-signature ] + [ text/plain ] + [ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox unread) + Keith Packard (2009-11-17) (inbox unread) +Lars Kellogg-Stedman (2009-11-18) (inbox signed unread) + Carl Worth (2009-11-18) (inbox unread) diff --git a/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-on b/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-on new file mode 100644 index 000..588f38f --- /dev/null +++ b/test/emacs.expected-output/notmuch-show-process-crypto-mime-parts-on @@ -0,0 +1,32 @@ +Lars Kellogg-Stedman (2009-11-17) (inbox signed) +Subject: [notmuch] Working with Maildir storage? + Mikhail Gusarov (2009-11-17) (inbox signed unread) + Lars Kellogg-Stedman (2009-11-17) (inbox signed) + Subject: Re: [notmuch] Working with Maildir storage? + To: Mikhail Gusarov + Cc: notmuch at notmuchmail.org + Date: Tue, 17 Nov 2009 15:33:01 -0500 + + [ multipart/mixed ] + [ multipart/signed ] + [ Unknown key ID 0xD74695063141ACD8 or unsupported algorithm ] + [ text/plain ] + > See the patch just posted here. + + Is the list archived anywhere? The obvious archives + (http://notmuchmail.org/pipermail/notmuch/) aren't available, and I + think I subscribed too late to get the patch (I only just saw the + discussion about it). + + It doesn't look like the patch is in git yet. + + -- Lars + + [ 4-line signature. Click/Enter to show. ] + [ application/pgp-signature ] + [ text/plain ] + [ 4-line signature. Click/Enter to show. ] + Mikhail Gusarov (2009-11-17) (inbox unread) + Keith Packard (2009-11-17) (inbox unread) +Lars Kellogg-Stedman (2009-11-18) (inbox signed unread) + Carl Worth (2009-11-18) (inbox unread) -- 1.7.8.1
[PATCH v8 0/8] reworked crypto toggle, plus a few other toggles
Great work! Here's some tests. Peace
[PATCH] STYLE: Initial draft of coding style document
On Sun, 12 Feb 2012 21:42:49 -0400, David Bremner wrote: > On Sun, 5 Feb 2012 23:42:05 -0500, Austin Clements > wrote: > > > > Any indentation style this difficult to explain can't be a good idea. > > How about, > > > > * Indent is 4 spaces with mixed tab/spaces and a tab width of 8. > > (Specifically, a line should begin with zero or more tabs followed > > by fewer than eight spaces.) > > Oh, I pushed the style guide, with Austin's suggested wording. > We could also borrow from the Cairo coding style guidelines [1]. Or perhaps we should get rid of the mixed tabs/spaces deal altogether? Carl once mentioned he planned to convert to using mod-8 tabs only [2]. Linus agrees [3] :) > d > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter [1] http://cgit.freedesktop.org/cairo/tree/CODING_STYLE [2] id:"87ocmwok2w.fsf at yoom.home.cworth.org" http://mid.gmane.org/87ocmwok2w.fsf at yoom.home.cworth.org [3] http://www.kernel.org/doc/Documentation/CodingStyle
[PATCH 7/6] emacs: relax tag syntax check in `notmuch-tag' function
On Sat, 28 Jan 2012 10:56:21 +0200, Jani Nikula wrote: > On Jan 28, 2012 7:06 AM, "Dmitry Kurochkin" > wrote: > > > > The tag syntax check in `notmuch-tag' function was too strict and did > > not allow nmbug tags with "::". Since the check is done for all > > tagging operations in Emacs UI, this basically means that no nmbug > > tags can be changed. The patch relaxes the tag syntax check to allow > > any tag names that do not include whitespace characters. > > Imho the syntax check should be in cli, or lib even. I posted a patch to > cli some time ago when I realized it's possible to add tag "-" but you > can't remove it with the current cli. (On the road, can't find the message > id now.) > Here you go: id:"3da260c7687fafe2cbc17bad129a8b1edb05c6d0.1320958534.git.jani at nikula.org" > > --- > > emacs/notmuch.el |2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/emacs/notmuch.el b/emacs/notmuch.el > > index 9813e0a..0de6123 100644 > > --- a/emacs/notmuch.el > > +++ b/emacs/notmuch.el > > @@ -555,7 +555,7 @@ notmuch-after-tag-hook will be run." > > ;; Perform some validation > > (when (null tags) (error "No tags given")) > > (mapc (lambda (tag) > > - (unless (string-match-p "^[-+][-+_.[:word:]]+$" tag) > > + (unless (string-match-p "^[-+]\\S-+$" tag) > >(error "Tag must be of the form `+this_tag' or `-that_tag'"))) > >tags) > > (run-hooks 'notmuch-before-tag-hook) > > -- > > 1.7.8.3 > > > > ___ > > notmuch mailing list > > notmuch at notmuchmail.org > > http://notmuchmail.org/mailman/listinfo/notmuch Non-text part: text/html > ___ > notmuch mailing list > notmuch at notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch Peace -- Pieter
[PATCH v6 3/3] emacs: add `notmuch-show-stash-mlarchive-link{, -and-go}'
* emacs/notmuch-show.el (notmuch-show-stash-mlarchive-link-alist): New defcustom of type `alist' (key = name, value = URI), containing Mailing List Archive URI's for searching by Message-Id. (notmuch-show-stash-mlarchive-link-default): New defcustom, default MLA to use when `notmuch-show-stash-mlarchive-link' received no user input whatsoever. Available choices are generated using the contents of `notmuch-show-stash-mlarchive-link-alist'. (notmuch-show-stash-map): Added keybinds "l" and "L" for `notmuch-show-stash-mlarchive-link' respectively `notmuch-show-stash-mlarchive-link-and-go'. (notmuch-show-stash-mlarchive-link): New function, stashes a URI pointing to the current message at one of the MLAs configured in `notmuch-show-stash-mlarchive-link-alist'. Prompts user with `completing-read' if not provided with an MLA key. (notmuch-show-stash-mlarchive-link-and-go): New function, uses `notmuch-show-stash-mlarchive-link' to stash a URI, and then visits it using the browser configured in `browse-url-browser-function'. Based on original work [1] by David Edmondson . [1] id:"1327397873-20596-1-git-send-email-dme at dme.org" --- emacs/notmuch-show.el | 61 + test/emacs|1 - 2 files changed, 61 insertions(+), 1 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index cefad11..6ced501 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -155,6 +155,35 @@ (defvar notmuch-show-indent-content t) (make-variable-buffer-local 'notmuch-show-indent-content) (put 'notmuch-show-indent-content 'permanent-local t) +(defcustom notmuch-show-stash-mlarchive-link-alist + '(("Gmane" . "http://mid.gmane.org/;) +("MARC" . "http://marc.info/?i=;) +("Mail Archive, The" . "http://mail-archive.com/search?l=mid=;) +;; FIXME: can these services be searched by `Message-Id' ? +;; ("MarkMail" . "http://markmail.org/;) +;; ("Nabble" . "http://nabble.com/;) +;; ("opensubscriber" . "http://opensubscriber.com/;) +) + "List of Mailing List Archives to use when stashing links. + +These URIs are concatenated with the current message's +Message-Id in `notmuch-show-stash-mlarchive-link'." + :type '(alist :key-type (string :tag "Name") + :value-type (string :tag "URL")) + :group 'notmuch-show) + +(defcustom notmuch-show-stash-mlarchive-link-default "Gmane" + "Default Mailing List Archive to use when stashing links. + +This is used when `notmuch-show-stash-mlarchive-link' isn't +provided with an MLA argument nor `completing-read' input." + :type `(choice + ,@(mapcar +(lambda (mla) + (list 'const :tag (car mla) :value (car mla))) +notmuch-show-stash-mlarchive-link-alist)) + :group 'notmuch-show) + (defmacro with-current-notmuch-show-message ( body) "Evaluate body with current buffer set to the text of current message" `(save-excursion @@ -1145,6 +1174,8 @@ (defvar notmuch-show-stash-map (define-key map "s" 'notmuch-show-stash-subject) (define-key map "T" 'notmuch-show-stash-tags) (define-key map "t" 'notmuch-show-stash-to) +(define-key map "l" 'notmuch-show-stash-mlarchive-link) +(define-key map "L" 'notmuch-show-stash-mlarchive-link-and-go) map) "Submap for stash commands") (fset 'notmuch-show-stash-map notmuch-show-stash-map) @@ -1811,6 +1842,36 @@ (defun notmuch-show-stash-to () (interactive) (notmuch-common-do-stash (notmuch-show-get-to))) +(defun notmuch-show-stash-mlarchive-link ( mla) + "Copy an ML Archive URI for the current message to the kill-ring. + +This presumes that the message is available at the selected Mailing List Archive. + +If optional argument MLA is non-nil, use the provided key instead of prompting +the user (see `notmuch-show-stash-mlarchive-link-alist')." + (interactive) + (notmuch-common-do-stash + (concat (cdr (assoc +(or mla +(let ((completion-ignore-case t)) + (completing-read + "Mailing List Archive: " + notmuch-show-stash-mlarchive-link-alist + nil t nil nil notmuch-show-stash-mlarchive-link-default))) +notmuch-show-stash-mlarchive-link-alist)) + (notmuch-show-get-message-id t + +(defun notmuch-show-stash-mlarchive-link-and-go ( mla) + "Copy an ML Archive URI for the current message to the kill-ring and visit it. + +This presumes that the message is available at the selected Mailing List Archive. + +If optional argument MLA is non-nil, use the provided key instead of prompting +the user (see `notmuch-show-stash-mlarchive-link-alist')." + (interactive) + (notmuch-show-stash-mlarchive-link mla) + (browse-url (current-kill 0 t))) + ;; Commands typically bound to buttons. (defun notmuch-show-part-button-default ( button) diff --git a/test/emacs
[PATCH v6 2/3] test: emacs: expand subtest "Stashing in notmuch-show" wrt stashing Mailing List Archive URIs
`notmuch-show-stash-mlarchive-link' stashes a URI pointing to the current message at one of the MLAs configured in `notmuch-show-stash-mlarchive-link-alist'. Marked as "broken": fixed in next commit. --- test/emacs |9 - 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/test/emacs b/test/emacs index b74cfa9..1f213e3 100755 --- a/test/emacs +++ b/test/emacs @@ -384,6 +384,7 @@ test_emacs '(notmuch-show "id:f35dbb950911171438k5df6eb56k77b6c0944e2e79ae at mail. test_expect_equal_file OUTPUT $EXPECTED/notmuch-show-thread-with-hidden-messages test_begin_subtest "Stashing in notmuch-show" +test_subtest_known_broken add_message '[date]="Sat, 01 Jan 2000 12:00:00 -"' \ '[from]="Some One "' \ '[to]="Some One Else "' \ @@ -402,9 +403,12 @@ test_emacs '(notmuch-show "id:\"bought\"") (notmuch-show-stash-message-id-stripped) (notmuch-show-stash-tags) (notmuch-show-stash-filename) + (notmuch-show-stash-mlarchive-link "Gmane") + (notmuch-show-stash-mlarchive-link "MARC") + (notmuch-show-stash-mlarchive-link "Mail Archive, The") (switch-to-buffer (generate-new-buffer "*test-stashing*")) - (dotimes (i 9) + (dotimes (i 12) (yank) (insert "\n") (rotate-yank-pointer 1)) @@ -420,6 +424,9 @@ id:"bought" bought inbox,stashtest ${gen_msg_filename} +http://mid.gmane.org/bought +http://marc.info/?i=bought +http://mail-archive.com/search?l=mid=bought EOF test_expect_equal_file OUTPUT EXPECTED -- 1.7.8.1
[PATCH v6 1/3] emacs: `notmuch-show-get-message-id': optionally return Message-Id sans prefix
* emacs/notmuch-show.el (notmuch-show-get-message-id): Add optional arg BARE. When non-nil, return a Message-Id without quotes and prefix, thus obviating the need to strip them off again in various places. (notmuch-show-stash-message-id-stripped): Update wrt changes in `notmuch-show-get-message-id'. --- emacs/notmuch-show.el | 13 + 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el index aa9ccee..cefad11 100644 --- a/emacs/notmuch-show.el +++ b/emacs/notmuch-show.el @@ -1329,9 +1329,14 @@ (defun notmuch-show-get-prop (prop props) (notmuch-show-get-message-properties (plist-get props prop))) -(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-message-id ( bare) + "Return the Message-Id of the current message. + +If optional argument BARE is non-nil, return +the Message-Id without prefix and quotes." + (if bare + (notmuch-show-get-prop :id) +(concat "id:\"" (notmuch-show-get-prop :id) "\""))) (defun notmuch-show-get-messages-ids () "Return all message ids of messages in the current thread." @@ -1789,7 +1794,7 @@ (defun notmuch-show-stash-message-id () (defun notmuch-show-stash-message-id-stripped () "Copy message ID of current message (sans `id:' prefix) to kill-ring." (interactive) - (notmuch-common-do-stash (substring (notmuch-show-get-message-id) 4 -1))) + (notmuch-common-do-stash (notmuch-show-get-message-id t))) (defun notmuch-show-stash-subject () "Copy Subject field of current message to kill-ring." -- 1.7.8.1