summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-09-11 20:10:20 +0200
committerBram Moolenaar <Bram@vim.org>2018-09-11 20:10:20 +0200
commit84d9390480548c8d711dd772cb162a91d0bb3c30 (patch)
treebad40506b246a5dec5a47f6ae3220190805f1b8e
parent007921611b04d8fca5ad0b1d4e7b0461b47cd435 (diff)
patch 8.1.0367: getchar(1) no longer processes pending messagesv8.1.0367
Problem: getchar(1) no longer processes pending messages. (Yasuhiro Matsumoto) Solution: Call parse_queued_messages().
-rw-r--r--src/evalfunc.c7
-rw-r--r--src/version.c2
2 files changed, 9 insertions, 0 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 54e7dcdd39..19e2657bac 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -4680,6 +4680,13 @@ f_getchar(typval_T *argvars, typval_T *rettv)
varnumber_T n;
int error = FALSE;
+#ifdef MESSAGE_QUEUE
+ // vpeekc() used to check for messages, but that caused problems, invoking
+ // a callback where it was not expected. Some plugins use getchar(1) in a
+ // loop to await a message, therefore make sure we check for messages here.
+ parse_queued_messages();
+#endif
+
/* Position the cursor. Needed after a message that ends in a space. */
windgoto(msg_row, msg_col);
diff --git a/src/version.c b/src/version.c
index 32f0d1d9e4..3e86c4006b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 367,
+/**/
366,
/**/
365,