diff options
| -rw-r--r-- | commands/account/cf.go | 3 | ||||
| -rw-r--r-- | commands/commands.go | 23 | ||||
| -rw-r--r-- | commands/msg/move.go | 3 | ||||
| -rw-r--r-- | widgets/dirlist.go | 6 | 
4 files changed, 32 insertions, 3 deletions
| diff --git a/commands/account/cf.go b/commands/account/cf.go index 197e956..6c928ea 100644 --- a/commands/account/cf.go +++ b/commands/account/cf.go @@ -3,6 +3,7 @@ package account  import (  	"errors" +	"git.sr.ht/~sircmpwn/aerc/commands"  	"git.sr.ht/~sircmpwn/aerc/widgets"  ) @@ -22,7 +23,7 @@ func (_ ChangeFolder) Aliases() []string {  }  func (_ ChangeFolder) Complete(aerc *widgets.Aerc, args []string) []string { -	return nil +	return commands.GetFolders(aerc, args)  }  func (_ ChangeFolder) Execute(aerc *widgets.Aerc, args []string) error { diff --git a/commands/commands.go b/commands/commands.go index 8d50b41..e53bdfe 100644 --- a/commands/commands.go +++ b/commands/commands.go @@ -3,6 +3,7 @@ package commands  import (  	"errors"  	"strings" +	"unicode"  	"github.com/google/shlex" @@ -108,3 +109,25 @@ func (cmds *Commands) GetCompletions(aerc *widgets.Aerc, cmd string) []string {  	}  	return nil  } + +const caps string = "ABCDEFGHIJKLMNOPQRSTUVXYZ" + +func GetFolders(aerc *widgets.Aerc, args []string) []string { +	out := make([]string, 0) +	lower_only := false +	for _, rune := range args[0] { +		lower_only = lower_only || unicode.IsLower(rune) +	} + +	for _, dir := range aerc.SelectedAccount().Directories().List() { +		test := dir +		if lower_only { +			test = strings.ToLower(dir) +		} + +		if strings.HasPrefix(test, args[0]) { +			out = append(out, dir) +		} +	} +	return out +} diff --git a/commands/msg/move.go b/commands/msg/move.go index 45199b6..c98157e 100644 --- a/commands/msg/move.go +++ b/commands/msg/move.go @@ -7,6 +7,7 @@ import (  	"git.sr.ht/~sircmpwn/getopt"  	"github.com/gdamore/tcell" +	"git.sr.ht/~sircmpwn/aerc/commands"  	"git.sr.ht/~sircmpwn/aerc/widgets"  	"git.sr.ht/~sircmpwn/aerc/worker/types"  ) @@ -22,7 +23,7 @@ func (_ Move) Aliases() []string {  }  func (_ Move) Complete(aerc *widgets.Aerc, args []string) []string { -	return nil +	return commands.GetFolders(aerc, args)  }  func (_ Move) Execute(aerc *widgets.Aerc, args []string) error { diff --git a/widgets/dirlist.go b/widgets/dirlist.go index 944b72e..1cbc055 100644 --- a/widgets/dirlist.go +++ b/widgets/dirlist.go @@ -43,10 +43,14 @@ func NewDirectoryList(acctConf *config.AccountConfig, uiConf *config.UIConfig,  	return dirlist  } -func (dirlist *DirectoryList) List() []string { +func (dirlist *DirectoryList) FilteredList() []string {  	return dirlist.dirs  } +func (dirlist *DirectoryList) List() []string { +	return dirlist.store.List() +} +  func (dirlist *DirectoryList) UpdateList(done func(dirs []string)) {  	var dirs []string  	dirlist.worker.PostAction( | 
