From: Junio C Hamano <gitster@pobox.com>
To: Karthik Nayak <karthik.188@gmail.com>
Cc: Matthieu Moy <Matthieu.Moy@grenoble-inp.fr>,
Git <git@vger.kernel.org>,
Christian Couder <christian.couder@gmail.com>
Subject: Re: [PATCH v13 00/12] port tag.c to use ref-filter APIs
Date: Wed, 26 Aug 2015 07:37:48 -0700 [thread overview]
Message-ID: <xmqq6142w1xf.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <CAOLa=ZSu7XyZhWUL=25dnkiGm2mNDyFhXwS_JqudyfKPE5sisQ@mail.gmail.com> (Karthik Nayak's message of "Wed, 26 Aug 2015 11:26:58 +0530")
Karthik Nayak <karthik.188@gmail.com> writes:
> On Wed, Aug 26, 2015 at 12:46 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Karthik Nayak <karthik.188@gmail.com> writes:
>>
>> I didn't check how wide the original is supposed to be, but perhaps
>> changing builtin/tag.c this way
>>
>> if (filter->lines)
>> - format = "%(align:16,left)%(refname:short)%(end)";
>> + format = "%(align:15,left)%(refname:short)%(end) ";
>> else
>> format = "%(refname:short)";
>> }
>>
>> may be one way to fix it. Check the original "tag -l" output for
>> tags whose names are 14, 15, 16 and 17 display-columns wide and try
>> to match it.
>
> That should be the fix, since it's a space problem.
> ....
> The problem with doing this is, the lines need to be displayed
> immediately after the refname,
> followed by a newline, what you're suggesting breaks that flow.
That is only because show_ref_array_item() does too much. The
function is given a placeholder string and a set of data to fill the
placeholder with for an item, and the reason why the caller
repeatedly calls it, once per item it has, is because it wants to
produce a one-line-per-item output. An alternative valid way to
structure the API is to have it format into a string and leave the
printing to the caller. You can give a new format_ref_array_item()
that does not print but fills a strbuf to this caller, make
show_ref_array_item() a thin wrapper that calls it and prints it
with the final LF for other callers.
Another alternate approach, if you want to give "tag -l" annotation
available to for-each-ref, would be to do this:
if (filter->lines)
format = xstrfmt("%%(align:15,left)%%(refname:short)%%(end) "
"%%(contents:lines=%s)", filter->lines);
else
format = "%(refname:short)";
and teach a new %(contents:lines=1) atom. That way, you can lose
the ugly special case call to show_tag_lines() that can only be at
the end of the output. I somehow think this is a better approach.
Of course you can (and probably would want to) do both, giving a
bit lower level "emit to a strbuf" function to the callers _and_
losing hardcoded call to show_tag_lines().
next prev parent reply other threads:[~2015-08-26 14:37 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-22 3:39 [PATCH v13 00/12] port tag.c to use ref-filter APIs Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 01/12] ref-filter: move `struct atom_value` to ref-filter.c Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 02/12] ref-filter: introduce ref_formatting_state and ref_formatting_stack Karthik Nayak
2015-08-24 21:56 ` Junio C Hamano
2015-08-25 10:26 ` Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 03/12] utf8: add function to align a string into given strbuf Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 04/12] ref-filter: implement an `align` atom Karthik Nayak
2015-08-24 22:13 ` Junio C Hamano
2015-08-24 22:15 ` Junio C Hamano
2015-08-25 13:28 ` Karthik Nayak
2015-08-25 6:47 ` Matthieu Moy
2015-08-25 13:30 ` Karthik Nayak
2015-08-25 17:56 ` Junio C Hamano
2015-08-26 6:41 ` Karthik Nayak
2015-08-25 17:52 ` Junio C Hamano
2015-08-25 13:28 ` Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 05/12] ref-filter: add option to filter out tags, branches and remotes Karthik Nayak
2015-08-24 22:24 ` Junio C Hamano
2015-08-25 13:07 ` Karthik Nayak
2015-08-26 16:10 ` Michael Haggerty
2015-08-27 12:42 ` Karthik Nayak
2015-08-27 15:24 ` Michael Haggerty
2015-08-27 15:35 ` Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 06/12] ref-filter: support printing N lines from tag annotation Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 07/12] ref-filter: add support to sort by version Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 08/12] ref-filter: add option to match literal pattern Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 09/12] tag.c: use 'ref-filter' data structures Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 10/12] tag.c: use 'ref-filter' APIs Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 11/12] tag.c: implement '--format' option Karthik Nayak
2015-08-23 19:56 ` Matthieu Moy
2015-08-24 15:07 ` Karthik Nayak
2015-08-24 15:14 ` Matthieu Moy
2015-08-24 15:21 ` Karthik Nayak
2015-08-22 3:39 ` [PATCH v13 12/12] tag.c: implement '--merged' and '--no-merged' options Karthik Nayak
2015-08-23 20:00 ` [PATCH v13 00/12] port tag.c to use ref-filter APIs Matthieu Moy
2015-08-24 15:09 ` Karthik Nayak
2015-08-24 15:16 ` Matthieu Moy
2015-08-24 15:22 ` Karthik Nayak
2015-08-24 22:34 ` Junio C Hamano
2015-08-24 22:58 ` Junio C Hamano
2015-08-25 13:26 ` Karthik Nayak
2015-08-25 19:16 ` Junio C Hamano
2015-08-25 19:43 ` Junio C Hamano
2015-08-26 5:56 ` Karthik Nayak
2015-08-26 14:37 ` Junio C Hamano [this message]
2015-08-26 19:14 ` Karthik Nayak
2015-08-26 20:19 ` Junio C Hamano
2015-08-27 18:00 ` Karthik Nayak
2015-08-25 13:23 ` Karthik Nayak
2015-08-24 17:27 ` Junio C Hamano
2015-08-24 18:09 ` Karthik Nayak
2015-08-24 18:53 ` Junio C Hamano
2015-08-24 22:35 ` Junio C Hamano
2015-08-26 10:07 ` Karthik Nayak
2015-08-26 11:54 ` Matthieu Moy
2015-08-26 15:44 ` Junio C Hamano
2015-08-26 15:46 ` Junio C Hamano
2015-08-26 15:48 ` Matthieu Moy
2015-08-26 19:11 ` Karthik Nayak
2015-08-25 13:25 ` Karthik Nayak
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=xmqq6142w1xf.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.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.