Merge branch 'jk/add-i-highlight'
* jk/add-i-highlight: add--interactive: allow custom diff highlighting programs
This commit is contained in:
commit
2052c52d9a
@ -1887,6 +1887,14 @@ interactive.singleKey::
|
|||||||
setting is silently ignored if portable keystroke input
|
setting is silently ignored if portable keystroke input
|
||||||
is not available; requires the Perl module Term::ReadKey.
|
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::
|
log.abbrevCommit::
|
||||||
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
If true, makes linkgit:git-log[1], linkgit:git-show[1], and
|
||||||
linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
|
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 $normal_color = $repo->get_color("", "reset");
|
||||||
|
|
||||||
my $diff_algorithm = $repo->config('diff.algorithm');
|
my $diff_algorithm = $repo->config('diff.algorithm');
|
||||||
|
my $diff_filter = $repo->config('interactive.difffilter');
|
||||||
|
|
||||||
my $use_readkey = 0;
|
my $use_readkey = 0;
|
||||||
my $use_termcap = 0;
|
my $use_termcap = 0;
|
||||||
@ -754,7 +755,14 @@ sub parse_diff {
|
|||||||
my @diff = run_cmd_pipe("git", @diff_cmd, "--", $path);
|
my @diff = run_cmd_pipe("git", @diff_cmd, "--", $path);
|
||||||
my @colored = ();
|
my @colored = ();
|
||||||
if ($diff_use_color) {
|
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' };
|
my (@hunk) = { TEXT => [], DISPLAY => [], TYPE => 'header' };
|
||||||
|
|
||||||
@ -765,7 +773,7 @@ sub parse_diff {
|
|||||||
}
|
}
|
||||||
push @{$hunk[-1]{TEXT}}, $diff[$i];
|
push @{$hunk[-1]{TEXT}}, $diff[$i];
|
||||||
push @{$hunk[-1]{DISPLAY}},
|
push @{$hunk[-1]{DISPLAY}},
|
||||||
($diff_use_color ? $colored[$i] : $diff[$i]);
|
(@colored ? $colored[$i] : $diff[$i]);
|
||||||
}
|
}
|
||||||
return @hunk;
|
return @hunk;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user