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 [email protected].
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