diff options
Diffstat (limited to 'commands/close.go')
-rw-r--r-- | commands/close.go | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/commands/close.go b/commands/close.go deleted file mode 100644 index c885ee9..0000000 --- a/commands/close.go +++ /dev/null @@ -1,59 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - - "git.sr.ht/~sircmpwn/aerc/widgets" -) - -type Close struct{} - -func init() { - register(Close{}) -} - -func (_ Close) Aliases() []string { - return []string{"close", "abort"} -} - -func (_ Close) Complete(aerc *widgets.Aerc, args []string) []string { - return nil -} - -func (_ Close) Execute(aerc *widgets.Aerc, args []string) error { - if len(args) > 2 { - return errors.New("Usage: close [tab name]") - } else if len(args) == 1 { - return CloseTab(aerc, aerc.SelectedTabName()) - } else { - tabname := args[1] - for _, tab := range aerc.TabNames() { - if tab == tabname { - return CloseTab(aerc, tabname) - } - } - return errors.New(fmt.Sprintf("Tab %s not found", tabname)) - } - return nil -} - -func CloseTab(aerc *widgets.Aerc, tabname string) error { - curTabIndex := aerc.SelectedTabIndex() - aerc.SelectTab(tabname) - switch tab := aerc.SelectedTab().(type) { - default: - aerc.RemoveTab(tab) - return nil - case *widgets.Terminal: - tab.Close(nil) - return nil - case *widgets.Composer: - aerc.RemoveTab(tab) - tab.Close() - return nil - case *widgets.AccountView: - aerc.SelectTabIndex(curTabIndex) - return errors.New("Cannot close account tab") - } -} |