diff options
author | Daniel Bridges <bridges2@gmail.com> | 2019-08-07 23:15:59 -0700 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-08-12 08:57:04 +0900 |
commit | 5b523880b4b4cd2abd9457b4b09c384af33be14b (patch) | |
tree | d7e939351465b461353d35d3d3ee0508cf6dcdee | |
parent | a1749411e61d20f701442c9c7e58464f4e0203b8 (diff) | |
download | aerc-5b523880b4b4cd2abd9457b4b09c384af33be14b.tar.gz |
Let user edit arbitrary headers in composer
-rw-r--r-- | commands/account/compose.go | 36 | ||||
-rw-r--r-- | doc/aerc.1.scd | 6 |
2 files changed, 37 insertions, 5 deletions
diff --git a/commands/account/compose.go b/commands/account/compose.go index f615c0b7..fa673f08 100644 --- a/commands/account/compose.go +++ b/commands/account/compose.go @@ -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 +} diff --git a/doc/aerc.1.scd b/doc/aerc.1.scd index 10e6485f..67bfba24 100644 --- a/doc/aerc.1.scd +++ b/doc/aerc.1.scd @@ -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. |