aboutsummaryrefslogtreecommitdiffstats
path: root/src/searchterm.h
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-31 11:41:08 +0100
committerDanilo M. <danix@danix.xyz>2026-10-31 11:41:08 +0100
commit8804a75ae561a7e504fdce8aea58d3ddc8670b71 (patch)
tree85125d2ba1e1880f3439e7d3462247351c46ff1d /src/searchterm.h
parent8078e8180920984de475db796a2725bb2f470dd8 (diff)
downloadqtmaildir-8804a75ae561a7e504fdce8aea58d3ddc8670b71.tar.gz
qtmaildir-8804a75ae561a7e504fdce8aea58d3ddc8670b71.zip
feat: build the query for what a tag change would move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'src/searchterm.h')
-rw-r--r--src/searchterm.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/searchterm.h b/src/searchterm.h
index 8ca67e4..dd43e99 100644
--- a/src/searchterm.h
+++ b/src/searchterm.h
@@ -111,6 +111,20 @@ QString extend(const QString &existing, const QString &addition);
/// An empty `addition` leaves `existing` untouched.
QString exclude(const QString &existing, const QString &addition);
+/// The messages among `query` that `+add -remove` would actually change:
+/// `(query) AND (not tag:a1 or ... or tag:r1 ...)`.
+///
+/// Used to count and to write a rule applied to existing mail (item 212), so
+/// the number in the confirmation is the number of messages touched, not the
+/// number matched. Built on extend(), so a disjunction in the rule cannot
+/// escape the scope.
+///
+/// **Never empty.** An empty query or an empty change yields
+/// Config::matchNothingQuery(), because notmuch reads an empty query as
+/// "match everything" and this string is written to.
+QString changes(const QString &query, const QStringList &add,
+ const QStringList &remove);
+
} // namespace SearchTerm
/// One entry a context menu can offer: a finished query and the text naming it.