mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-07 15:37:14 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
@@ -4232,6 +4232,7 @@ nv_addsub(cap)
|
||||
{
|
||||
if (!VIsual_active && cap->oap->op_type == OP_NOP)
|
||||
{
|
||||
prep_redo_cmd(cap);
|
||||
cap->oap->op_type = cap->cmdchar == Ctrl_A ? OP_NR_ADD : OP_NR_SUB;
|
||||
op_addsub(cap->oap, cap->count1, cap->arg);
|
||||
cap->oap->op_type = OP_NOP;
|
||||
|
||||
@@ -5371,9 +5371,9 @@ op_addsub(oap, Prenum1, g_cmd)
|
||||
}
|
||||
else
|
||||
{
|
||||
int one_change;
|
||||
int length;
|
||||
pos_T startpos;
|
||||
int one_change;
|
||||
int length;
|
||||
pos_T startpos;
|
||||
|
||||
if (u_save((linenr_T)(oap->start.lnum - 1),
|
||||
(linenr_T)(oap->end.lnum + 1)) == FAIL)
|
||||
@@ -5388,32 +5388,29 @@ op_addsub(oap, Prenum1, g_cmd)
|
||||
pos.col = bd.textcol;
|
||||
length = bd.textlen;
|
||||
}
|
||||
else
|
||||
else if (oap->motion_type == MLINE)
|
||||
{
|
||||
if (oap->motion_type == MLINE)
|
||||
curwin->w_cursor.col = 0;
|
||||
pos.col = 0;
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
}
|
||||
else /* oap->motion_type == MCHAR */
|
||||
{
|
||||
if (!oap->inclusive)
|
||||
dec(&(oap->end));
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
pos.col = 0;
|
||||
if (pos.lnum == oap->start.lnum)
|
||||
{
|
||||
curwin->w_cursor.col = 0;
|
||||
pos.col = 0;
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
pos.col += oap->start.col;
|
||||
length -= oap->start.col;
|
||||
}
|
||||
else if (oap->motion_type == MCHAR)
|
||||
if (pos.lnum == oap->end.lnum)
|
||||
{
|
||||
if (!oap->inclusive)
|
||||
dec(&(oap->end));
|
||||
length = (colnr_T)STRLEN(ml_get(pos.lnum));
|
||||
pos.col = 0;
|
||||
if (pos.lnum == oap->start.lnum)
|
||||
{
|
||||
pos.col += oap->start.col;
|
||||
length -= oap->start.col;
|
||||
}
|
||||
if (pos.lnum == oap->end.lnum)
|
||||
{
|
||||
length = (int)STRLEN(ml_get(oap->end.lnum));
|
||||
if (oap->end.col >= length)
|
||||
oap->end.col = length - 1;
|
||||
length = oap->end.col - pos.col + 1;
|
||||
}
|
||||
length = (int)STRLEN(ml_get(oap->end.lnum));
|
||||
if (oap->end.col >= length)
|
||||
oap->end.col = length - 1;
|
||||
length = oap->end.col - pos.col + 1;
|
||||
}
|
||||
}
|
||||
one_change = do_addsub(oap->op_type, &pos, length, amount);
|
||||
@@ -5493,7 +5490,7 @@ do_addsub(op_type, pos, length, Prenum1)
|
||||
int was_positive = TRUE;
|
||||
int visual = VIsual_active;
|
||||
int did_change = FALSE;
|
||||
pos_T t = curwin->w_cursor;
|
||||
pos_T save_cursor = curwin->w_cursor;
|
||||
int maxlen = 0;
|
||||
pos_T startpos;
|
||||
pos_T endpos;
|
||||
@@ -5819,9 +5816,6 @@ do_addsub(op_type, pos, length, Prenum1)
|
||||
--curwin->w_cursor.col;
|
||||
}
|
||||
|
||||
theend:
|
||||
if (visual)
|
||||
curwin->w_cursor = t;
|
||||
if (did_change)
|
||||
{
|
||||
/* set the '[ and '] marks */
|
||||
@@ -5831,6 +5825,10 @@ theend:
|
||||
--curbuf->b_op_end.col;
|
||||
}
|
||||
|
||||
theend:
|
||||
if (visual)
|
||||
curwin->w_cursor = save_cursor;
|
||||
|
||||
return did_change;
|
||||
}
|
||||
|
||||
|
||||
@@ -701,4 +701,11 @@ func Test_visual_increment_37()
|
||||
call assert_equal(["1 26", "4 59"], getline(1, 2))
|
||||
endfunc
|
||||
|
||||
" Check redo after the normal mode increment
|
||||
func Test_visual_increment_38()
|
||||
exec "norm! i10\<ESC>5\<C-A>."
|
||||
call assert_equal(["20"], getline(1, '$'))
|
||||
call assert_equal([0, 1, 2, 0], getpos('.'))
|
||||
endfunc
|
||||
|
||||
" vim: tabstop=2 shiftwidth=2 expandtab
|
||||
|
||||
@@ -756,6 +756,10 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1089,
|
||||
/**/
|
||||
1088,
|
||||
/**/
|
||||
1087,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user