# HG changeset patch # User Christian Brabandt # Date 1457195405 -3600 # Node ID 7d1c42e3ce11c851aec2a79bd781734240c1775f # Parent 3d307af63e17292b99d663928989163c7d292b4b commit https://github.com/vim/vim/commit/20b4f463f4ab50fa9bcc9838aa94101fa5698125 Author: Bram Moolenaar Date: Sat Mar 5 17:25:39 2016 +0100 patch 7.4.1491 Problem: Visual-block shift breaks multi-byte characters. Solution: Compute column differently. (Yasuhiro Matsumoto) Add a test. diff --git a/src/ops.c b/src/ops.c --- a/src/ops.c +++ b/src/ops.c @@ -410,7 +410,15 @@ shift_block(oparg_T *oap, int amount) { #ifdef FEAT_MBYTE if (has_mbyte) - bd.textstart += (*mb_ptr2len)(bd.textstart); + { + if ((*mb_ptr2len)(bd.textstart) == 1) + ++bd.textstart; + else + { + ws_vcol = 0; + bd.startspaces = 0; + } + } else #endif ++bd.textstart; diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -184,6 +184,7 @@ NEW_TESTS = test_arglist.res \ test_syntax.res \ test_viminfo.res \ test_viml.res \ + test_visual.res \ test_alot.res diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -744,6 +744,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1491, +/**/ 1490, /**/ 1489,