aboutsummaryrefslogtreecommitdiff
path: root/commands/ct.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/ct.go')
-rw-r--r--commands/ct.go21
1 files changed, 9 insertions, 12 deletions
diff --git a/commands/ct.go b/commands/ct.go
index 3bd3428e..01eec808 100644
--- a/commands/ct.go
+++ b/commands/ct.go
@@ -2,14 +2,15 @@ package commands
import (
"errors"
- "fmt"
"strconv"
"strings"
"git.sr.ht/~rjarry/aerc/widgets"
)
-type ChangeTab struct{}
+type ChangeTab struct {
+ Tab string `opt:"TAB"`
+}
func init() {
register(ChangeTab{})
@@ -27,25 +28,21 @@ func (ChangeTab) Complete(aerc *widgets.Aerc, args []string) []string {
return FilterList(aerc.TabNames(), joinedArgs, "", aerc.SelectedAccountUiConfig().FuzzyComplete)
}
-func (ChangeTab) Execute(aerc *widgets.Aerc, args []string) error {
- if len(args) == 1 {
- return fmt.Errorf("Usage: %s <tab>", args[0])
- }
- joinedArgs := strings.Join(args[1:], " ")
- if joinedArgs == "-" {
+func (c ChangeTab) Execute(aerc *widgets.Aerc, args []string) error {
+ if c.Tab == "-" {
ok := aerc.SelectPreviousTab()
if !ok {
return errors.New("No previous tab to return to")
}
} else {
- n, err := strconv.Atoi(joinedArgs)
+ n, err := strconv.Atoi(c.Tab)
if err == nil {
switch {
- case strings.HasPrefix(joinedArgs, "+"):
+ case strings.HasPrefix(c.Tab, "+"):
for ; n > 0; n-- {
aerc.NextTab()
}
- case strings.HasPrefix(joinedArgs, "-"):
+ case strings.HasPrefix(c.Tab, "-"):
for ; n < 0; n++ {
aerc.PrevTab()
}
@@ -57,7 +54,7 @@ func (ChangeTab) Execute(aerc *widgets.Aerc, args []string) error {
}
}
} else {
- ok := aerc.SelectTab(joinedArgs)
+ ok := aerc.SelectTab(c.Tab)
if !ok {
return errors.New("No tab with that name")
}