Mercurial > vim
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