Skip to content

Commit

Permalink
gitweb: New improved formatting of chunk header in diff
Browse files Browse the repository at this point in the history
If we have provided enough info, and diff is not combined diff,
and if provided diff line is chunk header, then:
* split chunk header into .chunk_info and .section span elements,
  first containing proper chunk header, second section heading
  (aka. which function), for separate styling: the proper chunk
  header is on non-white background, section heading part uses
  slightly lighter color.
* hyperlink from-file-range to starting line of from-file, if file
  was not created.
* hyperlink to-file-range to starting line of to-file, if file
  was not deleted.
Links are of invisible variety (and "list" class).

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Jakub Narebski authored and Junio C Hamano committed Nov 21, 2006
1 parent 9954f77 commit 59e3b14
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
13 changes: 13 additions & 0 deletions gitweb/gitweb.css
Original file line number Diff line number Diff line change
Expand Up @@ -334,11 +334,13 @@ div.diff.extended_header {
padding: 2px 0px 2px 0px;
}

div.diff a.list,
div.diff a.path,
div.diff a.hash {
text-decoration: none;
}

div.diff a.list:hover,
div.diff a.path:hover,
div.diff a.hash:hover {
text-decoration: underline;
Expand All @@ -362,14 +364,25 @@ div.diff.rem {
color: #cc0000;
}

div.diff.chunk_header a,
div.diff.chunk_header {
color: #990099;
}

div.diff.chunk_header {
border: dotted #ffe0ff;
border-width: 1px 0px 0px 0px;
margin-top: 2px;
}

div.diff.chunk_header span.chunk_info {
background-color: #ffeeff;
}

div.diff.chunk_header span.section {
color: #aa22aa;
}

div.diff.incomplete {
color: #cccccc;
}
Expand Down
23 changes: 22 additions & 1 deletion gitweb/gitweb.perl
Original file line number Diff line number Diff line change
Expand Up @@ -874,8 +874,10 @@ sub format_subject_html {
}
}

# format patch (diff) line (rather not to be used for diff headers)
sub format_diff_line {
my $line = shift;
my ($from, $to) = @_;
my $char = substr($line, 0, 1);
my $diff_class = "";

Expand All @@ -891,6 +893,25 @@ sub format_diff_line {
$diff_class = " incomplete";
}
$line = untabify($line);
if ($from && $to && $line =~ m/^\@{2} /) {
my ($from_text, $from_start, $from_lines, $to_text, $to_start, $to_lines, $section) =
$line =~ m/^\@{2} (-(\d+)(?:,(\d+))?) (\+(\d+)(?:,(\d+))?) \@{2}(.*)$/;

$from_lines = 0 unless defined $from_lines;
$to_lines = 0 unless defined $to_lines;

if ($from->{'href'}) {
$from_text = $cgi->a({-href=>"$from->{'href'}#l$from_start",
-class=>"list"}, $from_text);
}
if ($to->{'href'}) {
$to_text = $cgi->a({-href=>"$to->{'href'}#l$to_start",
-class=>"list"}, $to_text);
}
$line = "<span class=\"chunk_info\">@@ $from_text $to_text @@</span>" .
"<span class=\"section\">" . esc_html($section, -nbsp=>1) . "</span>";
return "<div class=\"diff$diff_class\">$line</div>\n";
}
return "<div class=\"diff$diff_class\">" . esc_html($line, -nbsp=>1) . "</div>\n";
}

Expand Down Expand Up @@ -2372,7 +2393,7 @@ sub git_patchset_body {

next PATCH if ($patch_line =~ m/^diff /);

print format_diff_line($patch_line);
print format_diff_line($patch_line, \%from, \%to);
}

} continue {
Expand Down

0 comments on commit 59e3b14

Please sign in to comment.