Merge branch 'jk/add-i-highlight'

* jk/add-i-highlight:
  add--interactive: allow custom diff highlighting programs
This commit is contained in:
Junio C Hamano 2016-04-03 10:29:25 -07:00
Родитель 1b68962b29 01143847db
Коммит 2052c52d9a
2 изменённых файлов: 18 добавлений и 2 удалений

Просмотреть файл

@ -1887,6 +1887,14 @@ interactive.singleKey::
setting is silently ignored if portable keystroke input
is not available; requires the Perl module Term::ReadKey.
interactive.diffFilter::
When an interactive command (such as `git add --patch`) shows
a colorized diff, git will pipe the diff through the shell
command defined by this configuration variable. The command may
mark up the diff further for human consumption, provided that it
retains a one-to-one correspondence with the lines in the
original diff. Defaults to disabled (no filtering).
log.abbrevCommit::
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may

Просмотреть файл

@ -45,6 +45,7 @@ my ($diff_new_color) =
my $normal_color = $repo->get_color("", "reset");
my $diff_algorithm = $repo->config('diff.algorithm');
my $diff_filter = $repo->config('interactive.difffilter');
my $use_readkey = 0;
my $use_termcap = 0;
@ -754,7 +755,14 @@ sub parse_diff {
my @diff = run_cmd_pipe("git", @diff_cmd, "--", $path);
my @colored = ();
if ($diff_use_color) {
@colored = run_cmd_pipe("git", @diff_cmd, qw(--color --), $path);
my @display_cmd = ("git", @diff_cmd, qw(--color --), $path);
if (defined $diff_filter) {
# quotemeta is overkill, but sufficient for shell-quoting
my $diff = join(' ', map { quotemeta } @display_cmd);
@display_cmd = ("$diff | $diff_filter");
}
@colored = run_cmd_pipe(@display_cmd);
}
my (@hunk) = { TEXT => [], DISPLAY => [], TYPE => 'header' };
@ -765,7 +773,7 @@ sub parse_diff {
}
push @{$hunk[-1]{TEXT}}, $diff[$i];
push @{$hunk[-1]{DISPLAY}},
($diff_use_color ? $colored[$i] : $diff[$i]);
(@colored ? $colored[$i] : $diff[$i]);
}
return @hunk;
}