vim-patch:7.4.1513

Problem:    "J" fails if there are not enough lines. (Christian Neukirchen)
Solution:   Reduce the count, only fail on the last line.

41e0f2f48f
This commit is contained in:
Jurica Bradaric
2016-05-14 23:11:17 +02:00
parent 8cdf908ddb
commit d81556513d
3 changed files with 38 additions and 12 deletions

View File

@@ -7648,19 +7648,25 @@ static void nv_halfpage(cmdarg_T *cap)
*/
static void nv_join(cmdarg_T *cap)
{
if (VIsual_active) /* join the visual lines */
if (VIsual_active) { // join the visual lines
nv_operator(cap);
else if (!checkclearop(cap->oap)) {
if (cap->count0 <= 1)
cap->count0 = 2; /* default for join is two lines! */
if (curwin->w_cursor.lnum + cap->count0 - 1 >
curbuf->b_ml.ml_line_count)
clearopbeep(cap->oap); /* beyond last line */
else {
prep_redo(cap->oap->regname, cap->count0,
NUL, cap->cmdchar, NUL, NUL, cap->nchar);
do_join(cap->count0, cap->nchar == NUL, true, true, true);
} else if (!checkclearop(cap->oap)) {
if (cap->count0 <= 1) {
cap->count0 = 2; // default for join is two lines!
}
if (curwin->w_cursor.lnum + cap->count0 - 1 >
curbuf->b_ml.ml_line_count) {
// can't join when on the last line
if (cap->count0 <= 2) {
clearopbeep(cap->oap);
return;
}
cap->count0 = curbuf->b_ml.ml_line_count - curwin->w_cursor.lnum + 1;
}
prep_redo(cap->oap->regname, cap->count0,
NUL, cap->cmdchar, NUL, NUL, cap->nchar);
do_join(cap->count0, cap->nchar == NUL, true, true, true);
}
}