changeset 7001:27f8247d2619 v7.4.818

patch 7.4.818 Problem: 'linebreak' breaks c% if the last Visual selection was block. (Chris Morganiser, Issue 389) Solution: Handle Visual block mode differently. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Tue, 11 Aug 2015 17:46:36 +0200
parents 2ffb934a31db
children 6db4f492c515
files src/normal.c src/testdir/test_listlbr.in src/testdir/test_listlbr.ok src/version.c
diffstat 4 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -9583,20 +9583,21 @@ nv_cursorhold(cap)
 #endif
 
 /*
- * calculate start/end virtual columns for operating in block mode
+ * Calculate start/end virtual columns for operating in block mode.
  */
     static void
 get_op_vcol(oap, redo_VIsual_vcol, initial)
     oparg_T	*oap;
     colnr_T	redo_VIsual_vcol;
-    int		initial;            /* when true: adjust position for 'selectmode' */
+    int		initial;    /* when TRUE adjust position for 'selectmode' */
 {
     colnr_T	    start, end;
 
-    if (VIsual_mode != Ctrl_V)
+    if (VIsual_mode != Ctrl_V
+	    || (!initial && oap->end.col < W_WIDTH(curwin)))
 	return;
 
-    oap->block_mode = TRUE;
+    oap->block_mode = VIsual_active;
 
 #ifdef FEAT_MBYTE
     /* prevent from moving onto a trail byte */
--- a/src/testdir/test_listlbr.in
+++ b/src/testdir/test_listlbr.in
@@ -80,6 +80,13 @@ Go
 aaa
 aaa
 a2k2j~e.
+:let g:test ="Test 10: using normal commands after block-visual"
+:$put =g:test
+:set linebreak
+Go
+abcd{ef
+ghijklm
+no}pqrs2k0f{c%
 :%w! test.out
 :qa!
 ENDTEST
--- a/src/testdir/test_listlbr.ok
+++ b/src/testdir/test_listlbr.ok
@@ -46,3 +46,6 @@ Test 9: using redo after block visual mo
 AaA
 AaA
 A
+Test 10: using normal commands after block-visual
+
+abcdpqrs
--- 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 */
 /**/
+    818,
+/**/
     817,
 /**/
     816,