Re: [RFC] column: show auto columns when pager is active
- Date: Tue, 10 Oct 2017 10:01:18 -0400
- From: Jeff King <peff@xxxxxxxx>
- Subject: Re: [RFC] column: show auto columns when pager is active
On Tue, Oct 10, 2017 at 12:30:49PM +0200, Martin Ågren wrote:
> On 9 October 2017 at 23:45, Kevin Daudt <me@xxxxxxxxx> wrote:
> > When columns are set to automatic for git tag and the output is
> > paginated by git, the output is a single column instead of multiple
> > columns.
> > Standard behaviour in git is to honor auto values when the pager is
> > active, which happens for example with commands like git log showing
> > colors when being paged.
> > Since ff1e72483 (tag: change default of `pager.tag` to "on",
> > 2017-08-02), the pager has been enabled by default, exposing this
> > problem to more people.
> Oh. :( I didn't know about "column" to be honest.
Yeah, I didn't think of that with respect to the pager. This is a
regression in v2.14.2, I think.
I agree that anything that is "auto" on stdout probably ought to kick in
when the pager is in effect (since that only kicks in when stdout _was_
a tty before we stuck a pager in front of it).
> I had slightly more success with PAGER="cat >actual", but the test is
> flaky for some reason.
The test in t9002 should be immune to this, but the one you suggest in
t7006 would need to set COLUMNS to get consistent output, I think.
> In any case, it might make sense to test an
> actual use-case also. Of course, the code should be largely the same,
> but in builtin/tag.c, it's quite important that `setup_auto_pager()`
> and `finalize_colopts()` are called in the right order.
I think it might work out either way. If we have started the pager when
we finalize_colopts(), then the pager_in_use() bit will kick in. If we
haven't, then either:
1. stdout is a tty, and we'll kick in the auto behavior for columns,
and then later for the pager.
2. stdout isn't a tty, in which case we also won't kick in the pager.