Index: src/ops.c
===================================================================
--- src/ops.c (revision 57762)
+++ src/ops.c (working copy)
@@ -57,6 +57,7 @@
char_u **y_array; /* pointer to array of line pointers */
linenr_T y_size; /* number of lines in y_array */
char_u y_type; /* MLINE, MCHAR or MBLOCK */
+ char_u y_op_change;
#ifdef FEAT_VISUAL
colnr_T y_width; /* only set if y_type == MBLOCK */
#endif
@@ -1140,6 +1141,7 @@
y_current->y_array[0] = p;
y_current->y_size = 1;
y_current->y_type = MCHAR; /* used to be MLINE, why? */
+ y_current->y_op_change = 0;
}
return OK;
}
@@ -2890,6 +2892,7 @@
y_current->y_size = yanklines;
y_current->y_type = yanktype; /* set the yank register type */
+ y_current->y_op_change = (oap->op_type == OP_CHANGE) && inindent(0);
#ifdef FEAT_VISUAL
y_current->y_width = 0;
#endif
@@ -3342,6 +3345,9 @@
y_width = y_current->y_width;
#endif
y_size = y_current->y_size;
+ if (Unix2003_compat && y_size > 1 && y_type == MCHAR && curwin->w_cursor.col == 0 && y_current->y_op_change) {
+ y_type = MLINE;
+ }
y_array = y_current->y_array;
}