diff options
author | Bence Ferdinandy <bence@ferdinandy.com> | 2024-04-13 21:51:57 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-04-14 11:51:03 +0200 |
commit | c70c63cbaac8bb78f7d541a2927789c3567ee0e0 (patch) | |
tree | 02117580a4e49ec688c939dd0a71b635fff3dd93 /commands/account/search.go | |
parent | 4d95c5371ecc4d667652bb0f5df43c68823ed08b (diff) | |
download | aerc-c70c63cbaac8bb78f7d541a2927789c3567ee0e0.tar.gz |
notmuch: add completions for :cf, :filter and :search
Add completion of notmuch search-terms for :cf, :filter and :search.
Implements: https://todo.sr.ht/~rjarry/aerc/244
Changelog-added: Notmuch completions for `:cf`, `:filter` and
`:search`.
Signed-off-by: Bence Ferdinandy <bence@ferdinandy.com>
Tested-by: Julio B <julio.bacel@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands/account/search.go')
-rw-r--r-- | commands/account/search.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/commands/account/search.go b/commands/account/search.go index e64e8154..f37e094d 100644 --- a/commands/account/search.go +++ b/commands/account/search.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "net/textproto" + "reflect" "strings" "time" @@ -14,6 +15,7 @@ import ( "git.sr.ht/~rjarry/aerc/lib/state" "git.sr.ht/~rjarry/aerc/lib/ui" "git.sr.ht/~rjarry/aerc/models" + "git.sr.ht/~rjarry/aerc/worker/handlers" "git.sr.ht/~rjarry/aerc/worker/types" ) @@ -30,7 +32,7 @@ type SearchFilter struct { Cc []string `opt:"-c" action:"ParseCc" complete:"CompleteAddress"` StartDate time.Time `opt:"-d" action:"ParseDate" complete:"CompleteDate"` EndDate time.Time - Terms string `opt:"..." required:"false"` + Terms string `opt:"..." required:"false" complete:"CompleteNotmuch"` } func init() { @@ -57,6 +59,18 @@ func (*SearchFilter) CompleteDate(arg string) []string { return commands.FilterList(commands.GetDateList(), arg, commands.QuoteSpace) } +func (*SearchFilter) CompleteNotmuch(arg string) []string { + acct := app.SelectedAccount() + if acct == nil { + return nil + } + notmuch, _ := handlers.GetHandlerForScheme("notmuch", new(types.Worker)) + if reflect.TypeOf(notmuch) != reflect.TypeOf(acct.Worker().Backend) { + return nil + } + return handleNotmuchComplete(arg) +} + func (s *SearchFilter) ParseRead(arg string) error { s.WithFlags |= models.SeenFlag s.WithoutFlags &^= models.SeenFlag |