mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
updated for version 7.1-175
This commit is contained in:
parent
6c964835b1
commit
f5dcf7c3b5
71
src/edit.c
71
src/edit.c
@ -8189,6 +8189,29 @@ ins_del()
|
|||||||
AppendCharToRedobuff(K_DEL);
|
AppendCharToRedobuff(K_DEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ins_bs_one __ARGS((colnr_T *vcolp));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Delete one character for ins_bs().
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
ins_bs_one(vcolp)
|
||||||
|
colnr_T *vcolp;
|
||||||
|
{
|
||||||
|
dec_cursor();
|
||||||
|
getvcol(curwin, &curwin->w_cursor, vcolp, NULL, NULL);
|
||||||
|
if (State & REPLACE_FLAG)
|
||||||
|
{
|
||||||
|
/* Don't delete characters before the insert point when in
|
||||||
|
* Replace mode */
|
||||||
|
if (curwin->w_cursor.lnum != Insstart.lnum
|
||||||
|
|| curwin->w_cursor.col >= Insstart.col)
|
||||||
|
replace_do_bs();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
(void)del_char(FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle Backspace, delete-word and delete-line in Insert mode.
|
* Handle Backspace, delete-word and delete-line in Insert mode.
|
||||||
* Return TRUE when backspace was actually used.
|
* Return TRUE when backspace was actually used.
|
||||||
@ -8418,9 +8441,7 @@ ins_bs(c, mode, inserted_space_p)
|
|||||||
int ts;
|
int ts;
|
||||||
colnr_T vcol;
|
colnr_T vcol;
|
||||||
colnr_T want_vcol;
|
colnr_T want_vcol;
|
||||||
#if 0
|
colnr_T start_vcol;
|
||||||
int extra = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*inserted_space_p = FALSE;
|
*inserted_space_p = FALSE;
|
||||||
if (p_sta && in_indent)
|
if (p_sta && in_indent)
|
||||||
@ -8431,6 +8452,7 @@ ins_bs(c, mode, inserted_space_p)
|
|||||||
* 'showbreak' may get in the way, need to get the last column of
|
* 'showbreak' may get in the way, need to get the last column of
|
||||||
* the previous character. */
|
* the previous character. */
|
||||||
getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
|
getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
|
||||||
|
start_vcol = vcol;
|
||||||
dec_cursor();
|
dec_cursor();
|
||||||
getvcol(curwin, &curwin->w_cursor, NULL, NULL, &want_vcol);
|
getvcol(curwin, &curwin->w_cursor, NULL, NULL, &want_vcol);
|
||||||
inc_cursor();
|
inc_cursor();
|
||||||
@ -8439,30 +8461,7 @@ ins_bs(c, mode, inserted_space_p)
|
|||||||
/* delete characters until we are at or before want_vcol */
|
/* delete characters until we are at or before want_vcol */
|
||||||
while (vcol > want_vcol
|
while (vcol > want_vcol
|
||||||
&& (cc = *(ml_get_cursor() - 1), vim_iswhite(cc)))
|
&& (cc = *(ml_get_cursor() - 1), vim_iswhite(cc)))
|
||||||
{
|
ins_bs_one(&vcol);
|
||||||
dec_cursor();
|
|
||||||
getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
|
|
||||||
if (State & REPLACE_FLAG)
|
|
||||||
{
|
|
||||||
/* Don't delete characters before the insert point when in
|
|
||||||
* Replace mode */
|
|
||||||
if (curwin->w_cursor.lnum != Insstart.lnum
|
|
||||||
|| curwin->w_cursor.col >= Insstart.col)
|
|
||||||
{
|
|
||||||
#if 0 /* what was this for? It causes problems when sw != ts. */
|
|
||||||
if (State == REPLACE && (int)vcol < want_vcol)
|
|
||||||
{
|
|
||||||
(void)del_char(FALSE);
|
|
||||||
extra = 2; /* don't pop too much */
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
replace_do_bs();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
(void)del_char(FALSE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* insert extra spaces until we are at want_vcol */
|
/* insert extra spaces until we are at want_vcol */
|
||||||
while (vcol < want_vcol)
|
while (vcol < want_vcol)
|
||||||
@ -8479,22 +8478,16 @@ ins_bs(c, mode, inserted_space_p)
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
ins_str((char_u *)" ");
|
ins_str((char_u *)" ");
|
||||||
if ((State & REPLACE_FLAG) /* && extra <= 1 */)
|
if ((State & REPLACE_FLAG))
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
if (extra)
|
|
||||||
replace_push_off(NUL);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
replace_push(NUL);
|
replace_push(NUL);
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (extra == 2)
|
|
||||||
extra = 1;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
|
getvcol(curwin, &curwin->w_cursor, &vcol, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If we are now back where we started delete one character. Can
|
||||||
|
* happen when using 'sts' and 'linebreak'. */
|
||||||
|
if (vcol >= start_vcol)
|
||||||
|
ins_bs_one(&vcol);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -666,6 +666,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 */
|
||||||
|
/**/
|
||||||
|
175,
|
||||||
/**/
|
/**/
|
||||||
174,
|
174,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user