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);
 	}
     }