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
index 4b32b57..606ce07 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -1301,10 +1301,16 @@
}
}
+/*
+ * 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_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 @@
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
index 1fea40f..f79e92e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -682,6 +682,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 346,
+/**/
345,
/**/
344,