patch 9.0.1067: in diff mode virtual text is highlighted incorrectly
Problem: In diff mode virtual text is highlighted incorrectly. (Rick Howe)
Solution: Do not use diff attributes for virtual text. (closes #11714)
diff --git a/src/drawline.c b/src/drawline.c
index 0e090f4..79b187f 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -2206,11 +2206,13 @@
#ifdef FEAT_DIFF
if (wlv.diff_hlf != (hlf_T)0)
{
+ // When there is extra text (e.g. virtual text) it gets the
+ // diff highlighting for the line, but not for changed text.
if (wlv.diff_hlf == HLF_CHD && ptr - line >= change_start
&& wlv.n_extra == 0)
wlv.diff_hlf = HLF_TXD; // changed text
- if (wlv.diff_hlf == HLF_TXD && ptr - line > change_end
- && wlv.n_extra == 0)
+ if (wlv.diff_hlf == HLF_TXD && (ptr - line > change_end
+ || wlv.n_extra > 0))
wlv.diff_hlf = HLF_CHD; // changed line
wlv.line_attr = HL_ATTR(wlv.diff_hlf);
if (wp->w_p_cul && lnum == wp->w_cursor.lnum