updated for version 7.2-279
diff --git a/src/misc2.c b/src/misc2.c
index 0537993..5fc64bb 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -156,7 +156,7 @@
|| ((ve_flags & VE_ONEMORE) && wcol < MAXCOL)
#endif
;
- line = ml_get_curline();
+ line = ml_get_buf(curbuf, pos->lnum, FALSE);
if (wcol >= MAXCOL)
{
@@ -332,9 +332,9 @@
#endif
#ifdef FEAT_MBYTE
- /* prevent cursor from moving on the trail byte */
+ /* prevent from moving onto a trail byte */
if (has_mbyte)
- mb_adjust_cursor();
+ mb_adjustpos(pos);
#endif
if (col < wcol)
diff --git a/src/ops.c b/src/ops.c
index b21f4c2..e5db313 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2020,6 +2020,7 @@
bd.is_MAX = (curwin->w_curswant == MAXCOL);
for ( ; curwin->w_cursor.lnum <= oap->end.lnum; ++curwin->w_cursor.lnum)
{
+ curwin->w_cursor.col = 0; /* make sure cursor position is valid */
block_prep(oap, &bd, curwin->w_cursor.lnum, TRUE);
if (bd.textlen == 0 && (!virtual_op || bd.is_MAX))
continue; /* nothing to replace */
@@ -2035,6 +2036,7 @@
{
pos_T vpos;
+ vpos.lnum = curwin->w_cursor.lnum;
getvpos(&vpos, oap->start_vcol);
bd.startspaces += vpos.coladd;
n = bd.startspaces;
@@ -2693,11 +2695,8 @@
* initial coladd offset as part of "startspaces" */
if (bd.is_short)
{
- linenr_T lnum = curwin->w_cursor.lnum;
-
- curwin->w_cursor.lnum = linenr;
+ vpos.lnum = linenr;
(void)getvpos(&vpos, oap->start_vcol);
- curwin->w_cursor.lnum = lnum;
}
else
vpos.coladd = 0;
diff --git a/src/version.c b/src/version.c
index 9edf072..80bdb24 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 279,
+/**/
278,
/**/
277,