about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--commands/msg/reply.go29
1 files changed, 28 insertions, 1 deletions
diff --git a/commands/msg/reply.go b/commands/msg/reply.go
index fcd8341..778c0ef 100644
--- a/commands/msg/reply.go
+++ b/commands/msg/reply.go
@@ -154,7 +154,10 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
 	h.SetAddressList("from", []*mail.Address{from})
 	h.SetSubject(subject)
 	h.SetMsgIDList("in-reply-to", []string{msg.Envelope.MessageId})
-	//TODO: references header
+	err = setReferencesHeader(h, msg.RFC822Headers)
+	if err != nil {
+		aerc.PushError(fmt.Sprintf("could not set references: %v", err))
+	}
 	original := models.OriginalMail{
 		From:          format.FormatAddresses(msg.Envelope.From),
 		Date:          msg.Envelope.Date,
@@ -248,3 +251,27 @@ func (s addrSet) Contains(a *mail.Address) bool {
 	_, ok := s[a.Address]
 	return ok
 }
+
+//setReferencesHeader adds the references header to target based on parent
+//according to RFC2822
+func setReferencesHeader(target, parent *mail.Header) error {
+	refs, err := parent.MsgIDList("references")
+	if err != nil {
+		return err
+	}
+	if len(refs) == 0 {
+		// according to the RFC we need to fall back to in-reply-to only if
+		// References is not set
+		refs, err = parent.MsgIDList("in-reply-to")
+		if err != nil {
+			return err
+		}
+	}
+	msgID, err := parent.MessageID()
+	if err != nil {
+		return err
+	}
+	refs = append(refs, msgID)
+	target.SetMsgIDList("references", refs)
+	return nil
+}
t; 2014-11-19 23:58:55 +0000 committer James Booth <boothj5@gmail.com> 2014-11-19 23:58:55 +0000 Added [ui] preferences to themes' href='/danisanti/profani-tty/commit/themes/simple?id=20fa96325d9b0618646d5fb94f98d2ffde66a0d8'>20fa9632 ^
3000916a ^
4eb0f14a ^

cce01f1d ^
4eb0f14a ^

8413020a ^
216493ef ^



5bccee93 ^
abc2f0de ^
cf80fdc3 ^
e58be44f ^
27adf031 ^

30b5f112 ^


446027b9 ^
f0f3a739 ^
93358d5e ^
fb7001cf ^
72c1c496 ^
bab75cae ^
d3cc5bd7 ^



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51