lib/PublicInbox/View.pm | 18 ++++++++++-------- lib/PublicInbox/ViewDiff.pm | 13 +++++++++---- diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 0187ec332a58faaa4c89b6bb349a5fbb07f9c5fa..41a45b0b6682a158a37c6323e492543a3d173793 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -558,15 +558,17 @@ return attach_link($upfx, $ct, $p, $fn) unless defined $s; my ($diff, $spfx); - if ($ibx->{-repo_objs} && $s =~ /^(?:diff|---|\+{3}) /ms) { + if ($s =~ /^(?:diff|---|\+{3}) /ms) { $diff = []; - my $n_slash = $upfx =~ tr!/!/!; - if ($n_slash == 0) { - $spfx = '../'; - } elsif ($n_slash == 1) { - $spfx = ''; - } else { # nslash == 2 - $spfx = '../../'; + if ($ibx->{-repo_objs}) { + my $n_slash = $upfx =~ tr!/!/!; + if ($n_slash == 0) { + $spfx = '../'; + } elsif ($n_slash == 1) { + $spfx = ''; + } else { # nslash == 2 + $spfx = '../../'; + } } }; diff --git a/lib/PublicInbox/ViewDiff.pm b/lib/PublicInbox/ViewDiff.pm index 1aad2832bb392dbb650f9d839bcde026bb3cf3a7..0d1aefb78bdea037425867bc9f3366a7ed7b1fc5 100644 --- a/lib/PublicInbox/ViewDiff.pm +++ b/lib/PublicInbox/ViewDiff.pm @@ -40,7 +40,8 @@ my ($dctx, $spfx, $ca, $cb) = @_; my $oid_a = $dctx->{oid_a}; my $oid_b = $dctx->{oid_b}; - (defined($oid_a) && defined($oid_b)) or return "@@ $ca $cb @@"; + (defined($spfx) && defined($oid_a) && defined($oid_b)) or + return "@@ $ca $cb @@"; my ($n) = ($ca =~ /^-(\d+)/); $n = defined($n) ? do { ++$n; "#n$n" } : ''; @@ -51,6 +52,11 @@ ($n) = ($cb =~ /^\+(\d+)/); $n = defined($n) ? do { ++$n; "#n$n" } : ''; $rv .= qq( {Q}$n>$cb @@); +} + +sub oid ($$$) { + my ($dctx, $spfx, $oid) = @_; + defined($spfx) ? qq({Q}>$oid) : $oid; } sub flush_diff ($$$$) { @@ -90,11 +96,10 @@ } } $$dst .= to_html($linkify, $s); } elsif ($s =~ s/^(index $OID_NULL\.\.)($OID_BLOB)\b//o) { - $$dst .= qq($1{Q}>$2); + $$dst .= $1 . oid($dctx, $spfx, $2); $$dst .= to_html($linkify, $s) ; } elsif ($s =~ s/^index ($OID_NULL)(\.\.$OID_BLOB)\b//o) { - $$dst .= 'index '; - $$dst .= qq({Q}>$1$2); + $$dst .= 'index ' . oid($dctx, $spfx, $1) . $2; $$dst .= to_html($linkify, $s); } elsif ($s =~ /^index ($OID_BLOB)\.\.($OID_BLOB)/o) { $dctx->{oid_a} = $1;