Mercurial > vim
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'); - } } }