Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Change the display of hunks in hunk splitting mode to preserve the diff > heading, which hasn't been done ever since the hunk splitting was > initially added in v1.4.4.2-270-g835b2ae. > > Splitting the first hunk of this patch will now result in: > > Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]? s > Split into 2 hunks. > @@ -792,7 +792,7 @@ sub hunk_splittable { > [...] > > Instead of: > > Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]? s > Split into 2 hunks. > @@ -792,7 +792,7 @@ > [...] > > This makes it easier to use the tool when you're splitting some giant > hunk and can't remember in which function you are anymore. Makes sense to me. > > The diff is somewhat larger than I initially expected because in order > to display the headings in the same color scheme as the output from > git-diff(1) itself I had to split up the code that would previously > color diff output that previously consisted entirely of the fraginfo, > but now consists of the fraginfo and the diff heading (the latter of > which isn't colored). > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> > --- > git-add--interactive.perl | 40 ++++++++++++++++++++++++---------------- > 1 file changed, 24 insertions(+), 16 deletions(-) > > diff --git a/git-add--interactive.perl b/git-add--interactive.perl > index 1fadd69..ed1e564 100755 > --- a/git-add--interactive.perl > +++ b/git-add--interactive.perl > @@ -792,11 +792,11 @@ sub hunk_splittable { > > sub parse_hunk_header { > my ($line) = @_; > - my ($o_ofs, $o_cnt, $n_ofs, $n_cnt) = > - $line =~ /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/; > + my ($o_ofs, $o_cnt, $n_ofs, $n_cnt, $heading) = > + $line =~ /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(.*)/; > $o_cnt = 1 unless defined $o_cnt; > $n_cnt = 1 unless defined $n_cnt; > - return ($o_ofs, $o_cnt, $n_ofs, $n_cnt); > + return ($o_ofs, $o_cnt, $n_ofs, $n_cnt, $heading); > } > > sub split_hunk { > @@ -808,8 +808,7 @@ sub split_hunk { > # If there are context lines in the middle of a hunk, > # it can be split, but we would need to take care of > # overlaps later. > - > - my ($o_ofs, undef, $n_ofs) = parse_hunk_header($text->[0]); > + my ($o_ofs, undef, $n_ofs, undef, $heading) = parse_hunk_header($text->[0]); > my $hunk_start = 1; > > OUTER: > @@ -886,17 +885,26 @@ sub split_hunk { > my $o_cnt = $hunk->{OCNT}; > my $n_cnt = $hunk->{NCNT}; > > - my $head = ("@@ -$o_ofs" . > - (($o_cnt != 1) ? ",$o_cnt" : '') . > - " +$n_ofs" . > - (($n_cnt != 1) ? ",$n_cnt" : '') . > - " @@\n"); > - my $display_head = $head; > - unshift @{$hunk->{TEXT}}, $head; > - if ($diff_use_color) { > - $display_head = colored($fraginfo_color, $head); > - } > - unshift @{$hunk->{DISPLAY}}, $display_head; > + my $fraginfo = join( > + "", > + "@@ -$o_ofs", > + (($o_cnt != 1) ? ",$o_cnt" : ''), > + " +$n_ofs", > + (($n_cnt != 1) ? ",$n_cnt" : ''), > + " @@" > + ); > + unshift @{$hunk->{TEXT}}, join( > + "", > + $fraginfo, > + $heading, > + "\n" > + ); > + unshift @{$hunk->{DISPLAY}}, join( > + "", > + $diff_use_color ? colored($fraginfo_color, $fraginfo) : $fraginfo, > + $heading, > + "\n" > + ); > } > return @split; > } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html