diff options
-rw-r--r-- | commands/account/search.go | 2 | ||||
-rw-r--r-- | worker/imap/search.go | 4 | ||||
-rw-r--r-- | worker/jmap/search.go | 9 | ||||
-rw-r--r-- | worker/lib/search.go | 2 | ||||
-rw-r--r-- | worker/notmuch/search.go | 9 | ||||
-rw-r--r-- | worker/types/search.go | 5 |
6 files changed, 19 insertions, 12 deletions
diff --git a/commands/account/search.go b/commands/account/search.go index 0246a9eb..cd449dfa 100644 --- a/commands/account/search.go +++ b/commands/account/search.go @@ -154,7 +154,7 @@ func (s SearchFilter) Execute(args []string) error { EndDate: s.EndDate, SearchBody: s.Body, SearchAll: s.All, - Terms: s.Terms, + Terms: []string{s.Terms}, } if args[0] == "filter" { 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: diff --git a/worker/jmap/search.go b/worker/jmap/search.go index 0101ce9b..024cc181 100644 --- a/worker/jmap/search.go +++ b/worker/jmap/search.go @@ -1,6 +1,8 @@ package jmap import ( + "strings" + "git.sr.ht/~rjarry/aerc/worker/types" "git.sr.ht/~rockorager/go-jmap" "git.sr.ht/~rockorager/go-jmap/mail/email" @@ -38,13 +40,14 @@ func (w *JMAPWorker) translateSearch( } // general search terms + terms := strings.Join(criteria.Terms, " ") switch { case criteria.SearchAll: - cond.Text = criteria.Terms + cond.Text = terms case criteria.SearchBody: - cond.Body = criteria.Terms + cond.Body = terms default: - cond.Subject = criteria.Terms + cond.Subject = terms } filter := &email.FilterOperator{Operator: jmap.OperatorAND} diff --git a/worker/lib/search.go b/worker/lib/search.go index c85b3307..16e44d96 100644 --- a/worker/lib/search.go +++ b/worker/lib/search.go @@ -108,7 +108,7 @@ func SearchMessage(message rfc822.RawMessage, criteria *types.SearchCriteria, } } - args := opt.LexArgs(criteria.Terms) + args := opt.LexArgs(strings.Join(criteria.Terms, " ")) for _, searchTerm := range args.Args() { if !containsSmartCase(text, searchTerm) { return false, nil diff --git a/worker/notmuch/search.go b/worker/notmuch/search.go index 36d4c2df..a84711eb 100644 --- a/worker/notmuch/search.go +++ b/worker/notmuch/search.go @@ -5,6 +5,7 @@ package notmuch import ( "fmt" + "strings" "git.sr.ht/~rjarry/aerc/models" "git.sr.ht/~rjarry/aerc/worker/types" @@ -88,11 +89,13 @@ func translate(crit *types.SearchCriteria) string { } // other terms - if crit.Terms != "" { + if len(crit.Terms) > 0 { if crit.SearchBody { - base.and("body:" + opt.QuoteArg(crit.Terms)) + base.and("body:" + opt.QuoteArg(strings.Join(crit.Terms, " "))) } else { - base.and(crit.Terms) + for _, term := range crit.Terms { + base.and(term) + } } } diff --git a/worker/types/search.go b/worker/types/search.go index 93a0053d..bad5343e 100644 --- a/worker/types/search.go +++ b/worker/types/search.go @@ -2,7 +2,6 @@ package types import ( "net/textproto" - "strings" "time" "git.sr.ht/~rjarry/aerc/models" @@ -19,7 +18,7 @@ type SearchCriteria struct { EndDate time.Time SearchBody bool SearchAll bool - Terms string + Terms []string } func (c *SearchCriteria) PrepareHeader() { @@ -79,6 +78,6 @@ func (c *SearchCriteria) Combine(other *SearchCriteria) *SearchCriteria { EndDate: end, SearchBody: c.SearchBody || other.SearchBody, SearchAll: c.SearchAll || other.SearchAll, - Terms: strings.Join([]string{c.Terms, other.Terms}, " "), + Terms: append(c.Terms, other.Terms...), } } |