diff options
-rw-r--r-- | commands/msg/reply.go | 12 | ||||
-rw-r--r-- | config/viewer.go | 2 | ||||
-rw-r--r-- | doc/aerc-config.5.scd | 5 |
3 files changed, 18 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"}) } }) diff --git a/config/viewer.go b/config/viewer.go index c00e62f4..3f7c6934 100644 --- a/config/viewer.go +++ b/config/viewer.go @@ -15,6 +15,7 @@ type ViewerConfig struct { ParseHttpLinks bool `ini:"parse-http-links"` HeaderLayout [][]string `ini:"-"` KeyPassthrough bool `ini:"-"` + CloseOnReply bool `ini:"close-on-reply"` } func defaultViewerConfig() ViewerConfig { @@ -29,6 +30,7 @@ func defaultViewerConfig() ViewerConfig { {"Subject"}, }, ParseHttpLinks: true, + CloseOnReply: false, } } diff --git a/doc/aerc-config.5.scd b/doc/aerc-config.5.scd index 40825864..ac9a3a73 100644 --- a/doc/aerc-config.5.scd +++ b/doc/aerc-config.5.scd @@ -500,6 +500,11 @@ These options are configured in the *[viewer]* section of _aerc.conf_. Default: _true_ +*close-on-reply* + Close the view tab when replying. If the reply is not sent, reopen the view tab. + + Default: _false_ + # COMPOSE These options are configured in the *[compose]* section of _aerc.conf_. |