diff options
author | Bram Moolenaar <bram@vim.org> | 2011-10-12 22:02:14 +0200 |
---|---|---|
committer | Bram Moolenaar <bram@vim.org> | 2011-10-12 22:02:14 +0200 |
commit | f85ab4e6b47187a0321a7b8f5bdbec3d86f4fd8c (patch) | |
tree | eaedc9cafe936f2ddb654b7b3976f048dfc78ed3 | |
parent | 28660702778f04eb3fb167bf4a13d7ac29ef4f8f (diff) | |
download | vim-f85ab4e6b47187a0321a7b8f5bdbec3d86f4fd8c.tar.gz |
Problem: Using getchar() in an expression mapping doesn't work well.
Solution: Don't save and restore the typeahead. (James Vega)
-rw-r--r-- | src/getchar.c | 23 | ||||
-rw-r--r-- | src/testdir/test34.ok | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 10 insertions, 17 deletions
diff --git a/src/getchar.c b/src/getchar.c index 16bf65a0..a895483a 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -2460,27 +2460,18 @@ vgetorpeek(advance) /* * Handle ":map <expr>": evaluate the {rhs} as an - * expression. Save and restore the typeahead so that - * getchar() can be used. Also save and restore the - * command line for "normal :". + * expression. Also save and restore the command line + * for "normal :". */ if (mp->m_expr) { - tasave_T tabuf; int save_vgetc_busy = vgetc_busy; - save_typeahead(&tabuf); - if (tabuf.typebuf_valid) - { - vgetc_busy = 0; - save_m_keys = vim_strsave(mp->m_keys); - save_m_str = vim_strsave(mp->m_str); - s = eval_map_expr(save_m_str, NUL); - vgetc_busy = save_vgetc_busy; - } - else - s = NULL; - restore_typeahead(&tabuf); + vgetc_busy = 0; + save_m_keys = vim_strsave(mp->m_keys); + save_m_str = vim_strsave(mp->m_str); + s = eval_map_expr(save_m_str, NUL); + vgetc_busy = save_vgetc_busy; } else #endif diff --git a/src/testdir/test34.ok b/src/testdir/test34.ok index 951dd8bc..d71183dc 100644 --- a/src/testdir/test34.ok +++ b/src/testdir/test34.ok @@ -1,5 +1,5 @@ xxx4asdf fail nop ok 9 333 -XX111XX +XX111-XX ---222--- 1. one 2. two diff --git a/src/version.c b/src/version.c index a77a78d8..01bc41b4 100644 --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 338, +/**/ 337, /**/ 336, |