diff --git a/src/screen.c b/src/screen.c index fa3b3860f6..78927c163d 100644 --- a/src/screen.c +++ b/src/screen.c @@ -4417,17 +4417,20 @@ screen_del_lines( /* * Return TRUE when postponing displaying the mode message: when not redrawing - * or inside a mapping. + * or inside a mapping or a script. */ int skip_showmode(void) { - // Call char_avail() only when we are going to show something, because it - // takes a bit of time. redrawing() may also call char_avail(). + // Check the stuff buffer, typeahead buffer and script input for pending + // characters, instead of char_avail() which also reads raw terminal input + // and may pick up terminal response sequences (e.g. t_RV response), + // falsely preventing the mode from being shown. if (global_busy || msg_silent != 0 || !redrawing() - || (char_avail() && !KeyTyped)) + || ((!stuff_empty() || typebuf.tb_len > 0 || using_script()) + && !KeyTyped)) { redraw_mode = TRUE; // show mode later return TRUE; diff --git a/src/version.c b/src/version.c index 412a37bb0c..67feb77dd7 100644 --- a/src/version.c +++ b/src/version.c @@ -734,6 +734,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 238, /**/ 237, /**/