summaryrefslogtreecommitdiffstats
path: root/src/main.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-09-14 21:01:23 +0200
committerBram Moolenaar <Bram@vim.org>2019-09-14 21:01:23 +0200
commit017ba07fa2cdc578245618717229444fd50c470d (patch)
treed848d329da08cbda1e846d6e7acf1a440f61d667 /src/main.c
parentd9b0d83b13d2691e4544709abd87eac004715175 (diff)
patch 8.1.2029: cannot control 'cursorline' highlighting wellv8.1.2029
Problem: Cannot control 'cursorline' highlighting well. Solution: Add "screenline". (Christian Brabandt, closes #4933)
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/main.c b/src/main.c
index 6fe581ce73..d1d9e32e4b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1255,12 +1255,28 @@ main_loop(
update_topline();
validate_cursor();
+#ifdef FEAT_SYN_HL
+ if (curwin->w_p_cul && curwin->w_p_wrap
+ && (curwin->w_p_culopt_flags & CULOPT_SCRLINE))
+ must_redraw = NOT_VALID;
+#endif
+
if (VIsual_active)
- update_curbuf(INVERTED);/* update inverted part */
+ update_curbuf(INVERTED); // update inverted part
else if (must_redraw)
{
- mch_disable_flush(); /* Stop issuing gui_mch_flush(). */
- update_screen(0);
+ mch_disable_flush(); // Stop issuing gui_mch_flush().
+#ifdef FEAT_SYN_HL
+ // Might need some more update for the cursorscreen line.
+ // TODO: can we optimize this?
+ if (curwin->w_p_cul
+ && curwin->w_p_wrap
+ && (curwin->w_p_culopt_flags & CULOPT_SCRLINE)
+ && !char_avail())
+ update_screen(VALID);
+ else
+#endif
+ update_screen(0);
mch_enable_flush();
}
else if (redraw_cmdline || clear_cmdline)