# HG changeset patch # User vimboss # Date 1257263061 0 # Node ID b1b09b68d7069755425a2c1849f517f3f9e760d9 # Parent 31df87b80e562b6a83b97e2610f539afc94bc440 updated for version 7.2-279 diff --git a/src/misc2.c b/src/misc2.c --- a/src/misc2.c +++ b/src/misc2.c @@ -156,7 +156,7 @@ coladvance2(pos, addspaces, finetune, wc || ((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 @@ coladvance2(pos, addspaces, finetune, wc #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 --- a/src/ops.c +++ b/src/ops.c @@ -2020,6 +2020,7 @@ op_replace(oap, c) 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 @@ op_replace(oap, c) { 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 @@ op_change(oap) * 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 --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 279, +/**/ 278, /**/ 277,