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;
 }
 
--- 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,