aboutsummaryrefslogtreecommitdiffstats
path: root/worker/imap/search.go
diff options
context:
space:
mode:
authorKoni Marti <koni.marti@gmail.com>2024-02-01 23:52:55 +0100
committerRobin Jarry <robin@jarry.cc>2024-02-11 22:03:56 +0100
commite7c26e02bb326f08c071e9f37ebf80952a0cca97 (patch)
treeb20503b2df2b1fafd751aa7abc998fca24fa66a4 /worker/imap/search.go
parent05874f867c76c8e9b8c1e67a57dc702e63d6d54b (diff)
downloadaerc-e7c26e02bb326f08c071e9f37ebf80952a0cca97.tar.gz
filter: allow workers to combine filter terms
Allow the backend workers to combine the filter terms. Currently, the consecutive filters are joined in the message store with a space (" "). This works well for most backends, but makes the filter combination for notmuch confusing. Example: Issuing two consecutive filter commands in notmuch :filter not tag:list :filter tag:list would create the following filter query 'not tag:list tag:list' This is not what users would expect; they expect: '(not tag:list) and (tag:list)' Note that the notmuch backend works correctly for the given query, but produced a query that does not match the user's expectation. This patch fixes this. The combination of filter terms in other backends remains the same. Reported-by: Ángel Castañeda <angel@acsq.me> Signed-off-by: Koni Marti <koni.marti@gmail.com> Tested-by: Inwit <inwit@sindominio.net> Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'worker/imap/search.go')
-rw-r--r--worker/imap/search.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/worker/imap/search.go b/worker/imap/search.go
index 0305a80f..970d4db6 100644
--- a/worker/imap/search.go
+++ b/worker/imap/search.go
@@ -1,6 +1,8 @@
package imap
import (
+ "strings"
+
"github.com/emersion/go-imap"
"git.sr.ht/~rjarry/aerc/worker/types"
@@ -33,7 +35,7 @@ func translateSearch(c *types.SearchCriteria) *imap.SearchCriteria {
for _, c := range c.Cc {
criteria.Header.Add("Cc", c)
}
- terms := opt.LexArgs(c.Terms)
+ terms := opt.LexArgs(strings.Join(c.Terms, " "))
if terms.Count() > 0 {
switch {
case c.SearchAll: