aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commands/msg/forward.go10
-rw-r--r--doc/aerc.1.scd2
-rw-r--r--widgets/compose.go7
3 files changed, 17 insertions, 2 deletions
diff --git a/commands/msg/forward.go b/commands/msg/forward.go
index d7ecf66..ca29096 100644
--- a/commands/msg/forward.go
+++ b/commands/msg/forward.go
@@ -8,6 +8,7 @@ import (
"github.com/emersion/go-message"
"github.com/emersion/go-message/mail"
"io"
+ "strings"
)
type forward struct{}
@@ -25,8 +26,9 @@ func (_ forward) Complete(aerc *widgets.Aerc, args []string) []string {
}
func (_ forward) Execute(aerc *widgets.Aerc, args []string) error {
+ to := ""
if len(args) != 1 {
- return errors.New("Usage: forward")
+ to = strings.Join(args[1:], ", ")
}
widget := aerc.SelectedTab().(widgets.ProvidesMessage)
@@ -46,6 +48,7 @@ func (_ forward) Execute(aerc *widgets.Aerc, args []string) error {
subject := "Fwd: " + msg.Envelope.Subject
defaults := map[string]string{
+ "To": to,
"Subject": subject,
}
composer := widgets.NewComposer(aerc.Config(), acct.AccountConfig(),
@@ -53,6 +56,11 @@ func (_ forward) Execute(aerc *widgets.Aerc, args []string) error {
addTab := func() {
tab := aerc.NewTab(composer, subject)
+ if len(args) == 1 {
+ composer.FocusRecipient()
+ } else {
+ composer.FocusTerminal()
+ }
composer.OnHeaderChange("Subject", func(subject string) {
if subject == "" {
tab.Name = "New email"
diff --git a/doc/aerc.1.scd b/doc/aerc.1.scd
index 5f2f83b..e172f89 100644
--- a/doc/aerc.1.scd
+++ b/doc/aerc.1.scd
@@ -90,7 +90,7 @@ message list, the message in the message viewer, etc).
*delete*
Deletes the selected message.
-*forward*
+*forward* [address...]
Opens the composer to forward the selected message to another recipient.
*move* <target>
diff --git a/widgets/compose.go b/widgets/compose.go
index c7e38b8..b4ae078 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -153,6 +153,13 @@ func (c *Composer) FocusSubject() *Composer {
return c
}
+func (c *Composer) FocusRecipient() *Composer {
+ c.focusable[c.focused].Focus(false)
+ c.focused = 1
+ c.focusable[c.focused].Focus(true)
+ return c
+}
+
// OnHeaderChange registers an OnChange callback for the specified header.
func (c *Composer) OnHeaderChange(header string, fn func(subject string)) {
if editor, ok := c.editors[header]; ok {