summary refs log tree commit diff stats
path: root/widgets/compose.go
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-05-16 12:15:34 -0400
committerDrew DeVault <sir@cmpwn.com>2019-05-16 12:15:34 -0400
commit475b697bdfd7a5821282174f14f8d904e47aff4d (patch)
tree7febf2e25cede5809f1d40c934d379315e06bd64 /widgets/compose.go
parent2b3e123cb86f9b4c5853e31d9e76c2b0d083f90a (diff)
downloadaerc-475b697bdfd7a5821282174f14f8d904e47aff4d.tar.gz
Implement (basic form) of :reply
Diffstat (limited to 'widgets/compose.go')
-rw-r--r--widgets/compose.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/widgets/compose.go b/widgets/compose.go
index 2359cad..02a9d0c 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -14,6 +14,7 @@ import (
 	"github.com/mattn/go-runewidth"
 
 	"git.sr.ht/~sircmpwn/aerc2/config"
+	"git.sr.ht/~sircmpwn/aerc2/lib"
 	"git.sr.ht/~sircmpwn/aerc2/lib/ui"
 	"git.sr.ht/~sircmpwn/aerc2/worker/types"
 )
@@ -123,6 +124,13 @@ func (c *Composer) Defaults(defaults map[string]string) *Composer {
 	return c
 }
 
+func (c *Composer) FocusTerminal() *Composer {
+	c.focusable[c.focused].Focus(false)
+	c.focused = 3
+	c.focusable[c.focused].Focus(true)
+	return c
+}
+
 func (c *Composer) OnSubjectChange(fn func(subject string)) {
 	c.headers.subject.OnChange(func() {
 		fn(c.headers.subject.input.String())
@@ -197,9 +205,9 @@ func (c *Composer) PrepareHeader() (*mail.Header, []string, error) {
 		c.email.Seek(0, os.SEEK_SET)
 	}
 	// Update headers
-	// TODO: Custom header fields
 	mhdr := (*message.Header)(&header.Header)
 	mhdr.SetContentType("text/plain", map[string]string{"charset": "UTF-8"})
+	mhdr.SetText("Message-Id", lib.GenerateMessageId())
 	if subject, _ := header.Subject(); subject == "" {
 		header.SetSubject(c.headers.subject.input.String())
 	}
@@ -228,14 +236,14 @@ func (c *Composer) PrepareHeader() (*mail.Header, []string, error) {
 			rcpts = append(rcpts, addr.Address)
 		}
 	}
+	// TODO: Add cc, bcc to rcpts
 	// Merge in additional headers
 	txthdr := mhdr.Header
 	for key, value := range c.defaults {
-		if !txthdr.Has(key) {
+		if !txthdr.Has(key) && value != "" {
 			mhdr.SetText(key, value)
 		}
 	}
-	// TODO: Add cc, bcc to rcpts
 	return &header, rcpts, nil
 }