diff options
-rw-r--r-- | commands/close.go | 59 | ||||
-rw-r--r-- | commands/compose/abort.go | 33 | ||||
-rw-r--r-- | commands/msgview/close.go | 30 | ||||
-rw-r--r-- | commands/terminal/close.go | 30 | ||||
-rw-r--r-- | doc/aerc.1.scd | 12 | ||||
-rw-r--r-- | widgets/aerc.go | 8 |
6 files changed, 100 insertions, 72 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") - } -} diff --git a/commands/compose/abort.go b/commands/compose/abort.go new file mode 100644 index 0000000..4c121d7 --- /dev/null +++ b/commands/compose/abort.go @@ -0,0 +1,33 @@ +package compose + +import ( + "errors" + + "git.sr.ht/~sircmpwn/aerc/widgets" +) + +type Abort struct{} + +func init() { + register(Abort{}) +} + +func (_ Abort) Aliases() []string { + return []string{"abort"} +} + +func (_ Abort) Complete(aerc *widgets.Aerc, args []string) []string { + return nil +} + +func (_ Abort) Execute(aerc *widgets.Aerc, args []string) error { + if len(args) != 1 { + return errors.New("Usage: abort") + } + composer, _ := aerc.SelectedTab().(*widgets.Composer) + + aerc.RemoveTab(composer) + composer.Close() + + return nil +} diff --git a/commands/msgview/close.go b/commands/msgview/close.go new file mode 100644 index 0000000..6a7eb0a --- /dev/null +++ b/commands/msgview/close.go @@ -0,0 +1,30 @@ +package msgview + +import ( + "errors" + + "git.sr.ht/~sircmpwn/aerc/widgets" +) + +type Close struct{} + +func init() { + register(Close{}) +} + +func (_ Close) Aliases() []string { + return []string{"close"} +} + +func (_ Close) Complete(aerc *widgets.Aerc, args []string) []string { + return nil +} + +func (_ Close) Execute(aerc *widgets.Aerc, args []string) error { + if len(args) != 1 { + return errors.New("Usage: close") + } + mv, _ := aerc.SelectedTab().(*widgets.MessageViewer) + aerc.RemoveTab(mv) + return nil +} diff --git a/commands/terminal/close.go b/commands/terminal/close.go new file mode 100644 index 0000000..8256e67 --- /dev/null +++ b/commands/terminal/close.go @@ -0,0 +1,30 @@ +package terminal + +import ( + "errors" + + "git.sr.ht/~sircmpwn/aerc/widgets" +) + +type Close struct{} + +func init() { + register(Close{}) +} + +func (_ Close) Aliases() []string { + return []string{"close"} +} + +func (_ Close) Complete(aerc *widgets.Aerc, args []string) []string { + return nil +} + +func (_ Close) Execute(aerc *widgets.Aerc, args []string) error { + if len(args) != 1 { + return errors.New("Usage: close") + } + term, _ := aerc.SelectedTab().(*widgets.Terminal) + term.Close(nil) + return nil +} diff --git a/doc/aerc.1.scd b/doc/aerc.1.scd index c8c01a1..5f2f83b 100644 --- a/doc/aerc.1.scd +++ b/doc/aerc.1.scd @@ -41,10 +41,6 @@ These commands work in any context. it's treated as an index. If + or - is specified, the number is interpreted as a delta from the selected tab. -*close* [tab name] - Closes current tab if no tab name provided, or tab with tab name if - argument is provided. Cannot close account tabs. - *exec* <command...> Executes an arbitrary command in the background. @@ -188,6 +184,9 @@ message list, the message in the message viewer, etc). ## MESSAGE VIEW COMMANDS +*close* + Closes the message viewer. + *next* <n>[%], *prev* <n>[%] Selects the next (or previous) message in the message list. If specified as a percentage, the percentage is applied to the number of messages shown on @@ -212,7 +211,7 @@ message list, the message in the message viewer, etc). ## MESSAGE COMPOSE COMMANDS *abort* - Close the composor without sending, discarding the message in progress. + Close the composor without sending, discarding the message in progress. *attach* <path> Attaches the file at the given path to the email. @@ -247,6 +246,9 @@ message list, the message in the message viewer, etc). ## TERMINAL COMMANDS +*close* + Closes the terminal. + # LOGGING Aerc does not log by default, but collecting log output can be useful for diff --git a/widgets/aerc.go b/widgets/aerc.go index 2c783d4..5a7914a 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -244,14 +244,6 @@ func (aerc *Aerc) SelectedTab() ui.Drawable { return aerc.tabs.Tabs[aerc.tabs.Selected].Content } -func (aerc *Aerc) SelectedTabName() string { - return aerc.tabs.Tabs[aerc.tabs.Selected].Name -} - -func (aerc *Aerc) SelectedTabIndex() int { - return aerc.tabs.Selected -} - func (aerc *Aerc) NewTab(drawable ui.Drawable, name string) *ui.Tab { tab := aerc.tabs.Add(drawable, name) aerc.tabs.Select(len(aerc.tabs.Tabs) - 1) |