mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
updated for version 7.2b-025
This commit is contained in:
56
src/normal.c
56
src/normal.c
@@ -581,6 +581,10 @@ normal_cmd(oap, toplevel)
|
|||||||
|
|
||||||
vim_memset(&ca, 0, sizeof(ca)); /* also resets ca.retval */
|
vim_memset(&ca, 0, sizeof(ca)); /* also resets ca.retval */
|
||||||
ca.oap = oap;
|
ca.oap = oap;
|
||||||
|
|
||||||
|
/* Use a count remembered from before entering an operator. After typing
|
||||||
|
* "3d" we return from normal_cmd() and come back here, the "3" is
|
||||||
|
* remembered in "opcount". */
|
||||||
ca.opcount = opcount;
|
ca.opcount = opcount;
|
||||||
|
|
||||||
#ifdef FEAT_SNIFF
|
#ifdef FEAT_SNIFF
|
||||||
@@ -606,9 +610,24 @@ normal_cmd(oap, toplevel)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* When not finishing an operator and no register name typed, reset the
|
||||||
|
* count. */
|
||||||
if (!finish_op && !oap->regname)
|
if (!finish_op && !oap->regname)
|
||||||
ca.opcount = 0;
|
ca.opcount = 0;
|
||||||
|
|
||||||
|
#ifdef FEAT_AUTOCMD
|
||||||
|
/* Restore counts from before receiving K_CURSORHOLD. This means after
|
||||||
|
* typing "3", handling K_CURSORHOLD and then typing "2" we get "32", not
|
||||||
|
* "3 * 2". */
|
||||||
|
if (oap->prev_opcount > 0 || oap->prev_count0 > 0)
|
||||||
|
{
|
||||||
|
ca.opcount = oap->prev_opcount;
|
||||||
|
ca.count0 = oap->prev_count0;
|
||||||
|
oap->prev_opcount = 0;
|
||||||
|
oap->prev_count0 = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_VISUAL
|
#ifdef FEAT_VISUAL
|
||||||
mapped_len = typebuf_maplen();
|
mapped_len = typebuf_maplen();
|
||||||
#endif
|
#endif
|
||||||
@@ -744,16 +763,27 @@ getcount:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
#ifdef FEAT_AUTOCMD
|
||||||
* If we're in the middle of an operator (including after entering a yank
|
if (c == K_CURSORHOLD)
|
||||||
* buffer with '"') AND we had a count before the operator, then that
|
|
||||||
* count overrides the current value of ca.count0.
|
|
||||||
* What this means effectively, is that commands like "3dw" get turned
|
|
||||||
* into "d3w" which makes things fall into place pretty neatly.
|
|
||||||
* If you give a count before AND after the operator, they are multiplied.
|
|
||||||
*/
|
|
||||||
if (ca.opcount != 0)
|
|
||||||
{
|
{
|
||||||
|
/* Save the count values so that ca.opcount and ca.count0 are exactly
|
||||||
|
* the same when coming back here after handling K_CURSORHOLD. */
|
||||||
|
oap->prev_opcount = ca.opcount;
|
||||||
|
oap->prev_count0 = ca.count0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
if (ca.opcount != 0)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* If we're in the middle of an operator (including after entering a
|
||||||
|
* yank buffer with '"') AND we had a count before the operator, then
|
||||||
|
* that count overrides the current value of ca.count0.
|
||||||
|
* What this means effectively, is that commands like "3dw" get turned
|
||||||
|
* into "d3w" which makes things fall into place pretty neatly.
|
||||||
|
* If you give a count before AND after the operator, they are
|
||||||
|
* multiplied.
|
||||||
|
*/
|
||||||
if (ca.count0)
|
if (ca.count0)
|
||||||
ca.count0 *= ca.opcount;
|
ca.count0 *= ca.opcount;
|
||||||
else
|
else
|
||||||
@@ -798,7 +828,7 @@ getcount:
|
|||||||
|
|
||||||
if (text_locked() && (nv_cmds[idx].cmd_flags & NV_NCW))
|
if (text_locked() && (nv_cmds[idx].cmd_flags & NV_NCW))
|
||||||
{
|
{
|
||||||
/* This command is not allowed wile editing a ccmdline: beep. */
|
/* This command is not allowed while editing a ccmdline: beep. */
|
||||||
clearopbeep(oap);
|
clearopbeep(oap);
|
||||||
text_locked_msg();
|
text_locked_msg();
|
||||||
goto normal_end;
|
goto normal_end;
|
||||||
@@ -1274,7 +1304,11 @@ normal_end:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FEAT_CMDL_INFO
|
#ifdef FEAT_CMDL_INFO
|
||||||
if (oap->op_type == OP_NOP && oap->regname == 0)
|
if (oap->op_type == OP_NOP && oap->regname == 0
|
||||||
|
# ifdef FEAT_AUTOCMD
|
||||||
|
&& ca.cmdchar != K_CURSORHOLD
|
||||||
|
# endif
|
||||||
|
)
|
||||||
clear_showcmd();
|
clear_showcmd();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -2076,6 +2076,10 @@ typedef struct oparg_S
|
|||||||
#endif
|
#endif
|
||||||
colnr_T start_vcol; /* start col for block mode operator */
|
colnr_T start_vcol; /* start col for block mode operator */
|
||||||
colnr_T end_vcol; /* end col for block mode operator */
|
colnr_T end_vcol; /* end col for block mode operator */
|
||||||
|
#ifdef FEAT_AUTOCMD
|
||||||
|
long prev_opcount; /* ca.opcount saved for K_CURSORHOLD */
|
||||||
|
long prev_count0; /* ca.count0 saved for K_CURSORHOLD */
|
||||||
|
#endif
|
||||||
} oparg_T;
|
} oparg_T;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -676,6 +676,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 */
|
||||||
|
/**/
|
||||||
|
25,
|
||||||
/**/
|
/**/
|
||||||
24,
|
24,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user