summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--commands/commands.go15
-rw-r--r--commands/msg/archive.go3
2 files changed, 17 insertions, 1 deletions
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 {