diff --git a/src/difference/ArcanistDiffUtils.php b/src/difference/ArcanistDiffUtils.php --- a/src/difference/ArcanistDiffUtils.php +++ b/src/difference/ArcanistDiffUtils.php @@ -89,6 +89,9 @@ $highlight_o = ''; $highlight_c = ''; + $depth_in = ''; + $depth_out = ''; + $is_html = false; if ($str instanceof PhutilSafeHTML) { $is_html = true; @@ -107,11 +110,23 @@ $stack = array_shift($intra_stack); $s = $e; $e += $stack[1]; - } while ($stack[0] == 0); + } while ($stack[0] === 0); + + switch ($stack[0]) { + case '>': + $open_tag = $depth_in; + break; + case '<': + $open_tag = $depth_out; + break; + default: + $open_tag = $highlight_o; + break; + } } if (!$highlight && !$tag && !$ent && $p == $s) { - $buf .= $highlight_o; + $buf .= $open_tag; $highlight = true; } @@ -139,7 +154,7 @@ if ($tag && $str[$i] == '>') { $tag = false; if ($highlight) { - $buf .= $highlight_o; + $buf .= $open_tag; } }