1
0
forked from aniani/vim

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)
This commit is contained in:
Bram Moolenaar 2011-10-12 22:02:14 +02:00
parent 2e7b1df8fa
commit b3479bd229
3 changed files with 10 additions and 17 deletions

View File

@ -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

View File

@ -1,5 +1,5 @@
xxx4asdf fail nop ok 9 333
XX111XX
XX111-XX
---222---
1. one
2. two

View File

@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
338,
/**/
337,
/**/