diff src/ops.c @ 8399:7d1c42e3ce11 v7.4.1491

commit https://github.com/vim/vim/commit/20b4f463f4ab50fa9bcc9838aa94101fa5698125 Author: Bram Moolenaar <Bram@vim.org> 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.
author Christian Brabandt <cb@256bit.org>
date Sat, 05 Mar 2016 17:30:05 +0100
parents 2a8d6b2dd925
children 6a1becf4f282
line wrap: on
line diff
--- 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;