summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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,