Mercurial > vim
changeset 1982:b1b09b68d706 v7.2.279
updated for version 7.2-279
author | vimboss |
---|---|
date | Tue, 03 Nov 2009 15:44:21 +0000 |
parents | 31df87b80e56 |
children | f54dab7cebab |
files | src/misc2.c src/ops.c src/version.c |
diffstat | 3 files changed, 8 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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;