aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/account/search.go2
-rw-r--r--worker/imap/search.go4
-rw-r--r--worker/jmap/search.go9
-rw-r--r--worker/lib/search.go2
-rw-r--r--worker/notmuch/search.go9
-rw-r--r--worker/types/search.go5
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...),
}
}