All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Phil Pennock <phil@pennock-tech.com>,
	git@vger.kernel.org,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 2/2] t4205: indent here documents
Date: Wed, 27 Jul 2016 12:28:14 -0700	[thread overview]
Message-ID: <xmqqbn1ix4mp.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <20160727185523.GB6626@sigill.intra.peff.net> (Jeff King's message of "Wed, 27 Jul 2016 14:55:23 -0400")

Jeff King <peff@peff.net> writes:

> Our usual style in the test scripts is to indent here
> documents with tabs, and use "<<-" to strip the tabs. The
> result is easier to read.
>
> This old test script did not do so in its inception, and
> further tests added onto it followed the local style. Let's
> bring it in line with our usual style.
>
> Some of the tests actually care quite a bit about
> whitespace, but none of them do so at the beginning of the
> line (because they things like qz_to_tab_space to avoid

I'll do s/they things/they use things/ here while queuing.

Thanks.

> depending on the literal whitespace), so we can do a fairly
> mechanical conversion.
>
> Most of the here-docs also use interpolation, so they have
> been left as "<<-EOF". In a few cases, though, where
> interpolation was not in use, I've converted them to
> "<<-\EOF" to match our usual "don't interpolate unless you
> need to" style.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
>  t/t4205-log-pretty-formats.sh | 392 +++++++++++++++++++++---------------------
>  1 file changed, 196 insertions(+), 196 deletions(-)
>
> diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh
> index d6518fa..f5435fd 100755
> --- a/t/t4205-log-pretty-formats.sh
> +++ b/t/t4205-log-pretty-formats.sh
> @@ -145,199 +145,199 @@ test_expect_success 'setup more commits' '
>  
>  test_expect_success 'left alignment formatting' '
>  	git log --pretty="tformat:%<(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -message two                            Z
> -message one                            Z
> -add bar                                Z
> -$(commit_msg)                    Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	message two                            Z
> +	message one                            Z
> +	add bar                                Z
> +	$(commit_msg)                    Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -message two                            Z
> -message one                            Z
> -add bar                                Z
> -$(commit_msg)                    Z
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	message two                            Z
> +	message one                            Z
> +	add bar                                Z
> +	$(commit_msg)                    Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting at the nth column' '
>  	git log --pretty="tformat:%h %<|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1 message two                    Z
> -$head2 message one                    Z
> -$head3 add bar                        Z
> -$head4 $(commit_msg)            Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1 message two                    Z
> +	$head2 message one                    Z
> +	$head3 add bar                        Z
> +	$head4 $(commit_msg)            Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting at the nth column' '
>  	COLUMNS=50 git log --pretty="tformat:%h %<|(-10)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1 message two                    Z
> -$head2 message one                    Z
> -$head3 add bar                        Z
> -$head4 $(commit_msg)            Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1 message two                    Z
> +	$head2 message one                    Z
> +	$head3 add bar                        Z
> +	$head4 $(commit_msg)            Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting at the nth column. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %<|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -$head1 message two                    Z
> -$head2 message one                    Z
> -$head3 add bar                        Z
> -$head4 $(commit_msg)            Z
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	$head1 message two                    Z
> +	$head2 message one                    Z
> +	$head3 add bar                        Z
> +	$head4 $(commit_msg)            Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with no padding' '
>  	git log --pretty="tformat:%<(1)%s" >actual &&
> -	cat <<EOF >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with no padding. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(1)%s" >actual &&
> -	cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with trunc' '
>  	git log --pretty="tformat:%<(10,trunc)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -message ..
> -message ..
> -add bar  Z
> -initial...
> -EOF
> +	qz_to_tab_space <<-\EOF >expected &&
> +	message ..
> +	message ..
> +	add bar  Z
> +	initial...
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with trunc. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -message ..
> -message ..
> -add bar  Z
> -initial...
> -EOF
> +	qz_to_tab_space <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	message ..
> +	message ..
> +	add bar  Z
> +	initial...
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with ltrunc' '
>  	git log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -..sage two
> -..sage one
> -add bar  Z
> -..${sample_utf8_part}lich
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	..sage two
> +	..sage one
> +	add bar  Z
> +	..${sample_utf8_part}lich
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with ltrunc. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,ltrunc)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -..sage two
> -..sage one
> -add bar  Z
> -..${sample_utf8_part}lich
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	..sage two
> +	..sage one
> +	add bar  Z
> +	..${sample_utf8_part}lich
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with mtrunc' '
>  	git log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -mess.. two
> -mess.. one
> -add bar  Z
> -init..lich
> -EOF
> +	qz_to_tab_space <<-\EOF >expected &&
> +	mess.. two
> +	mess.. one
> +	add bar  Z
> +	init..lich
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left alignment formatting with mtrunc. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,mtrunc)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -mess.. two
> -mess.. one
> -add bar  Z
> -init..lich
> -EOF
> +	qz_to_tab_space <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	mess.. two
> +	mess.. one
> +	add bar  Z
> +	init..lich
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting' '
>  	git log --pretty="tformat:%>(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -Z                            message two
> -Z                            message one
> -Z                                add bar
> -Z                    $(commit_msg)
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	Z                            message two
> +	Z                            message one
> +	Z                                add bar
> +	Z                    $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -Z                            message two
> -Z                            message one
> -Z                                add bar
> -Z                    $(commit_msg)
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	Z                            message two
> +	Z                            message one
> +	Z                                add bar
> +	Z                    $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting at the nth column' '
>  	git log --pretty="tformat:%h %>|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1                      message two
> -$head2                      message one
> -$head3                          add bar
> -$head4              $(commit_msg)
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1                      message two
> +	$head2                      message one
> +	$head3                          add bar
> +	$head4              $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting at the nth column' '
>  	COLUMNS=50 git log --pretty="tformat:%h %>|(-10)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1                      message two
> -$head2                      message one
> -$head3                          add bar
> -$head4              $(commit_msg)
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1                      message two
> +	$head2                      message one
> +	$head3                          add bar
> +	$head4              $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting at the nth column. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %>|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -$head1                      message two
> -$head2                      message one
> -$head3                          add bar
> -$head4              $(commit_msg)
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	$head1                      message two
> +	$head2                      message one
> +	$head3                          add bar
> +	$head4              $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
> @@ -345,110 +345,110 @@ EOF
>  # as in previous test.
>  test_expect_success 'right alignment formatting at the nth column with --graph. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --graph --pretty="tformat:%h %>|(40)%s" >actual &&
> -	iconv -f utf-8 -t $test_encoding >expected <<EOF&&
> -* $head1                    message two
> -* $head2                    message one
> -* $head3                        add bar
> -* $head4            $(commit_msg)
> -EOF
> +	iconv -f utf-8 -t $test_encoding >expected <<-EOF &&
> +	* $head1                    message two
> +	* $head2                    message one
> +	* $head3                        add bar
> +	* $head4            $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting with no padding' '
>  	git log --pretty="tformat:%>(1)%s" >actual &&
> -	cat <<EOF >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting with no padding and with --graph' '
>  	git log --graph --pretty="tformat:%>(1)%s" >actual &&
> -	cat <<EOF >expected &&
> -* message two
> -* message one
> -* add bar
> -* $(commit_msg)
> -EOF
> +	cat <<-EOF >expected &&
> +	* message two
> +	* message one
> +	* add bar
> +	* $(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'right alignment formatting with no padding. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%>(1)%s" >actual &&
> -	cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'center alignment formatting' '
>  	git log --pretty="tformat:%><(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -Z             message two              Z
> -Z             message one              Z
> -Z               add bar                Z
> -Z         $(commit_msg)          Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	Z             message two              Z
> +	Z             message one              Z
> +	Z               add bar                Z
> +	Z         $(commit_msg)          Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'center alignment formatting. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -Z             message two              Z
> -Z             message one              Z
> -Z               add bar                Z
> -Z         $(commit_msg)          Z
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	Z             message two              Z
> +	Z             message one              Z
> +	Z               add bar                Z
> +	Z         $(commit_msg)          Z
> +	EOF
>  	test_cmp expected actual
>  '
>  test_expect_success 'center alignment formatting at the nth column' '
>  	git log --pretty="tformat:%h %><|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1           message two          Z
> -$head2           message one          Z
> -$head3             add bar            Z
> -$head4       $(commit_msg)      Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1           message two          Z
> +	$head2           message one          Z
> +	$head3             add bar            Z
> +	$head4       $(commit_msg)      Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'center alignment formatting at the nth column' '
>  	COLUMNS=70 git log --pretty="tformat:%h %><|(-30)%s" >actual &&
> -	qz_to_tab_space <<EOF >expected &&
> -$head1           message two          Z
> -$head2           message one          Z
> -$head3             add bar            Z
> -$head4       $(commit_msg)      Z
> -EOF
> +	qz_to_tab_space <<-EOF >expected &&
> +	$head1           message two          Z
> +	$head2           message one          Z
> +	$head3             add bar            Z
> +	$head4       $(commit_msg)      Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'center alignment formatting at the nth column. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%h %><|(40)%s" >actual &&
> -	qz_to_tab_space <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -$head1           message two          Z
> -$head2           message one          Z
> -$head3             add bar            Z
> -$head4       $(commit_msg)      Z
> -EOF
> +	qz_to_tab_space <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	$head1           message two          Z
> +	$head2           message one          Z
> +	$head3             add bar            Z
> +	$head4       $(commit_msg)      Z
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'center alignment formatting with no padding' '
>  	git log --pretty="tformat:%><(1)%s" >actual &&
> -	cat <<EOF >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
> @@ -457,34 +457,34 @@ EOF
>  old_head1=$(git rev-parse --verify HEAD~0)
>  test_expect_success 'center alignment formatting with no padding. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%><(1)%s" >actual &&
> -	cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -message two
> -message one
> -add bar
> -$(commit_msg)
> -EOF
> +	cat <<-EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	message two
> +	message one
> +	add bar
> +	$(commit_msg)
> +	EOF
>  	test_cmp expected actual
>  '
>  
>  test_expect_success 'left/right alignment formatting with stealing' '
>  	git commit --amend -m short --author "long long long <long@me.com>" &&
>  	git log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
> -	cat <<EOF >expected &&
> -short long  long long
> -message ..   A U Thor
> -add bar      A U Thor
> -initial...   A U Thor
> -EOF
> +	cat <<-\EOF >expected &&
> +	short long  long long
> +	message ..   A U Thor
> +	add bar      A U Thor
> +	initial...   A U Thor
> +	EOF
>  	test_cmp expected actual
>  '
>  test_expect_success 'left/right alignment formatting with stealing. i18n.logOutputEncoding' '
>  	git -c i18n.logOutputEncoding=$test_encoding log --pretty="tformat:%<(10,trunc)%s%>>(10,ltrunc)% an" >actual &&
> -	cat <<EOF | iconv -f utf-8 -t $test_encoding >expected &&
> -short long  long long
> -message ..   A U Thor
> -add bar      A U Thor
> -initial...   A U Thor
> -EOF
> +	cat <<-\EOF | iconv -f utf-8 -t $test_encoding >expected &&
> +	short long  long long
> +	message ..   A U Thor
> +	add bar      A U Thor
> +	initial...   A U Thor
> +	EOF
>  	test_cmp expected actual
>  '
>  
> @@ -515,22 +515,22 @@ test_expect_success 'log decoration properly follows tag chain' '
>  	git tag -d tag1 &&
>  	git commit --amend -m shorter &&
>  	git log --no-walk --tags --pretty="%H %d" --decorate=full >actual &&
> -	cat <<EOF >expected &&
> -$head1  (tag: refs/tags/tag2)
> -$head2  (tag: refs/tags/message-one)
> -$old_head1  (tag: refs/tags/message-two)
> -EOF
> +	cat <<-EOF >expected &&
> +	$head1  (tag: refs/tags/tag2)
> +	$head2  (tag: refs/tags/message-one)
> +	$old_head1  (tag: refs/tags/message-two)
> +	EOF
>  	sort actual >actual1 &&
>  	test_cmp expected actual1
>  '
>  
>  test_expect_success 'clean log decoration' '
>  	git log --no-walk --tags --pretty="%H %D" --decorate=full >actual &&
> -	cat >expected <<EOF &&
> -$head1 tag: refs/tags/tag2
> -$head2 tag: refs/tags/message-one
> -$old_head1 tag: refs/tags/message-two
> -EOF
> +	cat >expected <<-EOF &&
> +	$head1 tag: refs/tags/tag2
> +	$head2 tag: refs/tags/message-one
> +	$old_head1 tag: refs/tags/message-two
> +	EOF
>  	sort actual >actual1 &&
>  	test_cmp expected actual1
>  '

  reply	other threads:[~2016-07-27 19:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-27  8:14 [PATCH] pretty format string support for reflog times Phil Pennock
2016-07-27 12:02 ` Phil Pennock
2016-07-27 13:58 ` Jeff King
2016-07-27 14:17   ` Phil Pennock
2016-07-27 17:18   ` Junio C Hamano
2016-07-27 17:39     ` Jeff King
2016-07-27 18:09       ` Junio C Hamano
2016-07-27 18:17         ` Jeff King
2016-07-27 17:46     ` Junio C Hamano
2016-07-27 17:58       ` Jeff King
2016-07-27 17:56 ` Jeff King
2016-07-27 18:13   ` Phil Pennock
2016-07-27 18:32     ` Jeff King
2016-07-27 18:41       ` Phil Pennock
2016-07-27 19:16         ` Jeff King
2016-07-27 18:52       ` [PATCH 0/2] t4205 style fixes Jeff King
2016-07-27 18:55         ` [PATCH 1/2] t4205: drop top-level &&-chaining Jeff King
2016-07-27 18:55         ` [PATCH 2/2] t4205: indent here documents Jeff King
2016-07-27 19:28           ` Junio C Hamano [this message]
2016-07-27 19:57             ` Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqbn1ix4mp.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    --cc=peff@peff.net \
    --cc=phil@pennock-tech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.