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)
diff --git a/src/screen.c b/src/screen.c
index 8e61691..65aadc4 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1769,8 +1769,10 @@
 					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
 				)))))
 	{
diff --git a/src/version.c b/src/version.c
index 214f24a..e86b43d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    349,
+/**/
     348,
 /**/
     347,
diff --git a/src/window.c b/src/window.c
index 96d4771..8106451 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6904,12 +6904,13 @@
 	    }
 	    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 @@
 	}
 	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);