aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeszek CimaƂa <ernierasta@zori.cz>2020-01-08 21:44:16 +0100
committerDrew DeVault <sir@cmpwn.com>2020-01-09 14:31:19 -0500
commitd238272bdbbe5f417c3ec07e5ce39a77a9a97bd9 (patch)
treeba5400d5fb92aab25f07aeb4c3d0b960a7e88636
parent5255585b3b550bf9968f9d71c12274dd2ce5f210 (diff)
downloadaerc-d238272bdbbe5f417c3ec07e5ce39a77a9a97bd9.tar.gz
add .OriginalMIMEType variable to reply template
-rw-r--r--commands/msg/reply.go11
-rw-r--r--doc/aerc-templates.7.scd6
-rw-r--r--lib/templates/template.go33
-rw-r--r--models/models.go7
4 files changed, 39 insertions, 18 deletions
diff --git a/commands/msg/reply.go b/commands/msg/reply.go
index 2964a83e..3c69e274 100644
--- a/commands/msg/reply.go
+++ b/commands/msg/reply.go
@@ -157,6 +157,17 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
buf := new(bytes.Buffer)
buf.ReadFrom(reader)
original.Text = buf.String()
+ if len(msg.BodyStructure.Parts) == 0 {
+ original.MIMEType = fmt.Sprintf("%s/%s",
+ msg.BodyStructure.MIMEType, msg.BodyStructure.MIMESubType)
+ } else {
+ // TODO: still will be "multipart/mixed" for mixed mails with
+ // attachments, fix this after aerc could handle responding to
+ // such mails
+ original.MIMEType = fmt.Sprintf("%s/%s",
+ msg.BodyStructure.Parts[0].MIMEType,
+ msg.BodyStructure.Parts[0].MIMESubType)
+ }
addTab()
})
return nil
diff --git a/doc/aerc-templates.7.scd b/doc/aerc-templates.7.scd
index 3c8b123a..9382f2e1 100644
--- a/doc/aerc-templates.7.scd
+++ b/doc/aerc-templates.7.scd
@@ -60,6 +60,12 @@ available always.
Example:
{{.Subject}}
+*MIME Type*
+ MIME Type is available for quoted reply.
+
+ - OriginalMIMEType: MIME type info of quoted mail part. Usually
+ "text/plain" or "text/html".
+
*Original Message*
When using quoted reply or forward, the original message is available.
It can be used using two functions that are available to templates.
diff --git a/lib/templates/template.go b/lib/templates/template.go
index 8a345d97..6eae5a27 100644
--- a/lib/templates/template.go
+++ b/lib/templates/template.go
@@ -22,9 +22,10 @@ type TemplateData struct {
Date time.Time
Subject string
// Only available when replying with a quote
- OriginalText string
- OriginalFrom []*mail.Address
- OriginalDate time.Time
+ OriginalText string
+ OriginalFrom []*mail.Address
+ OriginalDate time.Time
+ OriginalMIMEType string
}
func TestTemplateData() TemplateData {
@@ -36,9 +37,10 @@ func TestTemplateData() TemplateData {
}
original := models.OriginalMail{
- Date: time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
- From: "John Doe <john@example.com>",
- Text: "This is only a test text",
+ Date: time.Now().Format("Mon Jan 2, 2006 at 3:04 PM"),
+ From: "John Doe <john@example.com>",
+ Text: "This is only a test text",
+ MIMEType: "text/plain",
}
return ParseTemplateData(defaults, original)
@@ -47,15 +49,16 @@ func TestTemplateData() TemplateData {
func ParseTemplateData(defaults map[string]string, original models.OriginalMail) TemplateData {
originalDate, _ := time.Parse("Mon Jan 2, 2006 at 3:04 PM", original.Date)
td := TemplateData{
- To: parseAddressList(defaults["To"]),
- Cc: parseAddressList(defaults["Cc"]),
- Bcc: parseAddressList(defaults["Bcc"]),
- From: parseAddressList(defaults["From"]),
- Date: time.Now(),
- Subject: defaults["Subject"],
- OriginalText: original.Text,
- OriginalFrom: parseAddressList(original.From),
- OriginalDate: originalDate,
+ To: parseAddressList(defaults["To"]),
+ Cc: parseAddressList(defaults["Cc"]),
+ Bcc: parseAddressList(defaults["Bcc"]),
+ From: parseAddressList(defaults["From"]),
+ Date: time.Now(),
+ Subject: defaults["Subject"],
+ OriginalText: original.Text,
+ OriginalFrom: parseAddressList(original.From),
+ OriginalDate: originalDate,
+ OriginalMIMEType: original.MIMEType,
}
return td
}
diff --git a/models/models.go b/models/models.go
index 7c3c192f..8d254a16 100644
--- a/models/models.go
+++ b/models/models.go
@@ -167,7 +167,8 @@ func FormatAddresses(addrs []*Address) string {
// OriginalMail is helper struct used for reply/forward
type OriginalMail struct {
- Date string
- From string
- Text string
+ Date string
+ From string
+ Text string
+ MIMEType string
}