diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-08 14:44:42 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-08 14:44:42 +0100 |
commit | 41e0f2f48f541eb2c8eb5620d3f1d270eb979154 (patch) | |
tree | edcad48fd7b7003cb5acaa54527e3119c154abf8 /src | |
parent | 94d0191dbcce829ad9b92d902b6e2717041db3b8 (diff) |
patch 7.4.1513v7.4.1513
Problem: "J" fails if there are not enough lines. (Christian Neukirchen)
Solution: Reduce the count, only fail on the last line.
Diffstat (limited to 'src')
-rw-r--r-- | src/normal.c | 17 | ||||
-rw-r--r-- | src/testdir/test_alot.vim | 1 | ||||
-rw-r--r-- | src/testdir/test_join.vim | 13 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 28 insertions, 5 deletions
diff --git a/src/normal.c b/src/normal.c index b57191ae07..7f0d8bd74c 100644 --- a/src/normal.c +++ b/src/normal.c @@ -9213,13 +9213,20 @@ nv_join(cmdarg_T *cap) 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); - (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE, TRUE); + /* 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); + (void)do_join(cap->count0, cap->nchar == NUL, TRUE, TRUE, TRUE); } } diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim index 3ceece32d9..d7718ff6d0 100644 --- a/src/testdir/test_alot.vim +++ b/src/testdir/test_alot.vim @@ -6,6 +6,7 @@ source test_cursor_func.vim source test_delete.vim source test_expand.vim source test_glob2regpat.vim +source test_join.vim source test_lispwords.vim source test_menu.vim source test_reltime.vim diff --git a/src/testdir/test_join.vim b/src/testdir/test_join.vim new file mode 100644 index 0000000000..8a028f1e55 --- /dev/null +++ b/src/testdir/test_join.vim @@ -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 diff --git a/src/version.c b/src/version.c index eb9c48667f..2a233131fa 100644 --- a/src/version.c +++ b/src/version.c @@ -744,6 +744,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1513, +/**/ 1512, /**/ 1511, |