[RFC PATCH v5 00/11] Add NOTMUCH_MESSAGE_FLAG_EXCLUDED flag

Mark Walters markwalters1009 at gmail.com
Wed Feb 15 01:03:28 PST 2012


This is v5 of the exclude flag series. (v4 was at 
id:"874nv9rv79.fsf at qmul.ac.uk")

This email has 4 sections, an overview of what the patch set is 
trying to achieve, a summary of the changes from v4, some comments on 
the status of the patches in the series and some remaining queries.

OVERVIEW

The current implementation of exclude-tags does not use excludes in
notmuch-show.c (and thus not in notmuch-show.el). Thus when selecting 
a thread in the search view claiming one matched message you may get 
several matches in show all but one of which are tagged excluded.

The trivial change of adding excludes to show does not work as easily 
as one would like. For example if you try notmuch-show 
id:<deleted message> you get no results (see 
id:"871uqvgrnm.fsf at qmul.ac.uk" for more discussion).

This set moves in a different direction. It returns all the results 
but marks excluded messages with a new flag 
(NOTMUCH_MESSAGE_FLAG_EXCLUDED) and lets the consumer decide what to 
do with them. For example it could start with the message closed in 
emacs show view, it could colour the headerline differently etc.

CHANGES:
This has been rebased on top of Jani's notmuch-show command line 
parsing patch.

The function notmuch_thread_get_flag_messages function added in v4
has been removed. Unfortunately (as Austin pointed out) that patch 
broke binary compatibility so should be deferred until we wish to 
bump the library version.

I also fixed a minor bug and a style comment in the emacs part of 
the patch.

STATUS:
The first 3 patches in the series just add a --no-exclude option
to notmuch-search.c and notmuch-count.c to "turn off" the excluding.
(The 3 patches are one for the C code, one for the man pages and 
one for the tests.) I think this change is desirable independently 
of the rest of the series (and indeed Jameson had a use for it
id:"878vk943ci.fsf at servo.finestructure.net").

QUERIES

1) As with v4 the api notmuch_query_set_omit_excluded_messages
remains: without it I can't see how a user can pass a 
notmuch_messages_t object around which does not contain the 
excluded messages. See id:"87fweusabh.fsf at qmul.ac.uk". 

2)  If we have a query which overrides the excludes such as "blah and
tag:deleted" should the tag:deleted messages still be marked excluded?
The current implementation does mark them excluded but my preference 
would be not to. What do people think? At the moment 2 tests fail but 
the correct output depends on the above so I will leave them until we
have a decision on this.

There are some other queries mentioned in v4 but the two above are
the significant ones.

Best wishes

Mark



Mark Walters (11):
  cli: add --no-exclude option to count and search.
  cli: Add --no-exclude to the man pages for search and count
  test: add tests for new cli --no-exclude option
  lib: Rearrange the exclude code in query.cc
  lib: Make notmuch_query_search_messages set the exclude flag
  lib: Add the exclude flag to notmuch_query_search_threads
  cli: Make notmuch-show respect excludes.
  man: update manpage for notmuch-show --no-exclude option
  test: update tests to reflect the exclude flag
  cli: omit excluded messages in results where appropriate.
  emacs: show: recognize the exclude flag.

 emacs/notmuch-show.el     |   19 +++++++++++-
 lib/notmuch-private.h     |    8 ++++-
 lib/notmuch.h             |   16 ++++++++--
 lib/query.cc              |   74 ++++++++++++++++++++++++++++++++++++++------
 lib/thread.cc             |   18 +++++++++--
 man/man1/notmuch-count.1  |    7 ++++
 man/man1/notmuch-search.1 |    7 ++++
 man/man1/notmuch-show.1   |    7 ++++
 notmuch-count.c           |   19 ++++++++----
 notmuch-search.c          |   26 ++++++++++++----
 notmuch-show.c            |   31 ++++++++++++++++--
 test/count                |   21 +++++++++++++
 test/crypto               |    9 +++++-
 test/encoding             |    2 +-
 test/json                 |    6 ++--
 test/maildir-sync         |    1 +
 test/multipart            |    4 +-
 test/search               |    5 +++
 test/thread-naming        |   16 +++++-----
 19 files changed, 246 insertions(+), 50 deletions(-)

-- 
1.7.2.3



More information about the notmuch mailing list