98 lines
2.7 KiB
Plaintext
98 lines
2.7 KiB
Plaintext
To: vim_dev@googlegroups.com
|
|
Subject: Patch 7.3.879
|
|
Fcc: outbox
|
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
|
Mime-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
------------
|
|
|
|
Patch 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)
|
|
Files: src/normal.c
|
|
|
|
|
|
*** ../vim-7.3.878/src/normal.c 2013-03-16 14:20:45.000000000 +0100
|
|
--- src/normal.c 2013-04-05 16:54:13.000000000 +0200
|
|
***************
|
|
*** 5418,5423 ****
|
|
--- 5418,5424 ----
|
|
cmdarg_T *cap;
|
|
{
|
|
int old_p_im;
|
|
+ int cmd_result;
|
|
|
|
#ifdef FEAT_VISUAL
|
|
if (VIsual_active)
|
|
***************
|
|
*** 5449,5455 ****
|
|
old_p_im = p_im;
|
|
|
|
/* get a command line and execute it */
|
|
! do_cmdline(NULL, getexline, NULL,
|
|
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
|
|
|
|
/* If 'insertmode' changed, enter or exit Insert mode */
|
|
--- 5450,5456 ----
|
|
old_p_im = p_im;
|
|
|
|
/* get a command line and execute it */
|
|
! cmd_result = do_cmdline(NULL, getexline, NULL,
|
|
cap->oap->op_type != OP_NOP ? DOCMD_KEEPLINE : 0);
|
|
|
|
/* If 'insertmode' changed, enter or exit Insert mode */
|
|
***************
|
|
*** 5461,5472 ****
|
|
restart_edit = 0;
|
|
}
|
|
|
|
! /* The start of the operator may have become invalid by the Ex
|
|
! * command. */
|
|
! if (cap->oap->op_type != OP_NOP
|
|
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|
|
|| cap->oap->start.col >
|
|
! (colnr_T)STRLEN(ml_get(cap->oap->start.lnum))))
|
|
clearopbeep(cap->oap);
|
|
}
|
|
}
|
|
--- 5462,5478 ----
|
|
restart_edit = 0;
|
|
}
|
|
|
|
! if (cmd_result == FAIL)
|
|
! /* The Ex command failed, do not execute the operator. */
|
|
! clearop(cap->oap);
|
|
! else if (cap->oap->op_type != OP_NOP
|
|
&& (cap->oap->start.lnum > curbuf->b_ml.ml_line_count
|
|
|| cap->oap->start.col >
|
|
! (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);
|
|
}
|
|
}
|
|
*** ../vim-7.3.878/src/version.c 2013-04-05 15:39:41.000000000 +0200
|
|
--- src/version.c 2013-04-05 16:56:43.000000000 +0200
|
|
***************
|
|
*** 730,731 ****
|
|
--- 730,733 ----
|
|
{ /* Add new patch number below this line */
|
|
+ /**/
|
|
+ 879,
|
|
/**/
|
|
|
|
--
|
|
~
|
|
~
|
|
~
|
|
".signature" 4 lines, 50 characters written
|
|
|
|
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
|
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
|
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
|
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|