Let user edit arbitrary headers in composer
This commit is contained in:
parent
a1749411e6
commit
5b523880b4
2 changed files with 37 additions and 5 deletions
|
@ -1,9 +1,11 @@
|
|||
package account
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"git.sr.ht/~sircmpwn/aerc/widgets"
|
||||
"git.sr.ht/~sircmpwn/getopt"
|
||||
)
|
||||
|
||||
type Compose struct{}
|
||||
|
@ -20,10 +22,11 @@ func (_ Compose) Complete(aerc *widgets.Aerc, args []string) []string {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TODO: Accept arguments for default headers, message body
|
||||
// TODO: Accept arguments for message body
|
||||
func (_ Compose) Execute(aerc *widgets.Aerc, args []string) error {
|
||||
if len(args) != 1 {
|
||||
return errors.New("Usage: compose")
|
||||
body, err := buildBody(args)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
acct := aerc.SelectedAccount()
|
||||
composer := widgets.NewComposer(
|
||||
|
@ -37,5 +40,30 @@ func (_ Compose) Execute(aerc *widgets.Aerc, args []string) error {
|
|||
}
|
||||
tab.Content.Invalidate()
|
||||
})
|
||||
go composer.SetContents(strings.NewReader(body))
|
||||
return nil
|
||||
}
|
||||
|
||||
func buildBody(args []string) (string, error) {
|
||||
var body, headers string
|
||||
opts, _, err := getopt.Getopts(args, "H:")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
for _, opt := range opts {
|
||||
switch opt.Option {
|
||||
case 'H':
|
||||
if strings.Index(opt.Value, ":") != -1 {
|
||||
// ensure first colon is followed by a single space
|
||||
re := regexp.MustCompile(`^(.*?):\s*(.*)`)
|
||||
headers += re.ReplaceAllString(opt.Value, "$1: $2") + "\n"
|
||||
} else {
|
||||
headers += opt.Value + ":\n"
|
||||
}
|
||||
}
|
||||
}
|
||||
if headers != "" {
|
||||
body = headers + "\n\n"
|
||||
}
|
||||
return body, nil
|
||||
}
|
||||
|
|
|
@ -139,11 +139,15 @@ message list, the message in the message viewer, etc).
|
|||
*cf* <folder>
|
||||
Change the folder shown in the message list.
|
||||
|
||||
*compose*
|
||||
*compose* [-H]
|
||||
Open the compose window to send a new email. The new email will be sent with
|
||||
the current account's outgoing transport configuration. For details on
|
||||
configuring outgoing mail delivery consult *aerc-config*(5).
|
||||
|
||||
*-H* <header>
|
||||
Add the specified header to the message, e.g. 'compose -H "X-Custom: custom
|
||||
value"'
|
||||
|
||||
*filter* [options] <terms...>
|
||||
Similar to *search*, but filters the displayed messages to only the search
|
||||
results. See the documentation for *search* for more details.
|
||||
|
|
Loading…
Reference in a new issue