Mercurial > vim
diff src/normal.c @ 8445:dd2e2bd69d0e v7.4.1513
commit https://github.com/vim/vim/commit/41e0f2f48f541eb2c8eb5620d3f1d270eb979154
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Mar 8 14:44:42 2016 +0100
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.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 08 Mar 2016 14:45:05 +0100 |
parents | 74b15ed0a259 |
children | 24b43dd167eb |
line wrap: on
line diff
--- 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); } }