mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
updated for version 7.3.429
Problem: When 'cpoptions' includes "E" "c0" in the first column is an error. The redo register is then set to the errornous command. Solution: Do not set the redo register if the command fails because of an empty region. (Hideki Eiraku)
This commit is contained in:
@@ -470,6 +470,24 @@ ResetRedobuff()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Discard the contents of the redo buffer and restore the previous redo
|
||||||
|
* buffer.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
CancelRedo()
|
||||||
|
{
|
||||||
|
if (!block_redo)
|
||||||
|
{
|
||||||
|
free_buff(&redobuff);
|
||||||
|
redobuff = old_redobuff;
|
||||||
|
old_redobuff.bh_first.b_next = NULL;
|
||||||
|
start_stuff();
|
||||||
|
while (read_stuff(TRUE) != NUL)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO)
|
#if defined(FEAT_AUTOCMD) || defined(FEAT_EVAL) || defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Save redobuff and old_redobuff to save_redobuff and save_old_redobuff.
|
* Save redobuff and old_redobuff to save_redobuff and save_old_redobuff.
|
||||||
@@ -691,9 +709,9 @@ stuffnumReadbuff(n)
|
|||||||
* Read a character from the redo buffer. Translates K_SPECIAL, CSI and
|
* Read a character from the redo buffer. Translates K_SPECIAL, CSI and
|
||||||
* multibyte characters.
|
* multibyte characters.
|
||||||
* The redo buffer is left as it is.
|
* The redo buffer is left as it is.
|
||||||
* if init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
|
* If init is TRUE, prepare for redo, return FAIL if nothing to redo, OK
|
||||||
* otherwise
|
* otherwise.
|
||||||
* if old is TRUE, use old_redobuff instead of redobuff
|
* If old is TRUE, use old_redobuff instead of redobuff.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
read_redo(init, old_redo)
|
read_redo(init, old_redo)
|
||||||
|
18
src/normal.c
18
src/normal.c
@@ -1978,7 +1978,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
VIsual_reselect = FALSE; /* don't reselect now */
|
VIsual_reselect = FALSE; /* don't reselect now */
|
||||||
#endif
|
#endif
|
||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(void)op_delete(oap);
|
(void)op_delete(oap);
|
||||||
@@ -1992,7 +1995,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
{
|
{
|
||||||
if (!gui_yank)
|
if (!gui_yank)
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
(void)op_yank(oap, FALSE, !gui_yank);
|
(void)op_yank(oap, FALSE, !gui_yank);
|
||||||
@@ -2004,7 +2010,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
VIsual_reselect = FALSE; /* don't reselect now */
|
VIsual_reselect = FALSE; /* don't reselect now */
|
||||||
#endif
|
#endif
|
||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* This is a new edit command, not a restart. Need to
|
/* This is a new edit command, not a restart. Need to
|
||||||
@@ -2066,7 +2075,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
case OP_LOWER:
|
case OP_LOWER:
|
||||||
case OP_ROT13:
|
case OP_ROT13:
|
||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
op_tilde(oap);
|
op_tilde(oap);
|
||||||
check_cursor_col();
|
check_cursor_col();
|
||||||
@@ -2099,7 +2111,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_VISUALEXTRA
|
#ifdef FEAT_VISUALEXTRA
|
||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* This is a new edit command, not a restart. Need to
|
/* This is a new edit command, not a restart. Need to
|
||||||
@@ -2129,7 +2144,10 @@ do_pending_operator(cap, old_col, gui_yank)
|
|||||||
#ifdef FEAT_VISUALEXTRA
|
#ifdef FEAT_VISUALEXTRA
|
||||||
if (empty_region_error)
|
if (empty_region_error)
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
vim_beep();
|
vim_beep();
|
||||||
|
CancelRedo();
|
||||||
|
}
|
||||||
#ifdef FEAT_VISUALEXTRA
|
#ifdef FEAT_VISUALEXTRA
|
||||||
else
|
else
|
||||||
op_replace(oap, cap->nchar);
|
op_replace(oap, cap->nchar);
|
||||||
|
@@ -4,8 +4,9 @@ char_u *get_recorded __ARGS((void));
|
|||||||
char_u *get_inserted __ARGS((void));
|
char_u *get_inserted __ARGS((void));
|
||||||
int stuff_empty __ARGS((void));
|
int stuff_empty __ARGS((void));
|
||||||
void typeahead_noflush __ARGS((int c));
|
void typeahead_noflush __ARGS((int c));
|
||||||
void flush_buffers __ARGS((int typeahead));
|
void flush_buffers __ARGS((int flush_typeahead));
|
||||||
void ResetRedobuff __ARGS((void));
|
void ResetRedobuff __ARGS((void));
|
||||||
|
void CancelRedo __ARGS((void));
|
||||||
void saveRedobuff __ARGS((void));
|
void saveRedobuff __ARGS((void));
|
||||||
void restoreRedobuff __ARGS((void));
|
void restoreRedobuff __ARGS((void));
|
||||||
void AppendToRedobuff __ARGS((char_u *s));
|
void AppendToRedobuff __ARGS((char_u *s));
|
||||||
|
@@ -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 */
|
||||||
|
/**/
|
||||||
|
429,
|
||||||
/**/
|
/**/
|
||||||
428,
|
428,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user