From 6eb634ef1f40623192f331dda7b13e34fffba9e2 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 3 Mar 2011 15:04:08 +0100 Subject: 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. --- src/getchar.c | 6 ++++-- src/misc1.c | 8 ++++++++ src/version.c | 2 ++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/getchar.c b/src/getchar.c index 63b93a547..8edf0a37e 100644 --- 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 */ diff --git a/src/misc1.c b/src/misc1.c index 9f3eff157..c39bb984f 100644 --- 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 */ diff --git a/src/version.c b/src/version.c index 1200558d2..e7902972b 100644 --- a/src/version.c +++ b/src/version.c @@ -714,6 +714,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 137, /**/ 136, /**/ -- cgit v1.2.3