M commands/msg/forward.go => commands/msg/forward.go +9 -1
@@ 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"
M doc/aerc.1.scd => doc/aerc.1.scd +1 -1
@@ 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>
M widgets/compose.go => widgets/compose.go +7 -0
@@ 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 {