aboutsummaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
authorBence Ferdinandy <bence@ferdinandy.com>2022-11-24 15:11:26 +0100
committerRobin Jarry <robin@jarry.cc>2022-12-02 22:59:44 +0100
commitc2c5cbd4c0d6254ce4553e56f1b2b010858eb869 (patch)
treeaada282b14cb87d0ddf1b8c92f92f31e65559ac9 /commands
parent17718981c5d1db0775407d45f83dcd026758ab47 (diff)
downloadaerc-c2c5cbd4c0d6254ce4553e56f1b2b010858eb869.tar.gz
view: add close-on-reply option
Opening an email to view and then to reply will have two tabs open, and after a reply the view tab needs to be closed manually. Allow the user to set a close-on-reply option that will close the viewer tab when replying and reopen the viewer tab in case the reply is not sent. Signed-off-by: Bence Ferdinandy <bence@ferdinandy.com> Tested-by: Inwit <inwit@sindominio.net> Signed-off-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands')
-rw-r--r--commands/msg/reply.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/commands/msg/reply.go b/commands/msg/reply.go
index 066eaca3..12eba928 100644
--- a/commands/msg/reply.go
+++ b/commands/msg/reply.go
@@ -10,6 +10,7 @@ import (
"git.sr.ht/~sircmpwn/getopt"
+ "git.sr.ht/~rjarry/aerc/commands/account"
"git.sr.ht/~rjarry/aerc/lib"
"git.sr.ht/~rjarry/aerc/lib/crypto"
"git.sr.ht/~rjarry/aerc/lib/format"
@@ -176,6 +177,7 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
RFC822Headers: msg.RFC822Headers,
}
+ mv, _ := aerc.SelectedTabContent().(*widgets.MessageViewer)
addTab := func() error {
composer, err := widgets.NewComposer(aerc, acct, aerc.Config(),
acct.AccountConfig(), acct.Worker(), template, h, original)
@@ -183,6 +185,10 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
aerc.PushError("Error: " + err.Error())
return err
}
+ if (mv != nil) && aerc.Config().Viewer.CloseOnReply {
+ mv.Close()
+ aerc.RemoveTab(mv)
+ }
if args[0] == "reply" {
composer.FocusTerminal()
@@ -199,8 +205,12 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
})
composer.OnClose(func(c *widgets.Composer) {
- if c.Sent() {
+ switch {
+ case c.Sent():
store.Answered([]uint32{msg.Uid}, true, nil)
+ case mv != nil && aerc.Config().Viewer.CloseOnReply:
+ //nolint:errcheck // who cares?
+ account.ViewMessage{}.Execute(aerc, []string{"-p"})
}
})