Mercurial > vim
diff src/change.c @ 18440:d6cb1e706fb7 v8.1.2214
patch 8.1.2214: too much is redrawn when 'cursorline' is set
Commit: https://github.com/vim/vim/commit/11a58af66fa5c442f0a22c5d59beabf187ed4e89
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Oct 24 22:32:31 2019 +0200
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 https://github.com/vim/vim/issues/5079)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 24 Oct 2019 22:45:04 +0200 |
parents | 5da355d15b88 |
children | bbea1f108187 |
line wrap: on
line diff
--- a/src/change.c +++ b/src/change.c @@ -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 + // Relative numbering may require updating more. + if (wp->w_p_rnu) + redraw_win_later(wp, SOME_VALID); #ifdef FEAT_SYN_HL - || ((wp->w_p_cul && lnum <= wp->w_last_cursorline) - || (wp->w_p_culopt_flags & CULOPT_SCRLINE)) + // 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 - ) - redraw_win_later(wp, SOME_VALID); } }