1
0
forked from aniani/vim

patch 8.1.2214: too much is redrawn when 'cursorline' is set

Problem:    Too much is redrawn when 'cursorline' is set.
Solution:   Don't do a complete redraw. (closes #5079)
This commit is contained in:
Bram Moolenaar
2019-10-24 22:32:31 +02:00
parent aa1f04d092
commit 11a58af66f
10 changed files with 36 additions and 31 deletions

View File

@@ -609,16 +609,21 @@ changed_common(
if (hasAnyFolding(wp))
set_topline(wp, wp->w_topline);
#endif
// Relative numbering may require updating more. Cursor line
// highlighting probably needs to be updated if it's below the
// change (or is using screenline highlighting)
if (wp->w_p_rnu
#ifdef FEAT_SYN_HL
|| ((wp->w_p_cul && lnum <= wp->w_last_cursorline)
|| (wp->w_p_culopt_flags & CULOPT_SCRLINE))
#endif
)
// Relative numbering may require updating more.
if (wp->w_p_rnu)
redraw_win_later(wp, SOME_VALID);
#ifdef FEAT_SYN_HL
// Cursor line highlighting probably need to be updated with
// "VALID" if it's below the change.
// If the cursor line is inside the change we need to redraw more.
if (wp->w_p_cul)
{
if (xtra == 0)
redraw_win_later(wp, VALID);
else if (lnum <= wp->w_last_cursorline)
redraw_win_later(wp, SOME_VALID);
}
#endif
}
}