diff options
author | Bram Moolenaar <Bram@vim.org> | 2018-09-21 12:46:22 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2018-09-21 12:46:22 +0200 |
commit | b0e982bf05feb27eddb5f809b052c1137f4d4add (patch) | |
tree | 18ec1911ac0d50f7de2b1902ab7e41848360d295 | |
parent | d4f73438bb6c88a0d3e315f0eebef30993b5921c (diff) | |
download | vim-git-b0e982bf05feb27eddb5f809b052c1137f4d4add.tar.gz |
patch 8.1.0416: sort doesn't report deleted linesv8.1.0416
Problem: Sort doesn't report deleted lines.
Solution: Call msgmore(). (Christian Brabandt, closes #3454)
-rw-r--r-- | src/ex_cmds.c | 3 | ||||
-rw-r--r-- | src/testdir/test_sort.vim | 30 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 35 insertions, 0 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 0a87f7b38..0c9644cc6 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -649,7 +649,10 @@ ex_sort(exarg_T *eap) /* Adjust marks for deleted (or added) lines and prepare for displaying. */ deleted = (long)(count - (lnum - eap->line2)); if (deleted > 0) + { mark_adjust(eap->line2 - deleted, eap->line2, (long)MAXLNUM, -deleted); + msgmore(-deleted); + } else if (deleted < 0) mark_adjust(eap->line2, MAXLNUM, -deleted, 0L); diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim index 6dc1d468c..14d008a17 100644 --- a/src/testdir/test_sort.vim +++ b/src/testdir/test_sort.vim @@ -1221,3 +1221,33 @@ func Test_sort_cmd() enew! endfunc + +func Test_sort_cmd_report() + enew! + call append(0, repeat([1], 3) + repeat([2], 3) + repeat([3], 3)) + $delete _ + setlocal nomodified + let res = execute('%sort u') + + call assert_equal([1,2,3], map(getline(1, '$'), 'v:val+0')) + call assert_match("6 fewer lines", res) + enew! + call append(0, repeat([1], 3) + repeat([2], 3) + repeat([3], 3)) + $delete _ + setlocal nomodified report=10 + let res = execute('%sort u') + + call assert_equal([1,2,3], map(getline(1, '$'), 'v:val+0')) + call assert_equal("", res) + enew! + call append(0, repeat([1], 3) + repeat([2], 3) + repeat([3], 3)) + $delete _ + setl report&vim + setlocal nomodified + let res = execute('1g/^/%sort u') + + call assert_equal([1,2,3], map(getline(1, '$'), 'v:val+0')) + " the output comes from the :g command, not from the :sort + call assert_match("6 fewer lines", res) + enew! + endfunc diff --git a/src/version.c b/src/version.c index 637ea9909..b76df9eea 100644 --- a/src/version.c +++ b/src/version.c @@ -795,6 +795,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 416, +/**/ 415, /**/ 414, |