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)
diff --git a/src/normal.c b/src/normal.c
index 309b895..a46cc9d 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9583,20 +9583,21 @@
 #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 */