Mercurial > vim
changeset 2061:2f6e519726f1 v7.2.346
updated for version 7.2.346
Problem: Repeating a command with @: causes a mapping to be applied twice.
Solution: Do not remap characters inserted in the typeahead buffer. (Kana
Natsuno)
author | Bram Moolenaar <bram@zimbu.org> |
---|---|
date | Wed, 27 Jan 2010 16:31:13 +0100 |
parents | 1da25369227b |
children | dae4cd29a0b7 |
files | src/ops.c src/version.c |
diffstat | 2 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ops.c +++ b/src/ops.c @@ -1301,10 +1301,16 @@ put_reedit_in_typebuf(silent) } } +/* + * Insert register contents "s" into the typeahead buffer, so that it will be + * executed again. + * When "esc" is TRUE it is to be taken literally: Escape CSI characters and + * no remapping. + */ static int put_in_typebuf(s, esc, colon, silent) char_u *s; - int esc; /* Escape CSI characters */ + int esc; int colon; /* add ':' before the line */ int silent; { @@ -1312,7 +1318,7 @@ put_in_typebuf(s, esc, colon, silent) put_reedit_in_typebuf(silent); if (colon) - retval = ins_typebuf((char_u *)"\n", REMAP_YES, 0, TRUE, silent); + retval = ins_typebuf((char_u *)"\n", REMAP_NONE, 0, TRUE, silent); if (retval == OK) { char_u *p; @@ -1324,12 +1330,13 @@ put_in_typebuf(s, esc, colon, silent) if (p == NULL) retval = FAIL; else - retval = ins_typebuf(p, REMAP_YES, 0, TRUE, silent); + retval = ins_typebuf(p, esc ? REMAP_NONE : REMAP_YES, + 0, TRUE, silent); if (esc) vim_free(p); } if (colon && retval == OK) - retval = ins_typebuf((char_u *)":", REMAP_YES, 0, TRUE, silent); + retval = ins_typebuf((char_u *)":", REMAP_NONE, 0, TRUE, silent); return retval; }