diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-10-24 22:32:31 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-10-24 22:32:31 +0200 |
commit | 11a58af66fa5c442f0a22c5d59beabf187ed4e89 (patch) | |
tree | 19b2b26b7907004365c26f85a667655c45c17d3a /src/main.c | |
parent | aa1f04d09286085c4031bc7c4ca9fa672f6f4905 (diff) |
patch 8.1.2214: too much is redrawn when 'cursorline' is setv8.1.2214
Problem: Too much is redrawn when 'cursorline' is set.
Solution: Don't do a complete redraw. (closes #5079)
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/main.c b/src/main.c index 5545cc48a6..8001c3fbb7 100644 --- a/src/main.c +++ b/src/main.c @@ -1380,27 +1380,20 @@ main_loop( 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; + // Might need to update for 'cursorline'. + // When 'cursorlineopt' is "screenline" need to redraw always. + if (curwin->w_p_cul + && (curwin->w_last_cursorline != curwin->w_cursor.lnum + || (curwin->w_p_culopt_flags & CULOPT_SCRLINE)) + && !char_avail()) + redraw_later(VALID); #endif - if (VIsual_active) update_curbuf(INVERTED); // update inverted part else if (must_redraw) { 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); + update_screen(0); mch_enable_flush(); } else if (redraw_cmdline || clear_cmdline) |