Tests for 'undolevel' and 'lispwords' settings being global-local

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo ul=5
:fu! FillBuffer()
  :for i in range(1,13)
    :put=i
    :exe "setg ul=" . &g:ul
  :endfor
:endfu
:fu! UndoLevel()
  :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |redir end
  :$put a
:endfu
:new one
:0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'
:call FillBuffer()
:call feedkeys(":earlier 10\n", 't')
:call UndoLevel()
:set ff=unix
:%w! test.out
:new two
:0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)'
:setlocal ul=2
:call FillBuffer()
:call feedkeys(":earlier 10\n", 't')
:call UndoLevel()
:setlocal ul=10
:call UndoLevel()
:set ff=unix
:%w >> test.out
:wincmd p
:redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end
:new three
:setglobal ul=50
:1put ='global value should be changed to 50'
:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)'
:call UndoLevel()
:set ff=unix
:%w >> test.out
:"sleep 10
:"
:" Testing 'lispwords'
:"
:setglobal lispwords=foo,bar,baz
:setlocal lispwords-=foo | setlocal lispwords+=quux
:redir >> test.out | echon "\nTesting 'lispwords' local value" | setglobal lispwords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:setlocal lispwords<
:redir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lispwords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:qa!
ENDTEST

