mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.3.879
Problem: When using an ex command in operator pending mode, using Esc to abort the command still executes the operator. (David Bürgin) Solution: Clear the operator when the ex command fails. (Christian Brabandt)
This commit is contained in:
16
src/normal.c
16
src/normal.c
@@ -5418,6 +5418,7 @@ nv_colon(cap)
|
|||||||
cmdarg_T *cap;
|
cmdarg_T *cap;
|
||||||
{
|
{
|
||||||
int old_p_im;
|
int old_p_im;
|
||||||
|
int cmd_result;
|
||||||
|
|
||||||
#ifdef FEAT_VISUAL
|
#ifdef FEAT_VISUAL
|
||||||
if (VIsual_active)
|
if (VIsual_active)
|
||||||
@@ -5449,7 +5450,7 @@ nv_colon(cap)
|
|||||||
old_p_im = p_im;
|
old_p_im = p_im;
|
||||||
|
|
||||||
/* get a command line and execute it */
|
/* get a command line and execute it */
|
||||||
do_cmdline(NULL, getexline, NULL,
|
cmd_result = do_cmdline(NULL, getexline, NULL,
|
||||||
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
|
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
|
||||||
|
|
||||||
/* If 'insertmode' changed, enter or exit Insert mode */
|
/* If 'insertmode' changed, enter or exit Insert mode */
|
||||||
@@ -5461,12 +5462,17 @@ nv_colon(cap)
|
|||||||
restart_edit = 0;
|
restart_edit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The start of the operator may have become invalid by the Ex
|
if (cmd_result == FAIL)
|
||||||
* command. */
|
/* The Ex command failed, do not execute the operator. */
|
||||||
if (cap->oap->op_type != OP_NOP
|
clearop(cap->oap);
|
||||||
|
else if (cap->oap->op_type != OP_NOP
|
||||||
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|
||||||
|| cap->oap->start.col >
|
|| cap->oap->start.col >
|
||||||
(colnr_T)STRLEN(ml_get(cap->oap->start.lnum))))
|
(colnr_T)STRLEN(ml_get(cap->oap->start.lnum))
|
||||||
|
|| did_emsg
|
||||||
|
))
|
||||||
|
/* The start of the operator has become invalid by the Ex command.
|
||||||
|
*/
|
||||||
clearopbeep(cap->oap);
|
clearopbeep(cap->oap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -728,6 +728,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 */
|
||||||
|
/**/
|
||||||
|
879,
|
||||||
/**/
|
/**/
|
||||||
878,
|
878,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user