summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-08-09 19:48:40 +0200
committerBram Moolenaar <Bram@vim.org>2013-08-09 19:48:40 +0200
commitf17968b54a00380d8e955bc13eb0a2ffd30ff8ea (patch)
tree96ff9e67c915542a00538c4d10c938a30eeebc38
parent86f931e1c3252798dbd60a5d4e07e3c64ae8ee74 (diff)
updated for version 7.4b.020v7.4b.020
Problem: "g~ap" changes first character of next paragraph. (Manuel Ortega) Solution: Avoid subtracting (0 - 1) from todo. (Mike Williams)
-rw-r--r--src/ops.c7
-rw-r--r--src/testdir/test82.in10
-rw-r--r--src/testdir/test82.ok3
-rw-r--r--src/version.c2
4 files changed, 21 insertions, 1 deletions
diff --git a/src/ops.c b/src/ops.c
index 3ee6e55160..3989802d38 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2429,8 +2429,13 @@ swapchars(op_type, pos, length)
{
# ifdef FEAT_MBYTE
if (has_mbyte)
+ {
+ int len = (*mb_ptr2len)(ml_get_pos(pos));
+
/* we're counting bytes, not characters */
- todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1;
+ if (len > 0)
+ todo -= len - 1;
+ }
# endif
did_change |= swapchar(op_type, pos);
if (inc(pos) == -1) /* at end of file */
diff --git a/src/testdir/test82.in b/src/testdir/test82.in
index 63a81e7898..8503f5488f 100644
--- a/src/testdir/test82.in
+++ b/src/testdir/test82.in
@@ -1,4 +1,5 @@
Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
+Also test "g~ap".
STARTTEST
:so small.vim
@@ -88,6 +89,15 @@ ggdG
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
+:"
+:" test that g~ap changes one paragraph only.
+:new
+iabcd
+
+defggg0g~ap:let lns = getline(1,3)
+:q!
+:call append(line('$'), lns)
+:"
:wq! test.out
ENDTEST
diff --git a/src/testdir/test82.ok b/src/testdir/test82.ok
index fa65883466..3f1866a0fb 100644
--- a/src/testdir/test82.ok
+++ b/src/testdir/test82.ok
@@ -1,2 +1,5 @@
3732 checks passed
+ABCD
+
+defg
diff --git a/src/version.c b/src/version.c
index 5e4a595437..3add57dd98 100644
--- a/src/version.c
+++ b/src/version.c
@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 20,
+/**/
19,
/**/
18,