changeset 6018:79950dae1d7d v7.4.349

updated for version 7.4.349 Problem: When there are matches to highlight the whole window is redrawn, which is slow. Solution: Only redraw everything when lines were inserted or deleted. Reset b_mod_xlines when needed. (Alexey Radkov)
author Bram Moolenaar <bram@vim.org>
date Wed, 02 Jul 2014 17:16:58 +0200
parents 7be65fcedd0b
children 1cb48ecf240e
files src/screen.c src/version.c src/window.c
diffstat 3 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -1769,8 +1769,10 @@ win_update(wp)
 					syntax_check_changed(lnum)))
 #endif
 #ifdef FEAT_SEARCH_EXTRA
-				/* match in fixed position might need redraw */
-				||  wp->w_match_head != NULL
+				/* match in fixed position might need redraw
+				 * if lines were inserted or deleted */
+				|| (wp->w_match_head != NULL
+						    && buf->b_mod_xlines != 0)
 #endif
 				)))))
 	{
--- 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 */
 /**/
+    349,
+/**/
     348,
 /**/
     347,
--- a/src/window.c
+++ b/src/window.c
@@ -6904,12 +6904,13 @@ match_add(wp, grp, pat, prio, id, pos_li
 	    }
 	    else
 	    {
+		wp->w_buffer->b_mod_set = TRUE;
 		wp->w_buffer->b_mod_top = toplnum;
 		wp->w_buffer->b_mod_bot = botlnum;
+		wp->w_buffer->b_mod_xlines = 0;
 	    }
 	    m->pos.toplnum = toplnum;
 	    m->pos.botlnum = botlnum;
-	    wp->w_buffer->b_mod_set = TRUE;
 	    rtype = VALID;
 	}
     }
@@ -6986,10 +6987,11 @@ match_delete(wp, id, perr)
 	}
 	else
 	{
+	    wp->w_buffer->b_mod_set = TRUE;
 	    wp->w_buffer->b_mod_top = cur->pos.toplnum;
 	    wp->w_buffer->b_mod_bot = cur->pos.botlnum;
+	    wp->w_buffer->b_mod_xlines = 0;
 	}
-	wp->w_buffer->b_mod_set = TRUE;
 	rtype = VALID;
     }
     vim_free(cur);