changeset 4203:eea32254940f v7.3.853

updated for version 7.3.853 Problem: Using "ra" in multiple lines on multi-byte characters leaves a few characters not replaced. Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto)
author Bram Moolenaar <bram@vim.org>
date Thu, 07 Mar 2013 18:50:57 +0100
parents 97591d534d42
children d40b25430b5a
files src/ops.c src/testdir/test69.in src/testdir/test69.ok src/version.c
diffstat 4 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/ops.c
+++ b/src/ops.c
@@ -2194,7 +2194,8 @@ op_replace(oap, c)
 		{
 		    /* This is slow, but it handles replacing a single-byte
 		     * with a multi-byte and the other way around. */
-		    oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
+		    if (curwin->w_cursor.lnum == oap->end.lnum)
+			oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
 		    n = State;
 		    State = REPLACE;
 		    ins_char(c);
--- a/src/testdir/test69.in
+++ b/src/testdir/test69.in
@@ -1,5 +1,6 @@
 Test for multi-byte text formatting.
 Also test, that 'mps' with multibyte chars works.
+And test "ra" on multi-byte characters.
 
 STARTTEST
 :so mbyte.vim
@@ -144,6 +145,15 @@ ENDTEST
 ‘ two three ’ four
 }
 STARTTEST
+/^ra test
+jVjra
+ENDTEST
+
+ra test
+abba
+aab
+
+STARTTEST
 :g/^STARTTEST/.,/^ENDTEST/d
 :1;/^Results/,$wq! test.out
 ENDTEST
--- a/src/testdir/test69.ok
+++ b/src/testdir/test69.ok
@@ -144,3 +144,8 @@ a
 {
  four
 }
+
+ra test
+aaaa
+aaa
+
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    853,
+/**/
     852,
 /**/
     851,