~sircmpwn/aerc

36c6030e81b229414bb42bf7fc37d091c6497ddf — Jelle Besseling 1 year, 5 months ago 217e885
Add addresses argument to forward command
3 files changed, 17 insertions(+), 2 deletions(-)

M commands/msg/forward.go
M doc/aerc.1.scd
M widgets/compose.go
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 {