0
0
mirror of https://github.com/vim/vim.git synced 2025-11-15 23:14:06 -05:00

patch 8.1.0120: buffer 'modified' set even when :sort has no changes

Problem:    Buffer 'modified' set even when :sort has no changes.
Solution:   Only set 'modified' when lines are moved. (Jason Franklin)
This commit is contained in:
Bram Moolenaar
2018-06-28 11:28:08 +02:00
parent ec12d64909
commit dc9e955fb0
3 changed files with 63 additions and 12 deletions

View File

@@ -1,13 +1,13 @@
" Test sort()
" Tests for the "sort()" function and for the ":sort" command.
:func Compare1(a, b) abort
func Compare1(a, b) abort
call sort(range(3), 'Compare2')
return a:a - a:b
:endfunc
endfunc
:func Compare2(a, b) abort
func Compare2(a, b) abort
return a:a - a:b
:endfunc
endfunc
func Test_sort_strings()
" numbers compared as strings
@@ -45,7 +45,7 @@ func Test_sort_default()
call assert_fails('call sort([3.3, 1, "2"], 3)', "E474")
endfunc
" Tests for the :sort command
" Tests for the ":sort" command.
func Test_sort_cmd()
let tests = [
\ {
@@ -1167,15 +1167,54 @@ func Test_sort_cmd()
\ '1.234',
\ '123.456'
\ ]
\ }
\ },
\ {
\ 'name' : 'alphabetical, sorted input',
\ 'cmd' : 'sort',
\ 'input' : [
\ 'a',
\ 'b',
\ 'c',
\ ],
\ 'expected' : [
\ 'a',
\ 'b',
\ 'c',
\ ]
\ },
\ {
\ 'name' : 'alphabetical, sorted input, unique at end',
\ 'cmd' : 'sort u',
\ 'input' : [
\ 'aa',
\ 'bb',
\ 'cc',
\ 'cc',
\ ],
\ 'expected' : [
\ 'aa',
\ 'bb',
\ 'cc',
\ ]
\ },
\ ]
for t in tests
enew!
call append(0, t.input)
$delete _
exe t.cmd
setlocal nomodified
execute t.cmd
call assert_equal(t.expected, getline(1, '$'), t.name)
" Previously, the ":sort" command would set 'modified' even if the buffer
" contents did not change. Here, we check that this problem is fixed.
if t.input == t.expected
call assert_false(&modified, t.name . ': &mod is not correct')
else
call assert_true(&modified, t.name . ': &mod is not correct')
endif
endfor
call assert_fails('sort no', 'E474')