Re: [RFC] column: show auto columns when pager is active
- Date: Tue, 10 Oct 2017 12:30:49 +0200
- From: Martin Ågren <martin.agren@xxxxxxxxx>
- Subject: Re: [RFC] column: show auto columns when pager is active
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
> 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.
> finalize_colopts in column.c only checks whether the output is a TTY to
> determine if columns should be enabled with columns set to autol. Also check
> if the pager is active.
> Helped-by: Rafael Ascensão <rafa.almas@xxxxxxxxx>
> Signed-off-by: Kevin Daudt <me@xxxxxxxxx>
> This came to light when someone wondered on irc why
> column.tag=[auto|always] did not work on Mac OS. Testing it myself, I
> found it to work with always, but not with auto.
> I could not get the test to work yet, because somehow it's not giving
> any output, so feedback regarding that is welcome.
I had slightly more success with PAGER="cat >actual", but the test is
flaky for some reason. 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. In other words,
there is some regression-potential. This is a whitespace-damaged and
hacky attempt to test. Maybe it helps a little. I hope I'll have more
time later today.
diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
index f0f1abd1c..91f2b5871 100755
@@ -214,6 +214,19 @@ test_expect_success TTY 'git tag as alias
respects pager.tag with -l' '
! test -e paginated.out
+test_expect_success TTY 'git tag with column.tag=auto' '
+ test_commit second &&
+ test_commit third &&
+ test_commit fourth &&
+ test_when_finished "git reset --hard HEAD~3" &&
+ cat >expected <<\EOF &&
+fourth initial second third
+ rm -f paginated.out &&
+ test_terminal git -c pager.tag -c column.tag=auto tag &&
+ test_cmp expected paginated.out
# A colored commit log will begin with an appropriate ANSI escape
# for the first color; the text "commit" comes later.