changeset 6098:975d96776111 v7.4.387

updated for version 7.4.387 Problem: "4gro" replaces one character then executes "ooo". (Urtica Dioica) Solution: Write the ESC in the second stuff buffer.
author Bram Moolenaar <bram@vim.org>
date Wed, 30 Jul 2014 16:00:58 +0200
parents ccaea8c2c8d7
children 216bda57abaa
files src/edit.c src/getchar.c src/proto/getchar.pro src/testdir/Make_amiga.mak src/testdir/Make_dos.mak src/testdir/Make_ming.mak src/testdir/Make_os2.mak src/testdir/Make_vms.mms src/testdir/Makefile src/testdir/test_insertcount.in src/testdir/test_insertcount.ok src/version.c
diffstat 12 files changed, 39 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/edit.c
+++ b/src/edit.c
@@ -8389,7 +8389,7 @@ ins_esc(count, cmdchar, nomove)
 
 	    (void)start_redo_ins();
 	    if (cmdchar == 'r' || cmdchar == 'v')
-		stuffReadbuff(ESC_STR);	/* no ESC in redo buffer */
+		stuffRedoReadbuff(ESC_STR);	/* no ESC in redo buffer */
 	    ++RedrawingDisabled;
 	    disabled_redraw = TRUE;
 	    return FALSE;	/* repeat the insert */
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -678,6 +678,17 @@ stuffReadbuff(s)
     add_buff(&readbuf1, s, -1L);
 }
 
+/*
+ * Append string "s" to the redo stuff buffer.
+ * CSI and K_SPECIAL must already have been escaped.
+ */
+    void
+stuffRedoReadbuff(s)
+    char_u	*s;
+{
+    add_buff(&readbuf2, s, -1L);
+}
+
     void
 stuffReadbuffLen(s, len)
     char_u	*s;
--- a/src/proto/getchar.pro
+++ b/src/proto/getchar.pro
@@ -15,6 +15,7 @@ void AppendToRedobuffLit __ARGS((char_u 
 void AppendCharToRedobuff __ARGS((int c));
 void AppendNumberToRedobuff __ARGS((long n));
 void stuffReadbuff __ARGS((char_u *s));
+void stuffRedoReadbuff __ARGS((char_u *s));
 void stuffReadbuffLen __ARGS((char_u *s, long len));
 void stuffReadbuffSpec __ARGS((char_u *s));
 void stuffcharReadbuff __ARGS((int c));
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -43,6 +43,7 @@ SCRIPTS = test1.out test3.out test4.out 
 		test_qf_title.out \
 		test_changelist.out \
 		test_eval.out \
+		test_insertcount.out \
 		test_options.out
 
 .SUFFIXES: .in .out
@@ -174,4 +175,5 @@ test_listlbr_utf8.out: test_listlbr_utf8
 test_qf_title.out: test_qf_title.in
 test_changelist.out: test_changelist.in
 test_eval.out: test_eval.in
+test_insertcount.out: test_insertcount.in
 test_options.out: test_options.in
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -42,6 +42,7 @@ SCRIPTS =	test3.out test4.out test5.out 
 		test_qf_title.out \
 		test_changelist.out \
 		test_eval.out \
+		test_insertcount.out \
 		test_options.out
 
 SCRIPTS32 =	test50.out test70.out
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -62,6 +62,7 @@ SCRIPTS =	test3.out test4.out test5.out 
 		test_qf_title.out \
 		test_changelist.out \
 		test_eval.out \
+		test_insertcount.out \
 		test_options.out
 
 SCRIPTS32 =	test50.out test70.out
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -40,6 +40,7 @@ SCRIPTS = test1.out test3.out test4.out 
 		test_autoformat_join.out \
 		test_changelist.out \
 		test_eval.out \
+		test_insertcount.out \
 		test_breakindent.out \
 		test_listlbr.out \
 		test_listlbr_utf8.out \
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -103,6 +103,7 @@ SCRIPT = test1.out  test2.out  test3.out
 	 test_qf_title.out \
 	 test_changelist.out \
 	 test_eval.out \
+	 test_insertcount.out \
 	 test_options.out
 
 # Known problems:
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -40,6 +40,7 @@ SCRIPTS = test1.out test2.out test3.out 
 		test_qf_title.out \
 		test_changelist.out \
 		test_eval.out \
+		test_insertcount.out \
 		test_options.out
 
 SCRIPTS_GUI = test16.out
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_insertcount.in
@@ -0,0 +1,14 @@
+Tests for repeating insert and replace.
+
+STARTTEST
+:so small.vim
+:/Second
+4gro
+:/^First/,$wq! test.out
+:" get here when failed and in Insert mode
+:.wq! test.out
+ENDTEST
+
+First line
+Second line
+Last line
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_insertcount.ok
@@ -0,0 +1,3 @@
+First line
+ooooecond line
+Last line
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    387,
+/**/
     386,
 /**/
     385,