diff --git a/commands/commands.go b/commands/commands.go index 39720bf..0c761d1 100644 --- a/commands/commands.go +++ b/commands/commands.go @@ -128,6 +128,21 @@ func GetFolders(aerc *widgets.Aerc, args []string) []string { return out } +// CompletionFromList provides a convenience wrapper for commands to use in the +// Complete function. It simply matches the items provided in valid +func CompletionFromList(valid []string, args []string) []string { + out := make([]string, 0) + if len(args) == 0 { + return valid + } + for _, v := range valid { + if hasCaseSmartPrefix(v, args[0]) { + out = append(out, v) + } + } + return out +} + func GetLabels(aerc *widgets.Aerc, args []string) []string { if len(args) == 0 { return aerc.SelectedAccount().Labels() diff --git a/commands/msg/archive.go b/commands/msg/archive.go index 966d598..783ab04 100644 --- a/commands/msg/archive.go +++ b/commands/msg/archive.go @@ -32,7 +32,8 @@ func (Archive) Aliases() []string { } func (Archive) Complete(aerc *widgets.Aerc, args []string) []string { - return nil + valid := []string{"flat", "year", "month"} + return commands.CompletionFromList(valid, args) } func (Archive) Execute(aerc *widgets.Aerc, args []string) error {