# HG changeset patch # User Bram Moolenaar # Date 1318449734 -7200 # Node ID 7919a3d7333b99cece7d1a2657c89c18de78bf82 # Parent e8f3119f5d09ea91433b7e8ccfd68ddef0f526ac updated for version 7.3.338 Problem: Using getchar() in an expression mapping doesn't work well. Solution: Don't save and restore the typeahead. (James Vega) diff --git a/src/getchar.c b/src/getchar.c --- a/src/getchar.c +++ b/src/getchar.c @@ -2460,27 +2460,18 @@ vgetorpeek(advance) /* * Handle ":map ": 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 --- 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 --- 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,