From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 63F676DE0F58 for ; Sat, 16 Nov 2019 08:35:28 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: 0.4 X-Spam-Level: X-Spam-Status: No, score=0.4 tagged_above=-999 required=5 tests=[AWL=-0.252, SPF_NEUTRAL=0.652] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eazqU_DhozZL for ; Sat, 16 Nov 2019 08:35:26 -0800 (PST) Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) by arlo.cworth.org (Postfix) with ESMTP id 6CE8F6DE0C1E for ; Sat, 16 Nov 2019 08:35:24 -0800 (PST) Received: from guru.guru-group.fi (localhost [IPv6:::1]) by guru.guru-group.fi (Postfix) with ESMTP id EE92C1000B0 for ; Sat, 16 Nov 2019 18:35:19 +0200 (EET) From: Tomi Ollila To: notmuch@notmuchmail.org Subject: Re: [PATCH] Display extra headers for emacs-mua - db config option In-Reply-To: <20191116162723.18343-1-johan.parin@gmail.com> References: <20191116162723.18343-1-johan.parin@gmail.com> User-Agent: Notmuch/0.28.3+84~g41389bb (https://notmuchmail.org) Emacs/25.2.1 (x86_64-unknown-linux-gnu) X-Face: HhBM'cA~ MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Nov 2019 16:35:28 -0000 On Sat, Nov 16 2019, Johan Parin wrote: > Modify format_headers_sprinter so that it returns some additional headers > in the > sexp, instead of a small fixed set of headers. > > The extra header list is configured by the database config option > `show.extra_headers'. > > This is required in order for the elisp variable > `notmuch-message-headers' to work. I did not look the patch, but if there is going to be configuration option (either in config file, or in database), this way is (IMO) the most sensible alternative (add to the default options) -- no "full list" or "suppress header" options. Tomi > > See this bug report: > > https://notmuchmail.org/pipermail/notmuch/2017/026069.html > --- > doc/man1/notmuch-config.rst | 6 ++++++ > notmuch-config.c | 7 ++++--- > notmuch-show.c | 41 ++++++++++++++++++++++++++++++++++++- > 3 files changed, 50 insertions(+), 4 deletions(-) > > diff --git a/doc/man1/notmuch-config.rst b/doc/man1/notmuch-config.rst > index 28487079..0eb59883 100644 > --- a/doc/man1/notmuch-config.rst > +++ b/doc/man1/notmuch-config.rst > @@ -204,6 +204,12 @@ The available configuration items are described below. > supported. See **notmuch-search-terms(7)** for a list of existing > prefixes, and an explanation of probabilistic prefixes. > > +**show.extra_headers** > + A list of extra headers that will be output by **notmuch show** > + with ``--format=sexp``, if present in the message. > + > + Default: empty list. > + > **built_with.** > Compile time feature . Current possibilities include > "compact" (see **notmuch-compact(1)**) and "field_processor" (see > diff --git a/notmuch-config.c b/notmuch-config.c > index 1b079e85..6554ad9b 100644 > --- a/notmuch-config.c > +++ b/notmuch-config.c > @@ -841,9 +841,10 @@ typedef struct config_key { > > static struct config_key > config_key_table[] = { > - { "index.decrypt", true, false, NULL }, > - { "index.header.", true, true, validate_field_name }, > - { "query.", true, true, NULL }, > + { "index.decrypt", true, false, NULL }, > + { "index.header.", true, true, validate_field_name }, > + { "query.", true, true, NULL }, > + { "show.extra_headers", true, false, NULL } > }; > > static config_key_info_t * > diff --git a/notmuch-show.c b/notmuch-show.c > index 21792a57..4c77468f 100644 > --- a/notmuch-show.c > +++ b/notmuch-show.c > @@ -18,11 +18,16 @@ > * Author: Carl Worth > */ > > +#include > + > #include "notmuch-client.h" > #include "gmime-filter-reply.h" > #include "sprinter.h" > #include "zlib-extra.h" > > +static notmuch_database_t *notmuch = NULL; > + > + > static const char * > _get_tags_as_string (const void *ctx, notmuch_message_t *message) > { > @@ -195,6 +200,38 @@ _is_from_line (const char *line) > return 0; > } > > +/* Output extra headers if configured with the `show.extra_headers' > + * database configuration option > + */ > +void > +format_extra_headers_sprinter (sprinter_t *sp, GMimeMessage *message) > +{ > + GMimeHeaderList *header_list; > + GMimeHeader *header; > + char *extra_headers, *tofree, *header_name; > + > + if (notmuch == NULL) > + return; > + > + if (notmuch_database_get_config (notmuch, "show.extra_headers", > + &extra_headers) != NOTMUCH_STATUS_SUCCESS) > + return; > + > + header_list = g_mime_object_get_header_list (GMIME_OBJECT(message)); > + > + tofree = extra_headers; > + while ( (header_name = strsep(&extra_headers, ";")) != NULL) { > + > + header = g_mime_header_list_get_header (header_list, header_name); > + if (header == NULL) > + continue; > + > + sp->map_key (sp, g_mime_header_get_name(header)); > + sp->string (sp, g_mime_header_get_value(header)); > + } > + free (tofree); > +} > + > void > format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, > bool reply, const _notmuch_message_crypto_t *msg_crypto) > @@ -253,6 +290,9 @@ format_headers_sprinter (sprinter_t *sp, GMimeMessage *message, > } else { > sp->map_key (sp, "Date"); > sp->string (sp, g_mime_message_get_date_string (sp, message)); > + > + /* Output extra headers the user has configured in the database, if any */ > + format_extra_headers_sprinter (sp, message); > } > > sp->end (sp); > @@ -1152,7 +1192,6 @@ static const notmuch_show_format_t *formatters[] = { > int > notmuch_show_command (notmuch_config_t *config, int argc, char *argv[]) > { > - notmuch_database_t *notmuch; > notmuch_query_t *query; > char *query_string; > int opt_index, ret; > -- > 2.21.0 (Apple Git-122) > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > https://notmuchmail.org/mailman/listinfo/notmuch