changeset 2721:417c04135ca2 v7.3.137

updated for version 7.3.137 Problem: When 'lazyredraw' is set the screen may not be updated. (Ivan Krasilnikov) Solution: Call update_screen() before waiting for input.
author Bram Moolenaar <bram@vim.org>
date Thu, 03 Mar 2011 15:04:08 +0100
parents 3adc6dd2d122
children ea399ac2c1b9
files src/getchar.c src/misc1.c src/version.c
diffstat 3 files changed, 14 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2710,8 +2710,10 @@ vgetorpeek(advance)
 		 * are still available.  But when those available characters
 		 * are part of a mapping, and we are going to do a blocking
 		 * wait here.  Need to update the screen to display the
-		 * changed text so far. */
-		if ((State & INSERT) && advance && must_redraw != 0)
+		 * changed text so far. Also for when 'lazyredraw' is set and
+		 * redrawing was postponed because there was something in the
+		 * input buffer (e.g., termresponse). */
+		if (((State & INSERT) || p_lz) && advance && must_redraw != 0)
 		{
 		    update_screen(0);
 		    setcursor(); /* put cursor back where it belongs */
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3115,7 +3115,15 @@ get_keystroke()
 	    continue;
 
 	if (n == KEYLEN_REMOVED)  /* key code removed */
+	{
+	    if (must_redraw)
+	    {
+		/* Redrawing was postponed, do it now. */
+		update_screen(0);
+		setcursor(); /* put cursor back where it belongs */
+	    }
 	    continue;
+	}
 	if (n > 0)		/* found a termcode: adjust length */
 	    len = n;
 	if (len == 0)		/* nothing typed yet */
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    137,
+/**/
     136,
 /**/
     135,