forked from aniani/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.
This commit is contained in:
13
src/normal.c
13
src/normal.c
@@ -9213,15 +9213,22 @@ nv_join(cmdarg_T *cap)
|
|||||||
cap->count0 = 2; /* default for join is two lines! */
|
cap->count0 = 2; /* default for join is two lines! */
|
||||||
if (curwin->w_cursor.lnum + cap->count0 - 1 >
|
if (curwin->w_cursor.lnum + cap->count0 - 1 >
|
||||||
curbuf->b_ml.ml_line_count)
|
curbuf->b_ml.ml_line_count)
|
||||||
clearopbeep(cap->oap); /* beyond last line */
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
/* 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,
|
prep_redo(cap->oap->regname, cap->count0,
|
||||||
NUL, cap->cmdchar, NUL, NUL, cap->nchar);
|
NUL, cap->cmdchar, NUL, NUL, cap->nchar);
|
||||||
(void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE, TRUE);
|
(void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "P", "gP", "p" and "gp" commands.
|
* "P", "gP", "p" and "gp" commands.
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ source test_cursor_func.vim
|
|||||||
source test_delete.vim
|
source test_delete.vim
|
||||||
source test_expand.vim
|
source test_expand.vim
|
||||||
source test_glob2regpat.vim
|
source test_glob2regpat.vim
|
||||||
|
source test_join.vim
|
||||||
source test_lispwords.vim
|
source test_lispwords.vim
|
||||||
source test_menu.vim
|
source test_menu.vim
|
||||||
source test_reltime.vim
|
source test_reltime.vim
|
||||||
|
|||||||
13
src/testdir/test_join.vim
Normal file
13
src/testdir/test_join.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
" Test for joining lines.
|
||||||
|
|
||||||
|
func Test_join_with_count()
|
||||||
|
new
|
||||||
|
call setline(1, ['one', 'two', 'three', 'four'])
|
||||||
|
normal J
|
||||||
|
call assert_equal('one two', getline(1))
|
||||||
|
%del
|
||||||
|
call setline(1, ['one', 'two', 'three', 'four'])
|
||||||
|
normal 10J
|
||||||
|
call assert_equal('one two three four', getline(1))
|
||||||
|
quit!
|
||||||
|
endfunc
|
||||||
@@ -743,6 +743,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 */
|
||||||
|
/**/
|
||||||
|
1513,
|
||||||
/**/
|
/**/
|
||||||
1512,
|
1512,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user