# HG changeset patch # User Bram Moolenaar # Date 1264606273 -3600 # Node ID 2f6e519726f19c2f6cb58e9cd75e827eaafa0ab3 # Parent 1da25369227bead09cf603ebfa93ebe1d206c871 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) diff --git a/src/ops.c b/src/ops.c --- 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; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -682,6 +682,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 346, +/**/ 345, /**/ 344,