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;
}
}