From d29d7e1ee25059c657412d5b045650f1e3e1533f Mon Sep 17 00:00:00 2001 From: Mark Walters Date: Mon, 13 May 2013 16:10:51 +0100 Subject: lib: add NOTMUCH_EXCLUDE_FLAG to notmuch_exclude_t Add NOTMUCH_EXCLUDE_FLAG to notmuch_exclude_t so that it can cover all four values of search --exclude in the cli. Previously the way to avoid any message being marked excluded was to pass in an empty list of excluded tags: since we now have an explicit option we might as well honour it. The enum is in a slightly strange order as the existing FALSE/TRUE options correspond to the new NOTMUCH_EXCLUDE_FLAG/NOTMUCH_EXCLUDE_TRUE options so this means we do not need to bump the version number. Indeed, an example of this is that the cli count and show still use FALSE/TRUE and still work. --- lib/query.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/query.cc') diff --git a/lib/query.cc b/lib/query.cc index 1cc768f8..69668a45 100644 --- a/lib/query.cc +++ b/lib/query.cc @@ -218,13 +218,15 @@ notmuch_query_search_messages (notmuch_query_t *query) } messages->base.excluded_doc_ids = NULL; - if (query->exclude_terms) { + if ((query->omit_excluded != NOTMUCH_EXCLUDE_FALSE) && (query->exclude_terms)) { exclude_query = _notmuch_exclude_tags (query, final_query); - if (query->omit_excluded != NOTMUCH_EXCLUDE_FALSE) + if (query->omit_excluded == NOTMUCH_EXCLUDE_TRUE || + query->omit_excluded == NOTMUCH_EXCLUDE_ALL) + { final_query = Xapian::Query (Xapian::Query::OP_AND_NOT, final_query, exclude_query); - else { + } else { /* NOTMUCH_EXCLUDE_FLAG */ exclude_query = Xapian::Query (Xapian::Query::OP_AND, exclude_query, final_query); -- cgit v1.2.3