Modify format_headers_sprinter so that it returns all headers in the sexp, instead of a fixed set of headers.
This is required in order for the elisp variable `notmuch-message-headers' to work. See this bug report: https://notmuchmail.org/pipermail/notmuch/2017/026069.html --- notmuch-show.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/notmuch-show.c b/notmuch-show.c index 21792a57..9652ed09 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -205,6 +205,15 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, char *recipients_string; const char *reply_to_string; void *local = talloc_new (sp); + GMimeHeaderList *header_list; + GMimeHeader *header; + int header_count; + /* Headers requiring some special treatment in formatting */ + const char* special_headers[] = {"Subject", "From", "To", "Cc", "Bcc", + "Reply-To", "In-reply-to", "References", + "Date"}; + const int special_header_count = sizeof(special_headers) / sizeof(char *); + bool special; sp->begin_map (sp); @@ -255,6 +264,24 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, sp->string (sp, g_mime_message_get_date_string (sp, message)); } + header_list = g_mime_object_get_header_list (GMIME_OBJECT(message)); + header_count = g_mime_header_list_get_count(header_list); + + for (int i = 0; i < header_count; i++) { + header = g_mime_header_list_get_header_at(header_list, i); + special = false; + for (int k = 0; k < special_header_count; k++) + if (!STRNCMP_LITERAL(g_mime_header_get_name(header), + special_headers[k])) { + special = true; + break; + } + if (special) + continue; + sp->map_key (sp, g_mime_header_get_name(header)); + sp->string (sp, g_mime_header_get_value(header)); + } + sp->end (sp); talloc_free (local); } -- 2.21.0 (Apple Git-122) _______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch