commands: add switch-account command for composer
Switch accounts when in the composer mode. When switching accounts, the From header, the crypto status and the address completer will be updated. Accounts can be switched with :switch-account <account-name>. The completions for the switch-account command will list the available accounts. If switch-account is run without arguments, the current account name with the correct usage is displayed. Fixes: https://todo.sr.ht/~rjarry/aerc/72 Signed-off-by: Koni Marti <koni.marti@gmail.com> Acked-by: Robin Jarry <robin@jarry.cc>
This commit is contained in:
parent
ee4f2ea49d
commit
d371c1ac8d
2 changed files with 51 additions and 0 deletions
47
commands/compose/switch.go
Normal file
47
commands/compose/switch.go
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package compose
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"git.sr.ht/~rjarry/aerc/widgets"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AccountSwitcher interface {
|
||||||
|
SwitchAccount(*widgets.AccountView) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type SwitchAccount struct{}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
register(SwitchAccount{})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SwitchAccount) Aliases() []string {
|
||||||
|
return []string{"switch-account"}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SwitchAccount) Complete(aerc *widgets.Aerc, args []string) []string {
|
||||||
|
return aerc.AccountNames()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (SwitchAccount) Execute(aerc *widgets.Aerc, args []string) error {
|
||||||
|
if len(args) != 2 {
|
||||||
|
name := ""
|
||||||
|
if acct := aerc.SelectedAccount(); acct != nil {
|
||||||
|
name = fmt.Sprintf("Current account: %s. ", acct.Name())
|
||||||
|
}
|
||||||
|
return errors.New(name + "Usage: switch-account <account-name>")
|
||||||
|
}
|
||||||
|
|
||||||
|
switcher, ok := aerc.SelectedTabContent().(AccountSwitcher)
|
||||||
|
if !ok {
|
||||||
|
return errors.New("this tab cannot switch accounts")
|
||||||
|
}
|
||||||
|
|
||||||
|
if acct, err := aerc.Account(args[1]); err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
return switcher.SwitchAccount(acct)
|
||||||
|
}
|
||||||
|
}
|
|
@ -476,6 +476,10 @@ message list, the message in the message viewer, etc).
|
||||||
configuration. For details on configuring outgoing mail delivery consult
|
configuration. For details on configuring outgoing mail delivery consult
|
||||||
*aerc-config*(5).
|
*aerc-config*(5).
|
||||||
|
|
||||||
|
*switch-account* <account-name>
|
||||||
|
Switches the account. If run without arguments, the current account name
|
||||||
|
is displayed.
|
||||||
|
|
||||||
*header* [-f] <field> [value]
|
*header* [-f] <field> [value]
|
||||||
Add a new email header. If the header already exists, -f must be
|
Add a new email header. If the header already exists, -f must be
|
||||||
specified to replace the given value.
|
specified to replace the given value.
|
||||||
|
|
Loading…
Reference in a new issue