# HG changeset patch # User Christian Brabandt # Date 1536689707 -7200 # Node ID b9a4e49a3f7c4e4ca6063fc8f89f55a7c9a977ac # Parent a5265f6bf10c155095bec6b499d13b84eae8f8ca patch 8.1.0367: getchar(1) no longer processes pending messages commit https://github.com/vim/vim/commit/84d9390480548c8d711dd772cb162a91d0bb3c30 Author: Bram Moolenaar Date: Tue Sep 11 20:10:20 2018 +0200 patch 8.1.0367: getchar(1) no longer processes pending messages Problem: getchar(1) no longer processes pending messages. (Yasuhiro Matsumoto) Solution: Call parse_queued_messages(). diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -4680,6 +4680,13 @@ f_getchar(typval_T *argvars, typval_T *r 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 --- 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,