summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-09-21 12:46:22 +0200
committerBram Moolenaar <Bram@vim.org>2018-09-21 12:46:22 +0200
commitb0e982bf05feb27eddb5f809b052c1137f4d4add (patch)
tree18ec1911ac0d50f7de2b1902ab7e41848360d295
parentd4f73438bb6c88a0d3e315f0eebef30993b5921c (diff)
downloadvim-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.c3
-rw-r--r--src/testdir/test_sort.vim30
-rw-r--r--src/version.c2
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,