summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2014-08-16 18:36:43 +0200
committerBram Moolenaar <Bram@vim.org>2014-08-16 18:36:43 +0200
commitb5cf6c34e84bd52ba43c3db06ff337abbcb08326 (patch)
treec2e960cef292d1b6b5bd4259983a2da902c89a8b /src
parent1fc7e972b00ce271328fcb2734a321562b7194da (diff)
updated for version 7.4.408v7.4.408
Problem: Visual block insert breaks a multi-byte character. Solution: Calculate the position properly. (Yasuhiro Matsumoto)
Diffstat (limited to 'src')
-rw-r--r--src/ops.c20
-rw-r--r--src/testdir/Make_amiga.mak16
-rw-r--r--src/testdir/Make_dos.mak9
-rw-r--r--src/testdir/Make_ming.mak9
-rw-r--r--src/testdir/Make_os2.mak5
-rw-r--r--src/testdir/Make_vms.mms11
-rw-r--r--src/testdir/Makefile9
-rw-r--r--src/version.c2
8 files changed, 55 insertions, 26 deletions
diff --git a/src/ops.c b/src/ops.c
index 2b400916f7..86408a4944 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -609,6 +609,26 @@ block_insert(oap, s, b_insert, bdp)
}
}
+#ifdef FEAT_MBYTE
+ if (has_mbyte && spaces > 0)
+ {
+ /* Avoid starting halfway a multi-byte character. */
+ if (b_insert)
+ {
+ int off = (*mb_head_off)(oldp, oldp + offset + spaces);
+ spaces -= off;
+ count -= off;
+ }
+ else
+ {
+ int off = (*mb_off_next)(oldp, oldp + offset);
+ offset += off;
+ spaces = 0;
+ count = 0;
+ }
+ }
+#endif
+
newp = alloc_check((unsigned)(STRLEN(oldp)) + s_len + count + 1);
if (newp == NULL)
continue;
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak
index 030542430c..5012812448 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -38,13 +38,14 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test104.out test105.out test106.out test107.out \
test_autoformat_join.out \
test_breakindent.out \
- test_listlbr.out \
- test_listlbr_utf8.out \
- test_qf_title.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_options.out
+ test_listlbr.out \
+ test_listlbr_utf8.out \
+ test_options.out \
+ test_qf_title.out \
+ test_utf8.out
.SUFFIXES: .in .out
@@ -170,10 +171,11 @@ test106.out: test106.in
test107.out: test107.in
test_autoformat_join.out: test_autoformat_join.in
test_breakindent.out: test_breakindent.in
-test_listlbr.out: test_listlbr.in
-test_listlbr_utf8.out: test_listlbr_utf8.in
-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_listlbr.out: test_listlbr.in
+test_listlbr_utf8.out: test_listlbr_utf8.in
test_options.out: test_options.in
+test_qf_title.out: test_qf_title.in
+test_utf8.out: test_utf8.in
diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak
index 232e8809d3..cd7aa4d487 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -37,13 +37,14 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test105.out test106.out test107.out\
test_autoformat_join.out \
test_breakindent.out \
- test_listlbr.out \
- test_listlbr_utf8.out \
- test_qf_title.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_options.out
+ test_listlbr.out \
+ test_listlbr_utf8.out \
+ test_options.out \
+ test_qf_title.out \
+ test_utf8.out
SCRIPTS32 = test50.out test70.out
diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak
index eb533c9d0b..782f89d646 100644
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -57,13 +57,14 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test105.out test106.out test107.out \
test_autoformat_join.out \
test_breakindent.out \
- test_listlbr.out \
- test_listlbr_utf8.out \
- test_qf_title.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_options.out
+ test_listlbr.out \
+ test_listlbr_utf8.out \
+ test_options.out \
+ test_qf_title.out \
+ test_utf8.out
SCRIPTS32 = test50.out test70.out
diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak
index 0bd0096061..d3e833793a 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -38,14 +38,15 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test100.out test101.out test102.out test103.out test104.out \
test105.out test106.out test107.out \
test_autoformat_join.out \
+ test_breakindent.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_breakindent.out \
test_listlbr.out \
test_listlbr_utf8.out \
+ test_options.out \
test_qf_title.out \
- test_options.out
+ test_utf8.out
.SUFFIXES: .in .out
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index 7ccdf24e72..3c7afc346d 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -4,7 +4,7 @@
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
-# Last change: 2014 Jul 30
+# Last change: 2014 Aug 16
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
@@ -98,13 +98,14 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
test105.out test106.out test107.out \
test_autoformat_join.out \
test_breakindent.out \
- test_listlbr.out \
- test_listlbr_utf8.out \
- test_qf_title.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_options.out
+ test_listlbr.out \
+ test_listlbr_utf8.out \
+ test_options.out \
+ test_qf_title.out \
+ test_utf8.out
# Known problems:
# test17: ?
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
index f2b2216378..59fe011696 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -35,13 +35,14 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test104.out test105.out test106.out test107.out \
test_autoformat_join.out \
test_breakindent.out \
- test_listlbr.out \
- test_listlbr_utf8.out \
- test_qf_title.out \
test_changelist.out \
test_eval.out \
test_insertcount.out \
- test_options.out
+ test_listlbr.out \
+ test_listlbr_utf8.out \
+ test_options.out \
+ test_qf_title.out \
+ test_utf8.out
SCRIPTS_GUI = test16.out
diff --git a/src/version.c b/src/version.c
index 2b5dc454e5..4a876b5c72 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 408,
+/**/
407,
/**/
406,