changeset 5749:37af1e6e91bb v7.4.219

updated for version 7.4.219 Problem: When 'relativenumber' or 'cursorline' are set the window is redrawn much to often. (Patrick Hemmer, Dominique Pelle) Solution: Check the VALID_CROW flag instead of VALID_WROW.
author Bram Moolenaar <bram@vim.org>
date Thu, 27 Mar 2014 12:11:48 +0100
parents d96e8fbc3747
children 2200a7dfa660
files src/move.c src/version.c
diffstat 2 files changed, 23 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/move.c
+++ b/src/move.c
@@ -772,6 +772,20 @@ curs_rows(wp, do_botline)
 	}
     }
 
+    /* Redraw when w_cline_row changes and 'relativenumber' or 'cursorline' is
+     * set. */
+    if ((curwin->w_p_rnu
+#ifdef FEAT_SYN_HL
+		|| curwin->w_p_cul
+#endif
+		)
+	    && (curwin->w_valid & VALID_CROW) == 0
+# ifdef FEAT_INS_EXPAND
+	    && !pum_visible()
+# endif
+	    )
+	redraw_later(SOME_VALID);
+
     wp->w_valid |= VALID_CROW|VALID_CHEIGHT;
 
     /* validate botline too, if update_screen doesn't do it */
@@ -1172,22 +1186,15 @@ curs_columns(may_scroll)
     if (prev_skipcol != curwin->w_skipcol)
 	redraw_later(NOT_VALID);
 
-    /* Redraw when w_row changes and 'relativenumber' is set */
-    if (((curwin->w_valid & VALID_WROW) == 0 && (curwin->w_p_rnu
 #ifdef FEAT_SYN_HL
-	/* or when w_row changes and 'cursorline' is set. */
-						|| curwin->w_p_cul
+    /* Redraw when w_virtcol changes and 'cursorcolumn' is set */
+    if (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0
+# ifdef FEAT_INS_EXPAND
+	    && !pum_visible()
+# endif
+	)
+	redraw_later(SOME_VALID);
 #endif
-	))
-#ifdef FEAT_SYN_HL
-	/* or when w_virtcol changes and 'cursorcolumn' is set */
-	|| (curwin->w_p_cuc && (curwin->w_valid & VALID_VIRTCOL) == 0)
-#endif
-	)
-# ifdef FEAT_INS_EXPAND
-	    if (!pum_visible())
-# endif
-		redraw_later(SOME_VALID);
 
     curwin->w_valid |= VALID_WCOL|VALID_WROW|VALID_VIRTCOL;
 }
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    219,
+/**/
     218,
 /**/
     217,