2016-04-23 16:53:11 -07:00
|
|
|
local helpers = require('test.functional.helpers')(after_each)
|
2015-12-17 01:55:34 -07:00
|
|
|
local source, clear = helpers.source, helpers.clear
|
|
|
|
local eq, nvim = helpers.eq, helpers.meths
|
|
|
|
|
|
|
|
describe('undolevel', function()
|
|
|
|
setup(clear)
|
|
|
|
|
|
|
|
it('is working', function()
|
|
|
|
source([[
|
|
|
|
func FillBuffer()
|
|
|
|
for i in range(1,13)
|
|
|
|
put=i
|
2016-09-21 03:15:37 -07:00
|
|
|
" Set 'undolevels' to split undo.
|
2015-12-17 01:55:34 -07:00
|
|
|
exe "setg ul=" . &g:ul
|
|
|
|
endfor
|
|
|
|
endfunc
|
|
|
|
|
|
|
|
func Test_global_local_undolevels()
|
|
|
|
new one
|
|
|
|
set undolevels=5
|
|
|
|
call FillBuffer()
|
|
|
|
" will only undo the last 5 changes, end up with 13 - (5 + 1) = 7 lines
|
|
|
|
earlier 10
|
|
|
|
call assert_equal(5, &g:undolevels)
|
|
|
|
call assert_equal(-123456, &l:undolevels)
|
|
|
|
call assert_equal('7', getline('$'))
|
|
|
|
|
|
|
|
new two
|
|
|
|
setlocal undolevels=2
|
|
|
|
call FillBuffer()
|
|
|
|
" will only undo the last 2 changes, end up with 13 - (2 + 1) = 10 lines
|
|
|
|
earlier 10
|
|
|
|
call assert_equal(5, &g:undolevels)
|
|
|
|
call assert_equal(2, &l:undolevels)
|
|
|
|
call assert_equal('10', getline('$'))
|
|
|
|
|
|
|
|
setlocal ul=10
|
|
|
|
call assert_equal(5, &g:undolevels)
|
|
|
|
call assert_equal(10, &l:undolevels)
|
|
|
|
|
|
|
|
" Setting local value in "two" must not change local value in "one"
|
|
|
|
wincmd p
|
|
|
|
call assert_equal(5, &g:undolevels)
|
|
|
|
call assert_equal(-123456, &l:undolevels)
|
|
|
|
|
|
|
|
new three
|
|
|
|
setglobal ul=50
|
|
|
|
call assert_equal(50, &g:undolevels)
|
|
|
|
call assert_equal(-123456, &l:undolevels)
|
|
|
|
|
2016-09-21 03:15:37 -07:00
|
|
|
" Drop created windows
|
|
|
|
set ul&
|
|
|
|
new
|
|
|
|
only!
|
2015-12-17 01:55:34 -07:00
|
|
|
endfunc
|
|
|
|
|
|
|
|
call Test_global_local_undolevels()
|
|
|
|
]])
|
|
|
|
|
|
|
|
eq({}, nvim.get_vvar('errors'))
|
|
|
|
end)
|
|
|
|
end)
|