0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

updated for version 7.1-220

This commit is contained in:
Bram Moolenaar
2008-01-12 16:12:10 +00:00
parent 56cefaf15a
commit 1f14d57a48
2 changed files with 41 additions and 12 deletions

View File

@@ -150,6 +150,7 @@ static void nv_pipe __ARGS((cmdarg_T *cap));
static void nv_bck_word __ARGS((cmdarg_T *cap)); static void nv_bck_word __ARGS((cmdarg_T *cap));
static void nv_wordcmd __ARGS((cmdarg_T *cap)); static void nv_wordcmd __ARGS((cmdarg_T *cap));
static void nv_beginline __ARGS((cmdarg_T *cap)); static void nv_beginline __ARGS((cmdarg_T *cap));
static void adjust_cursor __ARGS((oparg_T *oap));
#ifdef FEAT_VISUAL #ifdef FEAT_VISUAL
static void adjust_for_sel __ARGS((cmdarg_T *cap)); static void adjust_for_sel __ARGS((cmdarg_T *cap));
static int unadjust_for_sel __ARGS((void)); static int unadjust_for_sel __ARGS((void));
@@ -6567,12 +6568,8 @@ nv_brace(cap)
clearopbeep(cap->oap); clearopbeep(cap->oap);
else else
{ {
/* Don't leave the cursor on the NUL past a line */ /* Don't leave the cursor on the NUL past end of line. */
if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL) adjust_cursor(cap->oap);
{
--curwin->w_cursor.col;
cap->oap->inclusive = TRUE;
}
#ifdef FEAT_VIRTUALEDIT #ifdef FEAT_VIRTUALEDIT
curwin->w_cursor.coladd = 0; curwin->w_cursor.coladd = 0;
#endif #endif
@@ -8408,12 +8405,9 @@ nv_wordcmd(cap)
else else
n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP); n = fwd_word(cap->count1, cap->arg, cap->oap->op_type != OP_NOP);
/* Don't leave the cursor on the NUL past a line */ /* Don't leave the cursor on the NUL past the end of line. */
if (n != FAIL && curwin->w_cursor.col > 0 && gchar_cursor() == NUL) if (n != FAIL)
{ adjust_cursor(cap->oap);
--curwin->w_cursor.col;
cap->oap->inclusive = TRUE;
}
if (n == FAIL && cap->oap->op_type == OP_NOP) if (n == FAIL && cap->oap->op_type == OP_NOP)
clearopbeep(cap->oap); clearopbeep(cap->oap);
@@ -8429,6 +8423,39 @@ nv_wordcmd(cap)
} }
} }
/*
* Used after a movement command: If the cursor ends up on the NUL after the
* end of the line, may move it back to the last character and make the motion
* inclusive.
*/
static void
adjust_cursor(oap)
oparg_T *oap;
{
/* The cursor cannot remain on the NUL when:
* - the column is > 0
* - not in Visual mode or 'selection' is "o"
* - 'virtualedit' is not "all" and not "onemore".
*/
if (curwin->w_cursor.col > 0 && gchar_cursor() == NUL
#ifdef FEAT_VISUAL
&& (!VIsual_active || *p_sel == 'o')
#endif
#ifdef FEAT_VIRTUALEDIT
&& !virtual_active() && (ve_flags & VE_ONEMORE) == 0
#endif
)
{
--curwin->w_cursor.col;
#ifdef FEAT_MBYTE
/* prevent cursor from moving on the trail byte */
if (has_mbyte)
mb_adjust_cursor();
#endif
oap->inclusive = TRUE;
}
}
/* /*
* "0" and "^" commands. * "0" and "^" commands.
* cap->arg is the argument for beginline(). * cap->arg is the argument for beginline().

View File

@@ -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 */
/**/
220,
/**/ /**/
219, 219,
/**/ /**/