Mercurial > vim
changeset 5930:05e1d8afcc5e v7.4.306
updated for version 7.4.306
Problem: getchar(0) does not return Esc.
Solution: Do not wait for an Esc sequence to be complete. (Yasuhiro
Matsumoto)
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Thu, 22 May 2014 18:59:58 +0200 |
parents | 16d26051085a |
children | 4b888397094f |
files | src/eval.c src/getchar.c src/version.c |
diffstat | 3 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/eval.c +++ b/src/eval.c @@ -11313,13 +11313,14 @@ f_getchar(argvars, rettv) n = safe_vgetc(); else if (get_tv_number_chk(&argvars[0], &error) == 1) /* getchar(1): only check if char avail */ - n = vpeekc(); - else if (error || vpeekc() == NUL) + n = vpeekc_any(); + else if (error || vpeekc_any() == NUL) /* illegal argument or getchar(0) and no char avail: return zero */ n = 0; else /* getchar(0) and char avail: return char */ n = safe_vgetc(); + if (n == K_IGNORE) continue; break;
--- a/src/getchar.c +++ b/src/getchar.c @@ -1883,7 +1883,7 @@ vpeekc_nomap() } #endif -#if defined(FEAT_INS_EXPAND) || defined(PROTO) +#if defined(FEAT_INS_EXPAND) || defined(FEAT_EVAL) || defined(PROTO) /* * Check if any character is available, also half an escape sequence. * Trick: when no typeahead found, but there is something in the typeahead