changeset 17478:f9a443306174 v8.1.1737

patch 8.1.1737: :args command that outputs one line gives more prompt commit https://github.com/vim/vim/commit/949f1989cba8bf7653316c2b1444c26f1536bfab Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jul 23 23:00:08 2019 +0200 patch 8.1.1737: :args command that outputs one line gives more prompt Problem: :args command that outputs one line gives more prompt. Solution: Only output line break if needed. (Daniel Hahler, closes https://github.com/vim/vim/issues/4715)
author Bram Moolenaar <Bram@vim.org>
date Tue, 23 Jul 2019 23:15:05 +0200
parents 9b550114e729
children 35b73ec0ba25
files src/testdir/test_arglist.vim src/version.c
diffstat 2 files changed, 9 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_arglist.vim
+++ b/src/testdir/test_arglist.vim
@@ -140,10 +140,7 @@ func Test_argument()
 
   call assert_equal(['d', 'c', 'b', 'a', 'c'], g:buffers)
 
-  redir => result
-  args
-  redir END
-  call assert_equal('a   b   [c] d', trim(result))
+  call assert_equal("\na   b   [c] d   ", execute(':args'))
 
   .argd
   call assert_equal(['a', 'b', 'd'], argv())
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1737,
+/**/
     1736,
 /**/
     1735,
@@ -4351,6 +4353,7 @@ list_in_columns(char_u **items, int size
     int		i;
     int		ncol;
     int		nrow;
+    int		cur_row = 1;
     int		item_count = 0;
     int		width = 0;
 #ifdef FEAT_SYN_HL
@@ -4381,12 +4384,12 @@ list_in_columns(char_u **items, int size
 	return;
     }
 
-    /* The rightmost column doesn't need a separator.
-     * Sacrifice it to fit in one more column if possible. */
+    // The rightmost column doesn't need a separator.
+    // Sacrifice it to fit in one more column if possible.
     ncol = (int) (Columns + 1) / width;
     nrow = item_count / ncol + (item_count % ncol ? 1 : 0);
 
-    /* i counts columns then rows.  idx counts rows then columns. */
+    // "i" counts columns then rows.  idx counts rows then columns.
     for (i = 0; !got_int && i < nrow * ncol; ++i)
     {
 	int idx = (i / ncol) + (i % ncol) * nrow;
@@ -4407,8 +4410,9 @@ list_in_columns(char_u **items, int size
 		msg_putchar(']');
 	    if (last_col)
 	    {
-		if (msg_col > 0)
+		if (msg_col > 0 && cur_row < nrow)
 		    msg_putchar('\n');
+		++cur_row;
 	    }
 	    else
 	    {
@@ -4416,11 +4420,6 @@ list_in_columns(char_u **items, int size
 		    msg_putchar(' ');
 	    }
 	}
-	else
-	{
-	    if (msg_col > 0)
-		msg_putchar('\n');
-	}
     }
 }