Browse Source

Merge branch 'jk/add-i-highlight'

* jk/add-i-highlight:
  add--interactive: allow custom diff highlighting programs
maint
Junio C Hamano 9 years ago
parent
commit
2052c52d9a
  1. 8
      Documentation/config.txt
  2. 12
      git-add--interactive.perl

8
Documentation/config.txt

@ -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

12
git-add--interactive.perl

@ -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…
Cancel
Save