changeset 2723:2e72d84e8965 v7.3.139

updated for version 7.3.139 Problem: When 'lazyredraw' is set ":ver" output can't be read. Solution: Don't redraw the screen when at a prompt or command line.
author Bram Moolenaar <bram@vim.org>
date Tue, 22 Mar 2011 13:07:26 +0100
parents ea399ac2c1b9
children 96a7b564c2f3
files src/getchar.c src/message.c src/misc1.c src/version.c
diffstat 4 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2713,7 +2713,8 @@ vgetorpeek(advance)
 		 * 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)
+		if (((State & INSERT) != 0 || p_lz) && (State & CMDLINE) == 0
+			  && advance && must_redraw != 0 && !need_wait_return)
 		{
 		    update_screen(0);
 		    setcursor(); /* put cursor back where it belongs */
--- a/src/message.c
+++ b/src/message.c
@@ -879,16 +879,17 @@ wait_return(redraw)
     if (msg_silent != 0)
 	return;
 
-/*
- * With the global command (and some others) we only need one return at the
- * end. Adjust cmdline_row to avoid the next message overwriting the last one.
- * When inside vgetc(), we can't wait for a typed character at all.
- */
+    /*
+     * When inside vgetc(), we can't wait for a typed character at all.
+     * With the global command (and some others) we only need one return at
+     * the end. Adjust cmdline_row to avoid the next message overwriting the
+     * last one.
+     */
     if (vgetc_busy > 0)
 	return;
+    need_wait_return = TRUE;
     if (no_wait_return)
     {
-	need_wait_return = TRUE;
 	if (!exmode_active)
 	    cmdline_row = msg_row;
 	return;
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3116,7 +3116,7 @@ get_keystroke()
 
 	if (n == KEYLEN_REMOVED)  /* key code removed */
 	{
-	    if (must_redraw)
+	    if (must_redraw != 0 && !need_wait_return && (State & CMDLINE) == 0)
 	    {
 		/* Redrawing was postponed, do it now. */
 		update_screen(0);
--- 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 */
 /**/
+    139,
+/**/
     138,
 /**/
     137,