patch 8.2.0018: :join does not add white space where it should
Problem: :join does not add white space where it should. (Zdenek Dohnal)
Solution: Handle joining multiple lines propely.
diff --git a/src/ops.c b/src/ops.c
index 2a62506..72ffd56 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2001,7 +2001,7 @@
{
curr = skipwhite(curr);
if (*curr != NUL && *curr != ')'
- && currsize != 0 && endcurr1 != TAB
+ && sumsize != 0 && endcurr1 != TAB
&& (!has_format_option(FO_MBYTE_JOIN)
|| (mb_ptr2char(curr) < 0x100 && endcurr1 < 0x100))
&& (!has_format_option(FO_MBYTE_JOIN2)
diff --git a/src/testdir/test_join.vim b/src/testdir/test_join.vim
index 5801c2f..377edab 100644
--- a/src/testdir/test_join.vim
+++ b/src/testdir/test_join.vim
@@ -427,3 +427,14 @@
call assert_equal(expected, getline(1, '$'))
close!
endfunc
+
+func Test_join_lines()
+ new
+ call setline(1, ['a', 'b', '', 'c', 'd'])
+ %join
+ call assert_equal('a b c d', getline(1))
+ call setline(1, ['a', 'b', '', 'c', 'd'])
+ normal 5J
+ call assert_equal('a b c d', getline(1))
+ bwipe!
+endfunc
diff --git a/src/version.c b/src/version.c
index c11710a..65924cd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 18,
+/**/
17,
/**/
16,