init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package commands
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.sr.ht/~rjarry/aerc/app"
|
||||
)
|
||||
|
||||
type ChangeTab struct {
|
||||
Tab string `opt:"tab" complete:"CompleteTab" desc:"Tab name."`
|
||||
}
|
||||
|
||||
func init() {
|
||||
Register(ChangeTab{})
|
||||
}
|
||||
|
||||
func (ChangeTab) Description() string {
|
||||
return "Change the focus to the specified tab."
|
||||
}
|
||||
|
||||
func (ChangeTab) Context() CommandContext {
|
||||
return GLOBAL
|
||||
}
|
||||
|
||||
func (ChangeTab) Aliases() []string {
|
||||
return []string{"ct", "change-tab"}
|
||||
}
|
||||
|
||||
func (*ChangeTab) CompleteTab(arg string) []string {
|
||||
return FilterList(app.TabNames(), arg, nil)
|
||||
}
|
||||
|
||||
func (c ChangeTab) Execute(args []string) error {
|
||||
if c.Tab == "-" {
|
||||
ok := app.SelectPreviousTab()
|
||||
if !ok {
|
||||
return errors.New("No previous tab to return to")
|
||||
}
|
||||
} else {
|
||||
n, err := strconv.Atoi(c.Tab)
|
||||
if err == nil {
|
||||
if strings.HasPrefix(c.Tab, "+") || strings.HasPrefix(c.Tab, "-") {
|
||||
app.SelectTabAtOffset(n)
|
||||
} else {
|
||||
ok := app.SelectTabIndex(n)
|
||||
if !ok {
|
||||
return errors.New("No tab with that index")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ok := app.SelectTab(c.Tab)
|
||||
if !ok {
|
||||
return errors.New("No tab with that name")
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user