diff options
Diffstat (limited to 'commands')
-rw-r--r-- | commands/commands.go | 17 | ||||
-rw-r--r-- | commands/ct.go | 3 |
2 files changed, 17 insertions, 3 deletions
diff --git a/commands/commands.go b/commands/commands.go index c6f149f2..3f7fbcd4 100644 --- a/commands/commands.go +++ b/commands/commands.go @@ -2,6 +2,7 @@ package commands import ( "errors" + "sort" "strings" "unicode" @@ -73,12 +74,19 @@ func (cmds *Commands) GetCompletions(aerc *widgets.Aerc, cmd string) []string { } if len(args) == 0 { - return nil + names := cmds.Names() + sort.Strings(names) + return names } - if len(args) > 1 { + if len(args) > 1 || cmd[len(cmd)-1] == ' ' { if cmd, ok := cmds.dict()[args[0]]; ok { - completions := cmd.Complete(aerc, args[1:]) + var completions []string + if len(args) > 1 { + completions = cmd.Complete(aerc, args[1:]) + } else { + completions = cmd.Complete(aerc, []string{}) + } if completions != nil && len(completions) == 0 { return nil } @@ -109,6 +117,9 @@ func (cmds *Commands) GetCompletions(aerc *widgets.Aerc, cmd string) []string { func GetFolders(aerc *widgets.Aerc, args []string) []string { out := make([]string, 0) lower_only := false + if len(args) == 0 { + return aerc.SelectedAccount().Directories().List() + } for _, rune := range args[0] { lower_only = lower_only || unicode.IsLower(rune) } diff --git a/commands/ct.go b/commands/ct.go index ab2993d4..19fb63aa 100644 --- a/commands/ct.go +++ b/commands/ct.go @@ -19,6 +19,9 @@ func (_ ChangeTab) Aliases() []string { } func (_ ChangeTab) Complete(aerc *widgets.Aerc, args []string) []string { + if len(args) == 0 { + return aerc.TabNames() + } out := make([]string, 0) for _, tab := range aerc.TabNames() { if strings.HasPrefix(tab, args[0]) { |