X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=tig.pl;h=0d80e1fcb56b55a0d7dc1141624458e746e11539;hb=d7f7f59419c69580f22d7b74eb5d399412ad5483;hp=3939deb1f5f25bfed13b957fc3fcd43caa6eb2ac;hpb=6629b8c8e9ee16178a5f2fa464936e35a9e58d24;p=config%2Fdotfiles.git diff --git a/tig.pl b/tig.pl index 3939deb..0d80e1f 100755 --- a/tig.pl +++ b/tig.pl @@ -43,6 +43,21 @@ my $format = '%x00' # separator from --graph my @cmd = ('git', 'log', '--all', '--graph', "--format=$format"); open my $fh, '-|', @cmd or die $!; +my $pager = $ENV{PAGER}; +# Try to find an usable pager without searching $PATH. +if (not defined $pager) { + foreach my $path (qw(/usr/bin/less /bin/less /usr/bin/more /bin/more)) { + next if not -x $path; + + $pager = $path; + last; + } +} +# Use a pager if STDOUT is a terminal. +if (-t STDOUT and defined $pager) { + open STDOUT, '|-', $pager or die $!; +} + while (my $line = <$fh>) { # History graph line. if ($line =~ m{^([|/\\_ ]+)$}) { @@ -94,3 +109,9 @@ while (my $line = <$fh>) { } close $fh or die $!; + +# Necessary for the redirection to a pager or the pager terminates after our +# script finishes without displaying all data. +if (defined $pager) { + close STDOUT or die $!; +}