aboutsummaryrefslogtreecommitdiffstats
path: root/commands/account/cf.go
diff options
context:
space:
mode:
authorBence Ferdinandy <bence@ferdinandy.com>2024-04-13 21:51:57 +0200
committerRobin Jarry <robin@jarry.cc>2024-04-14 11:51:03 +0200
commitc70c63cbaac8bb78f7d541a2927789c3567ee0e0 (patch)
tree02117580a4e49ec688c939dd0a71b635fff3dd93 /commands/account/cf.go
parent4d95c5371ecc4d667652bb0f5df43c68823ed08b (diff)
downloadaerc-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/cf.go')
-rw-r--r--commands/account/cf.go19
1 files changed, 16 insertions, 3 deletions
diff --git a/commands/account/cf.go b/commands/account/cf.go
index e96ab2d6..c6993a23 100644
--- a/commands/account/cf.go
+++ b/commands/account/cf.go
@@ -3,6 +3,7 @@ package account
import (
"errors"
"reflect"
+ "strings"
"time"
"git.sr.ht/~rjarry/aerc/app"
@@ -18,7 +19,7 @@ var history map[string]string
type ChangeFolder struct {
Account bool `opt:"-a"`
- Folder string `opt:"..." complete:"CompleteFolder"`
+ Folder string `opt:"..." complete:"CompleteFolderAndNotmuch"`
}
func init() {
@@ -34,7 +35,7 @@ func (ChangeFolder) Aliases() []string {
return []string{"cf"}
}
-func (c *ChangeFolder) CompleteFolder(arg string) []string {
+func (c *ChangeFolder) CompleteFolderAndNotmuch(arg string) []string {
var acct *app.AccountView
args := opt.LexArgs(c.Folder)
@@ -51,7 +52,7 @@ func (c *ChangeFolder) CompleteFolder(arg string) []string {
if acct == nil {
return nil
}
- return commands.FilterList(
+ retval := commands.FilterList(
acct.Directories().List(), arg,
func(s string) string {
dir := acct.Directories().Directory(s)
@@ -61,6 +62,18 @@ func (c *ChangeFolder) CompleteFolder(arg string) []string {
return s
},
)
+ notmuch, _ := handlers.GetHandlerForScheme("notmuch", new(types.Worker))
+ if reflect.TypeOf(notmuch) == reflect.TypeOf(acct.Worker().Backend) {
+ notmuchcomps := handleNotmuchComplete(arg)
+ for _, prefix := range notmuch_search_terms {
+ if strings.HasPrefix(arg, prefix) {
+ return notmuchcomps
+ }
+ }
+ retval = append(retval, notmuchcomps...)
+
+ }
+ return retval
}
func (c ChangeFolder) Execute([]string) error {