mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
updated for version 7.3.086
Problem: When using a mapping with an expression and there was no count, v:count has the value of the previous command. (ZyX) Solution: Also set v:count and v:count1 before getting the character that could be a command or a count.
This commit is contained in:
43
src/normal.c
43
src/normal.c
@@ -25,6 +25,9 @@ static colnr_T resel_VIsual_col; /* nr of cols or end col */
|
|||||||
static int restart_VIsual_select = 0;
|
static int restart_VIsual_select = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
static void set_vcount_ca __ARGS((cmdarg_T *cap, int *set_prevcount));
|
||||||
|
#endif
|
||||||
static int
|
static int
|
||||||
# ifdef __BORLANDC__
|
# ifdef __BORLANDC__
|
||||||
_RTLENTRYF
|
_RTLENTRYF
|
||||||
@@ -648,6 +651,14 @@ normal_cmd(oap, toplevel)
|
|||||||
dont_scroll = FALSE; /* allow scrolling here */
|
dont_scroll = FALSE; /* allow scrolling here */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
/* Set v:count here, when called from main() and not a stuffed
|
||||||
|
* command, so that v:count can be used in an expression mapping
|
||||||
|
* when there is no count. */
|
||||||
|
if (toplevel && stuff_empty())
|
||||||
|
set_vcount_ca(&ca, &set_prevcount);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the command character from the user.
|
* Get the command character from the user.
|
||||||
*/
|
*/
|
||||||
@@ -725,15 +736,7 @@ getcount:
|
|||||||
* command, so that v:count can be used in an expression mapping
|
* command, so that v:count can be used in an expression mapping
|
||||||
* right after the count. */
|
* right after the count. */
|
||||||
if (toplevel && stuff_empty())
|
if (toplevel && stuff_empty())
|
||||||
{
|
set_vcount_ca(&ca, &set_prevcount);
|
||||||
long count = ca.count0;
|
|
||||||
|
|
||||||
/* multiply with ca.opcount the same way as below */
|
|
||||||
if (ca.opcount != 0)
|
|
||||||
count = ca.opcount * (count == 0 ? 1 : count);
|
|
||||||
set_vcount(count, count == 0 ? 1 : count, set_prevcount);
|
|
||||||
set_prevcount = FALSE; /* only set v:prevcount once */
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
if (ctrl_w)
|
if (ctrl_w)
|
||||||
{
|
{
|
||||||
@@ -1386,6 +1389,26 @@ normal_end:
|
|||||||
opcount = ca.opcount;
|
opcount = ca.opcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
|
/*
|
||||||
|
* Set v:count and v:count1 according to "cap".
|
||||||
|
* Set v:prevcount only when "set_prevcount" is TRUE.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
set_vcount_ca(cap, set_prevcount)
|
||||||
|
cmdarg_T *cap;
|
||||||
|
int *set_prevcount;
|
||||||
|
{
|
||||||
|
long count = cap->count0;
|
||||||
|
|
||||||
|
/* multiply with cap->opcount the same way as above */
|
||||||
|
if (cap->opcount != 0)
|
||||||
|
count = cap->opcount * (count == 0 ? 1 : count);
|
||||||
|
set_vcount(count, count == 0 ? 1 : count, *set_prevcount);
|
||||||
|
*set_prevcount = FALSE; /* only set v:prevcount once */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle an operator after visual mode or when the movement is finished
|
* Handle an operator after visual mode or when the movement is finished
|
||||||
*/
|
*/
|
||||||
@@ -8529,7 +8552,7 @@ nv_pipe(cap)
|
|||||||
else
|
else
|
||||||
curwin->w_curswant = 0;
|
curwin->w_curswant = 0;
|
||||||
/* keep curswant at the column where we wanted to go, not where
|
/* keep curswant at the column where we wanted to go, not where
|
||||||
we ended; differs if line is too short */
|
* we ended; differs if line is too short */
|
||||||
curwin->w_set_curswant = FALSE;
|
curwin->w_set_curswant = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -714,6 +714,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
86,
|
||||||
/**/
|
/**/
|
||||||
85,
|
85,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user