Hi Bram! On Mi, 06 Nov 2013, Bram Moolenaar wrote:
> > Christian Brabandt wrote: > > > On Wed, November 6, 2013 05:26, Bram Moolenaar wrote: > > > > > > Patch 7.4.073 > > > Problem: Setting undolevels for one buffer changes undo in another. > > > Solution: Make 'undolevels' a global-local option. (Christian Brabandt) > > > Files: runtime/doc/options.txt, src/buffer.c, src/option.c, > > > src/option.h > > > src/structs.h, src/undo.c > > > > > > > Now this time, I was too slow, with adding some tests to that patch ;( > > > > But this is mainly, because I discovered a problem with the undo tree, > > that I haven't completly debugged yet. > > Yes, tests were missing. I also fixed a few problems relative to your > patch (which was old). Here is the missing test. Best, Christian -- Betrachte alles von der guten Seite. -- Thomas Jefferson -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -34,7 +34,7 @@ test81.out test82.out test83.out test84.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ test94.out test95.out test96.out test97.out test98.out \ - test99.out + test99.out test_ul_setting.out .SUFFIXES: .in .out diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -32,7 +32,8 @@ test79.out test80.out test81.out test82.out test83.out \ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out test96.out test98.out test99.out + test94.out test95.out test96.out test98.out test99.out \ + test_ul_setting.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -52,7 +52,8 @@ test79.out test80.out test81.out test82.out test83.out \ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out test96.out test98.out test99.out + test94.out test95.out test96.out test98.out test99.out \ + test_ul_setting.out SCRIPTS32 = test50.out test70.out diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -34,7 +34,8 @@ test76.out test77.out test78.out test79.out test80.out \ test81.out test82.out test83.out test84.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ - test94.out test95.out test96.out test98.out test99.out + test94.out test95.out test96.out test98.out test99.out \ + test_ul_setting .SUFFIXES: .in .out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -78,7 +78,8 @@ test77.out test78.out test79.out test80.out test81.out \ test82.out test83.out test84.out test88.out test89.out \ test90.out test91.out test92.out test93.out test94.out \ - test95.out test96.out test97.out test98.out test99.out + test95.out test96.out test97.out test98.out test99.out \ + test_ul_setting.out # Known problems: # Test 30: a problem around mac format - unknown reason diff --git a/src/testdir/Makefile b/src/testdir/Makefile --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -30,7 +30,7 @@ test84.out test85.out test86.out test87.out test88.out \ test89.out test90.out test91.out test92.out test93.out \ test94.out test95.out test96.out test97.out test98.out \ - test99.out + test99.out test_ul_setting.out SCRIPTS_GUI = test16.out diff --git a/src/testdir/test_ul_setting.in b/src/testdir/test_ul_setting.in new file mode 100644 --- /dev/null +++ b/src/testdir/test_ul_setting.in @@ -0,0 +1,54 @@ +Tests for 'undolevel' setting being global-local + +STARTTEST +:set nocompatible viminfo+=nviminfo ul=5 +:if !has("eval") || !has("windows") + :so tiny.vim + :q +:endif +:fu! FillBuffer() + :exe ":norm! o1\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o2\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o3\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o4\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o5\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o6\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o7\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o8\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o9\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o10\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o11\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o12\<esc>:setg ul=".&g:ul."\<cr>" + :exe ":norm! o13\<esc>:setg ul=".&g:ul."\<cr>" +: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() +:%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() +:%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() +:%w >> test.out +:"sleep 10 +:qa! +ENDTEST + diff --git a/src/testdir/test_ul_setting.ok b/src/testdir/test_ul_setting.ok new file mode 100644 --- /dev/null +++ b/src/testdir/test_ul_setting.ok @@ -0,0 +1,41 @@ +ONE: expecting global undolevels: 5, local undolevels: -123456 (default) +1 +2 +3 +4 +5 +6 +7 + + + undolevels=5 global + undolevels=-123456 local +TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards) +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 + + + undolevels=5 global + undolevels=2 local + + undolevels=5 global + undolevels=10 local + +global value shouldn't be changed and still be 5! +ONE: expecting global undolevels: 5, local undolevels: -123456 (default) + undolevels=5 global + undolevels=-123456 local + +global value should be changed to 50 +THREE: expecting global undolevels: 50, local undolevels: -123456 (default) + + undolevels=50 global + undolevels=-123456 local