[PATCHv3] notmuch-show: include Bcc header in json output

Tomi Ollila tomi.ollila at iki.fi
Mon Sep 10 01:52:05 PDT 2012


On Mon, Sep 10 2012, Michal Nazarewicz <mpn at google.com> wrote:

> From: Michal Nazarewicz <mina86 at mina86.com>
>
> With this change, emacs users can use notmuch-message-headers
> variable to configure notmuch-show display Bcc header.
> ---

Thanks, that explains (also why my attempts to show Message-ID has failed ;)

I applied the patch, run tests (which pass) and tested the feature --
The Bcc field is indeed shown.

The only annoyance for me is that in the file I picked to test had:

BCC: user1 at host.tld, user2 at host.tld,
 user3 at host.tld, user4 at host.tld

notmuch displayed this content as

 Bcc: user1 at host.tld, user2 at host.tld,
user3 at host.tld, user4 at host.tld

I think this should be "fixed" (somehow (*)) in the future, but this
should not hold this patch.

+1

Tomi

(*) How that is done is another issue, should the cli or emacs do it,
(i.e. which interface modifies spacing information) and should this be done
generally to all headers. Is the solution to change all whitespace to one
space or indent subsequent on screen...

>  notmuch-show.c   |    7 +++++++
>  test/json        |    8 ++++----
>  test/test-lib.sh |    5 +++++
>  3 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/notmuch-show.c b/notmuch-show.c
> index 3556293..0b7abf1 100644
> --- a/notmuch-show.c
> +++ b/notmuch-show.c
> @@ -233,6 +233,13 @@ format_headers_json (sprinter_t *sp, GMimeMessage *message,
>  	sp->string (sp, recipients_string);
>      }
>  
> +    recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_BCC);
> +    recipients_string = internet_address_list_to_string (recipients, 0);
> +    if (recipients_string) {
> +	sp->map_key (sp, "Bcc");
> +	sp->string (sp, recipients_string);
> +    }
> +
>      if (reply) {
>  	sp->map_key (sp, "In-reply-to");
>  	sp->string (sp, g_mime_object_get_header (GMIME_OBJECT (message), "In-reply-to"));
> diff --git a/test/json b/test/json
> index ac8fa8e..40d0ba3 100755
> --- a/test/json
> +++ b/test/json
> @@ -3,18 +3,18 @@ test_description="--format=json output"
>  . ./test-lib.sh
>  
>  test_begin_subtest "Show message: json"
> -add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-show-message\""
> +add_message "[subject]=\"json-show-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[bcc]=\"test_suite+bcc at notmuchmail.org\"" "[body]=\"json-show-message\""
>  output=$(notmuch show --format=json "json-show-message")
> -test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
> +test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Bcc\": \"test_suite+bcc at notmuchmail.org\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
>  
>  # This should be the same output as above.
>  test_begin_subtest "Show message: json --body=true"
>  output=$(notmuch show --format=json --body=true "json-show-message")
> -test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
> +test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Bcc\": \"test_suite+bcc at notmuchmail.org\",\"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}, \"body\": [{\"id\": 1, \"content-type\": \"text/plain\", \"content\": \"json-show-message\n\"}]}, []]]]"
>  
>  test_begin_subtest "Show message: json --body=false"
>  output=$(notmuch show --format=json --body=false "json-show-message")
> -test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}}, []]]]"
> +test_expect_equal_json "$output" "[[[{\"id\": \"${gen_msg_id}\", \"match\": true, \"excluded\": false, \"filename\": \"${gen_msg_filename}\", \"timestamp\": 946728000, \"date_relative\": \"2000-01-01\", \"tags\": [\"inbox\",\"unread\"], \"headers\": {\"Subject\": \"json-show-subject\", \"From\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"To\": \"Notmuch Test Suite <test_suite at notmuchmail.org>\", \"Bcc\": \"test_suite+bcc at notmuchmail.org\",\"Date\": \"Sat, 01 Jan 2000 12:00:00 +0000\"}}, []]]]"
>  
>  test_begin_subtest "Search message: json"
>  add_message "[subject]=\"json-search-subject\"" "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" "[body]=\"json-search-message\""
> diff --git a/test/test-lib.sh b/test/test-lib.sh
> index f34b1fb..e14203d 100644
> --- a/test/test-lib.sh
> +++ b/test/test-lib.sh
> @@ -350,6 +350,11 @@ ${additional_headers}"
>  ${additional_headers}"
>      fi
>  
> +    if [ ! -z "${template[bcc]}" ]; then
> +	additional_headers="Bcc: ${template[bcc]}
> +${additional_headers}"
> +    fi
> +
>      if [ ! -z "${template[references]}" ]; then
>  	additional_headers="References: ${template[references]}
>  ${additional_headers}"
> -- 
> 1.7.7.3
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list