aboutsummaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorEliseo Martínez <eliseomarmol@gmail.com>2014-05-12 02:25:17 +0200
committerEliseo Martínez <eliseomarmol@gmail.com>2014-05-15 20:46:01 +0200
commitda51dc9cf202772f60bd2da975dbef257bd9237c (patch)
tree5c16b93238a153f55634e9323077f30c8133970c /src/testdir
parentffe61e5ba1721340ca51d56bae3ddaca415fb5bc (diff)
downloadrneovim-da51dc9cf202772f60bd2da975dbef257bd9237c.tar.gz
rneovim-da51dc9cf202772f60bd2da975dbef257bd9237c.tar.bz2
rneovim-da51dc9cf202772f60bd2da975dbef257bd9237c.zip
Introduce nvim namespace: Move files.
Move files from src/ to src/nvim/. - src/nvim/ becomes the new root dir for nvim executable sources. - src/libnvim/ is planned to become root dir of the neovim library.
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/Makefile156
-rw-r--r--src/testdir/dotest.in3
-rw-r--r--src/testdir/sautest/autoload/Test104.vim1
-rw-r--r--src/testdir/sautest/autoload/footest.vim5
-rw-r--r--src/testdir/test1.in57
-rw-r--r--src/testdir/test1.ok1
-rw-r--r--src/testdir/test10.in114
-rw-r--r--src/testdir/test10.ok23
-rw-r--r--src/testdir/test100.in42
-rw-r--r--src/testdir/test100.ok41
-rw-r--r--src/testdir/test101.in45
-rw-r--r--src/testdir/test101.ok11
-rw-r--r--src/testdir/test102.in12
-rw-r--r--src/testdir/test102.ok3
-rw-r--r--src/testdir/test103.in37
-rw-r--r--src/testdir/test103.ok2
-rw-r--r--src/testdir/test104.in30
-rw-r--r--src/testdir/test104.ok13
-rw-r--r--src/testdir/test105.in45
-rw-r--r--src/testdir/test105.ok29
-rw-r--r--src/testdir/test106.in16
-rw-r--r--src/testdir/test106.ok4
-rw-r--r--src/testdir/test10a.in73
-rw-r--r--src/testdir/test10a.ok23
-rw-r--r--src/testdir/test11.in84
-rw-r--r--src/testdir/test11.ok61
-rw-r--r--src/testdir/test12.in52
-rw-r--r--src/testdir/test12.ok10
-rw-r--r--src/testdir/test13.in58
-rw-r--r--src/testdir/test13.ok30
-rw-r--r--src/testdir/test14.in99
-rw-r--r--src/testdir/test14.ok26
-rw-r--r--src/testdir/test15.in136
-rw-r--r--src/testdir/test15.ok111
-rw-r--r--src/testdir/test16.in15
-rw-r--r--src/testdir/test16.ok2
-rw-r--r--src/testdir/test17.in141
-rw-r--r--src/testdir/test17.ok33
-rw-r--r--src/testdir/test17a.in3
-rw-r--r--src/testdir/test18.in16
-rw-r--r--src/testdir/test18.ok4
-rw-r--r--src/testdir/test19.in33
-rw-r--r--src/testdir/test19.ok10
-rw-r--r--src/testdir/test2.in29
-rw-r--r--src/testdir/test2.ok4
-rw-r--r--src/testdir/test20.in28
-rw-r--r--src/testdir/test20.ok10
-rw-r--r--src/testdir/test21.in19
-rw-r--r--src/testdir/test21.ok2
-rw-r--r--src/testdir/test22.in13
-rw-r--r--src/testdir/test22.ok4
-rw-r--r--src/testdir/test23.in15
-rw-r--r--src/testdir/test23.ok2
-rw-r--r--src/testdir/test24.inbin1301 -> 0 bytes
-rw-r--r--src/testdir/test24.ok32
-rw-r--r--src/testdir/test25.in31
-rw-r--r--src/testdir/test25.ok1
-rw-r--r--src/testdir/test26.in44
-rw-r--r--src/testdir/test26.ok10
-rw-r--r--src/testdir/test27.in20
-rw-r--r--src/testdir/test27.ok2
-rw-r--r--src/testdir/test28.inbin364 -> 0 bytes
-rw-r--r--src/testdir/test28.ok2
-rw-r--r--src/testdir/test29.in230
-rw-r--r--src/testdir/test29.ok97
-rw-r--r--src/testdir/test3.in2056
-rw-r--r--src/testdir/test3.ok1820
-rw-r--r--src/testdir/test30.in222
-rw-r--r--src/testdir/test30.ok121
-rw-r--r--src/testdir/test31.in75
-rw-r--r--src/testdir/test31.ok12
-rw-r--r--src/testdir/test32.in60
-rw-r--r--src/testdir/test32.ok15
-rw-r--r--src/testdir/test33.in34
-rw-r--r--src/testdir/test33.ok23
-rw-r--r--src/testdir/test34.in87
-rw-r--r--src/testdir/test34.ok10
-rw-r--r--src/testdir/test35.in21
-rw-r--r--src/testdir/test35.ok4
-rw-r--r--src/testdir/test36.in105
-rw-r--r--src/testdir/test36.ok96
-rw-r--r--src/testdir/test37.in116
-rw-r--r--src/testdir/test37.ok33
-rw-r--r--src/testdir/test38.in35
-rw-r--r--src/testdir/test38.ok13
-rw-r--r--src/testdir/test39.in93
-rw-r--r--src/testdir/test39.okbin481 -> 0 bytes
-rw-r--r--src/testdir/test4.in31
-rw-r--r--src/testdir/test4.ok17
-rw-r--r--src/testdir/test40.in63
-rw-r--r--src/testdir/test40.ok11
-rw-r--r--src/testdir/test41.in24
-rw-r--r--src/testdir/test41.ok3
-rw-r--r--src/testdir/test42.inbin2368 -> 0 bytes
-rw-r--r--src/testdir/test42.okbin409 -> 0 bytes
-rw-r--r--src/testdir/test43.in34
-rw-r--r--src/testdir/test43.ok11
-rw-r--r--src/testdir/test44.in68
-rw-r--r--src/testdir/test44.ok24
-rw-r--r--src/testdir/test45.in80
-rw-r--r--src/testdir/test45.ok18
-rw-r--r--src/testdir/test46.in27
-rw-r--r--src/testdir/test46.ok13
-rw-r--r--src/testdir/test47.in62
-rw-r--r--src/testdir/test47.ok4
-rw-r--r--src/testdir/test48.in78
-rw-r--r--src/testdir/test48.ok22
-rw-r--r--src/testdir/test49.in30
-rw-r--r--src/testdir/test49.ok99
-rw-r--r--src/testdir/test49.vim9852
-rw-r--r--src/testdir/test5.in29
-rw-r--r--src/testdir/test5.ok9
-rw-r--r--src/testdir/test50.in90
-rw-r--r--src/testdir/test50.ok14
-rw-r--r--src/testdir/test51.in36
-rw-r--r--src/testdir/test51.ok20
-rw-r--r--src/testdir/test52.in65
-rw-r--r--src/testdir/test52.ok18
-rw-r--r--src/testdir/test53.in123
-rw-r--r--src/testdir/test53.ok64
-rw-r--r--src/testdir/test54.in22
-rw-r--r--src/testdir/test54.ok1
-rw-r--r--src/testdir/test55.in404
-rw-r--r--src/testdir/test55.ok128
-rw-r--r--src/testdir/test56.in21
-rw-r--r--src/testdir/test56.ok2
-rw-r--r--src/testdir/test57.in500
-rw-r--r--src/testdir/test57.ok459
-rw-r--r--src/testdir/test58.in639
-rw-r--r--src/testdir/test58.ok283
-rw-r--r--src/testdir/test59.in626
-rw-r--r--src/testdir/test59.ok270
-rw-r--r--src/testdir/test6.in24
-rw-r--r--src/testdir/test6.ok18
-rw-r--r--src/testdir/test60.in610
-rw-r--r--src/testdir/test60.ok211
-rw-r--r--src/testdir/test60.vim98
-rw-r--r--src/testdir/test61.in113
-rw-r--r--src/testdir/test61.ok49
-rw-r--r--src/testdir/test62.in191
-rw-r--r--src/testdir/test62.ok88
-rw-r--r--src/testdir/test63.in157
-rw-r--r--src/testdir/test63.ok11
-rw-r--r--src/testdir/test64.in633
-rw-r--r--src/testdir/test64.ok1084
-rw-r--r--src/testdir/test65.in95
-rw-r--r--src/testdir/test65.ok73
-rw-r--r--src/testdir/test66.in33
-rw-r--r--src/testdir/test66.ok16
-rw-r--r--src/testdir/test67.in33
-rw-r--r--src/testdir/test67.ok10
-rw-r--r--src/testdir/test68.in131
-rw-r--r--src/testdir/test68.ok77
-rw-r--r--src/testdir/test69.in185
-rw-r--r--src/testdir/test69.ok162
-rw-r--r--src/testdir/test7.in26
-rw-r--r--src/testdir/test7.ok12
-rw-r--r--src/testdir/test70.in63
-rw-r--r--src/testdir/test70.ok6
-rw-r--r--src/testdir/test71.in67
-rw-r--r--src/testdir/test71.ok10
-rw-r--r--src/testdir/test71a.in14
-rw-r--r--src/testdir/test72.in115
-rw-r--r--src/testdir/test72.ok27
-rw-r--r--src/testdir/test73.in176
-rw-r--r--src/testdir/test73.ok21
-rw-r--r--src/testdir/test74.in36
-rw-r--r--src/testdir/test74.ok5
-rw-r--r--src/testdir/test75.in41
-rw-r--r--src/testdir/test75.ok7
-rw-r--r--src/testdir/test76.in46
-rw-r--r--src/testdir/test76.ok4
-rw-r--r--src/testdir/test77.in30
-rw-r--r--src/testdir/test77.ok1
-rw-r--r--src/testdir/test78.in46
-rw-r--r--src/testdir/test78.ok3
-rw-r--r--src/testdir/test79.inbin3381 -> 0 bytes
-rw-r--r--src/testdir/test79.okbin574 -> 0 bytes
-rw-r--r--src/testdir/test8.in46
-rw-r--r--src/testdir/test8.ok7
-rw-r--r--src/testdir/test80.in201
-rw-r--r--src/testdir/test80.ok131
-rw-r--r--src/testdir/test81.in22
-rw-r--r--src/testdir/test81.ok6
-rw-r--r--src/testdir/test82.in103
-rw-r--r--src/testdir/test82.ok5
-rw-r--r--src/testdir/test83-tags22
-rw-r--r--src/testdir/test83-tags3102
-rw-r--r--src/testdir/test83.in76
-rw-r--r--src/testdir/test83.ok4
-rw-r--r--src/testdir/test84.in35
-rw-r--r--src/testdir/test84.ok3
-rw-r--r--src/testdir/test85.in85
-rw-r--r--src/testdir/test85.ok7
-rw-r--r--src/testdir/test86.in1429
-rw-r--r--src/testdir/test86.ok1266
-rw-r--r--src/testdir/test87.in1406
-rw-r--r--src/testdir/test87.ok1266
-rw-r--r--src/testdir/test88.in88
-rw-r--r--src/testdir/test88.ok24
-rw-r--r--src/testdir/test89.in71
-rw-r--r--src/testdir/test89.ok28
-rw-r--r--src/testdir/test9.in12
-rw-r--r--src/testdir/test9.ok2
-rw-r--r--src/testdir/test90.in53
-rw-r--r--src/testdir/test90.ok6
-rw-r--r--src/testdir/test91.in111
-rw-r--r--src/testdir/test91.ok48
-rw-r--r--src/testdir/test92.in48
-rw-r--r--src/testdir/test92.ok26
-rw-r--r--src/testdir/test93.in48
-rw-r--r--src/testdir/test93.ok26
-rw-r--r--src/testdir/test94.in95
-rw-r--r--src/testdir/test94.ok20
-rw-r--r--src/testdir/test95.in135
-rw-r--r--src/testdir/test95.ok122
-rw-r--r--src/testdir/test96.in142
-rw-r--r--src/testdir/test96.ok9
-rw-r--r--src/testdir/test97.in17
-rw-r--r--src/testdir/test97.ok5
-rw-r--r--src/testdir/test98.in43
-rw-r--r--src/testdir/test98.ok1
-rw-r--r--src/testdir/test99.in68
-rw-r--r--src/testdir/test99.ok24
-rw-r--r--src/testdir/test_eval.in57
-rw-r--r--src/testdir/test_eval.ok11
-rw-r--r--src/testdir/test_eval_func.vim12
-rw-r--r--src/testdir/unix.vim3
228 files changed, 0 insertions, 34165 deletions
diff --git a/src/testdir/Makefile b/src/testdir/Makefile
deleted file mode 100644
index f720d7a2b4..0000000000
--- a/src/testdir/Makefile
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# Makefile to run all tests for Vim
-#
-
-export SHELL := sh
-
-VIMPROG := ../../build/bin/nvim
-
-SCRIPTS := test_eval.out \
- test1.out test2.out test3.out test4.out test5.out \
- test6.out test7.out test8.out test9.out test10.out \
- test11.out test12.out test13.out test14.out test15.out \
- test17.out test18.out test19.out test20.out \
- test21.out test22.out test23.out test24.out test25.out \
- test26.out test27.out test28.out test29.out test30.out \
- test31.out test32.out test33.out test34.out test35.out \
- test36.out test37.out test38.out test39.out test40.out \
- test41.out test42.out test43.out test44.out test45.out \
- test46.out test47.out test48.out test49.out \
- test51.out test52.out test53.out test54.out test55.out \
- test56.out test57.out test58.out test59.out test60.out \
- test61.out test62.out test63.out test64.out test65.out \
- test66.out test67.out test68.out test69.out test70.out \
- test71.out test72.out test73.out test74.out test75.out \
- test76.out test77.out test78.out 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 test97.out test98.out test99.out test100.out \
- test101.out test102.out test103.out test104.out test105.out \
- test106.out
-
-SCRIPTS_GUI := test16.out
-
-
-ifdef VALGRIND_GDB
- VGDB := --vgdb=yes \
- --vgdb-error=0
-endif
-
-ifdef USE_VALGRIND
- VALGRIND_TOOL := --tool=memcheck \
- --leak-check=yes \
- --track-origins=yes
-# VALGRIND_TOOL := exp-sgcheck
- TOOL := valgrind -q \
- -q \
- $(VALGRIND_TOOL) \
- --suppressions=../../.valgrind.supp \
- --error-exitcode=123 \
- --log-file=valgrind.\%p.$* \
- $(VGDB) \
- --trace-children=yes
-else
- ifdef USE_GDB
- TOOL = gdb --args
- endif
-endif
-
-ifdef TESTNUM
- SCRIPTS := test$(TESTNUM).out
-endif
-
-nongui: nolog $(SCRIPTS) report
-
-gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report
-
-.gdbinit:
- echo 'set $$_exitcode = -1\nrun\nif $$_exitcode != -1\n quit\nend' > .gdbinit
-
-report:
- @echo
- @echo 'Test results:'
- @/bin/sh -c "if test -f test.log; then \
- cat test.log; \
- echo TEST FAILURE; \
- exit 1; \
- else \
- echo ALL DONE; \
- fi"
-
-$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG)
-
-RM_ON_RUN := test.out X* viminfo
-RM_ON_START := tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok
-RUN_VIM := $(TOOL) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in
-
-clean:
- -rm -rf *.out \
- *.failed \
- *.rej \
- *.orig \
- test.log \
- $(RM_ON_RUN) \
- $(RM_ON_START) \
- valgrind.* \
- .*.swp \
- .*.swo
-
-test1.out: .gdbinit test1.in
- -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize
- $(RUN_VIM) $*.in
- @/bin/sh -c "if test -e wrongtermsize; then \
- echo; \
- echo test1 FAILED - terminal size must be 80x24 or larger; \
- echo; exit 1; \
- elif diff test.out $*.ok; then \
- mv -f test.out $*.out; \
- else \
- echo; \
- echo test1 FAILED - Something basic is wrong; \
- echo; \
- exit 1; \
- fi"
- -rm -rf X* viminfo
-
-%.out: %.in .gdbinit
- -rm -rf $*.failed test.ok $(RM_ON_RUN)
- cp $*.ok test.ok
- # Sleep a moment to avoid that the xterm title is messed up.
- # 200 msec is sufficient, but only modern sleep supports a fraction of
- # a second, fall back to a second if it fails.
- @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1"
- $(RUN_VIM) $*.in
-
- # For flaky tests retry one time.
- @/bin/sh -c "if test -f test.out -a $* = test61; then \
- if diff test.out $*.ok; then \
- echo flaky test ok first time; \
- else rm -rf $*.failed $(RM_ON_RUN); \
- $(RUN_VIM) $*.in; \
- fi; \
- fi"
-
- # Check if the test.out file matches test.ok.
- @/bin/sh -c "if test -f test.out; then \
- if diff test.out $*.ok; then \
- mv -f test.out $*.out; \
- else \
- echo $* FAILED >> test.log; \
- mv -f test.out $*.failed; \
- fi; \
- else \
- echo $* NO OUTPUT >>test.log; \
- fi"
- @/bin/sh -c "if test -f valgrind; then \
- mv -f valgrind valgrind.$*; \
- fi"
- -rm -rf X* test.ok viminfo
-
-test49.out: test49.vim
-
-test60.out: test60.vim
-
-nolog:
- -rm -f test.log
diff --git a/src/testdir/dotest.in b/src/testdir/dotest.in
deleted file mode 100644
index b2a0e1a68e..0000000000
--- a/src/testdir/dotest.in
+++ /dev/null
@@ -1,3 +0,0 @@
-:set cp
-:map dotest /^STARTTEST j:set ff=unix cpo-=A :.,/ENDTEST/-1w! Xdotest :set ff& cpo+=A nj0:so! Xdotest dotest
-dotest
diff --git a/src/testdir/sautest/autoload/Test104.vim b/src/testdir/sautest/autoload/Test104.vim
deleted file mode 100644
index d1e0e17a3b..0000000000
--- a/src/testdir/sautest/autoload/Test104.vim
+++ /dev/null
@@ -1 +0,0 @@
-let Test104#numvar = 123
diff --git a/src/testdir/sautest/autoload/footest.vim b/src/testdir/sautest/autoload/footest.vim
deleted file mode 100644
index f467bc376d..0000000000
--- a/src/testdir/sautest/autoload/footest.vim
+++ /dev/null
@@ -1,5 +0,0 @@
-" Autoload script used by test55 and test60
-let footest#x = 1
-func footest#F()
- return 0
-endfunc
diff --git a/src/testdir/test1.in b/src/testdir/test1.in
deleted file mode 100644
index 735d539673..0000000000
--- a/src/testdir/test1.in
+++ /dev/null
@@ -1,57 +0,0 @@
-
-First a simple test to check if the test script works.
-
-If Vim was not compiled with the +eval feature, the small.vim script will be
-set to copy the test.ok file to test.out, so that it looks like the test
-succeeded. Otherwise an empty small.vim is written. small.vim is sourced by
-tests that require the +eval feature or other features that are missing in the
-small version.
-
-If Vim was not compiled with the +windows feature, the tiny.vim script will be
-set like small.vim above. tiny.vim is sourced by tests that require the
-+windows feature or other features that are missing in the tiny version.
-
-If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will
-be set like small.vim above. mbyte.vim is sourced by tests that require the
-+multi_byte feature.
-Similar logic is applied to the +mzscheme feature, using mzscheme.vim.
-Similar logic is applied to the +lua feature, using lua.vim.
-
-STARTTEST
-:" If columns or lines are too small, create wrongtermsize.
-:" (Some tests will fail. When columns and/or lines are small)
-:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif
-:"
-:" Write a single line to test.out to check if testing works at all.
-:%d
-athis is a test:w! test.out
-:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.
-0D:w! small.vim
-:w! tiny.vim
-ae! test.ok
-w! test.out
-qa!
-:w! mbyte.vim
-:w! mzscheme.vim
-:w! lua.vim
-:"
-:" If +multi_byte feature supported, make mbyte.vim empty.
-:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
-:"
-:" If +mzscheme feature supported, make mzscheme.vim empty.
-:if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
-:"
-:" If +lua feature supported, make lua.vim empty.
-:if has("lua") | sp another | w! lua.vim | q | endif
-:"
-:" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
-:" Otherwise write small.vim to skip the test.
-:if 1 | q! | endif
-:w! small.vim
-:" If +windows feature not supported :sp will fail and tiny.vim will be
-:" written to skip the test.
-:sp another
-:wq! tiny.vim
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test1.ok b/src/testdir/test1.ok
deleted file mode 100644
index 90bfcb5106..0000000000
--- a/src/testdir/test1.ok
+++ /dev/null
@@ -1 +0,0 @@
-this is a test
diff --git a/src/testdir/test10.in b/src/testdir/test10.in
deleted file mode 100644
index 2d0d546606..0000000000
--- a/src/testdir/test10.in
+++ /dev/null
@@ -1,114 +0,0 @@
-Test for 'errorformat'. This will fail if the quickfix feature was disabled.
-
-STARTTEST
-:so small.vim
-:" Also test a BOM is ignored.
-:so mbyte.vim
-:set encoding=utf-8
-:7/start of errorfile/,/end of errorfile/w! Xerrorfile1
-:7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2
-:/start of testfile/,/end of testfile/w! Xtestfile
-:set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m
-:set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m
-:cf Xerrorfile2
-:clast
-:copen
-:let a=w:quickfix_title
-:wincmd p
-lgR=a 
-:cf Xerrorfile1
-grA
-:cn
-gRLINE 6, COL 19
-:cn
-gRNO COLUMN SPECIFIED
-:cn
-gRAGAIN NO COLUMN
-:cn
-gRCOL 1
-:cn
-gRCOL 2
-:cn
-gRCOL 10
-:cn
-gRVCOL 10
-:cn
-grI
-:cn
-gR. SPACE POINTER
-:cn
-gR. DOT POINTER
-:cn
-gR. DASH POINTER
-:cn
-gR. TAB-SPACE POINTER
-:clast
-:cprev
-:cprev
-:wincmd w
-:let a=w:quickfix_title
-:wincmd p
-lgR=a 
-:w! test.out " Write contents of this file
-:qa!
-ENDTEST
-
-start of errorfile
-"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
-"Xtestfile", line 6 col 19; this is an error
-gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
-Xtestfile:9: parse error before `asd'
-make: *** [vim] Error 1
-in file "Xtestfile" linenr 10: there is an error
-
-2 returned
-"Xtestfile", line 11 col 1; this is an error
-"Xtestfile", line 12 col 2; this is another error
-"Xtestfile", line 14:10; this is an error in column 10
-=Xtestfile=, line 15:10; this is another error, but in vcol 10 this time
-"Xtestfile", linenr 16: yet another problem
-Error in "Xtestfile" at line 17:
-x should be a dot
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
- ^
-Error in "Xtestfile" at line 18:
-x should be a dot
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
-.............^
-Error in "Xtestfile" at line 19:
-x should be a dot
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
---------------^
-Error in "Xtestfile" at line 20:
-x should be a dot
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
- ^
-
-Does anyone know what is the problem and how to correction it?
-"Xtestfile", line 21 col 9: What is the title of the quickfix window?
-"Xtestfile", line 22 col 9: What is the title of the quickfix window?
-end of errorfile
-
-start of testfile
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22
-end of testfile
diff --git a/src/testdir/test10.ok b/src/testdir/test10.ok
deleted file mode 100644
index 76a02f40b4..0000000000
--- a/src/testdir/test10.ok
+++ /dev/null
@@ -1,23 +0,0 @@
-start of testfile
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3
- xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5
- xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8
- NO COLUMN SPECIFIEDxxxxxxxxxxx line 9
- AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10
-COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11
- COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13
- xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14
- xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15
- Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16
- xxxx. SPACE POINTERxxxxxxxxxxx line 17
- xxxxx. DOT POINTERxxxxxxxxxxxx line 18
- xxxxxx. DASH POINTERxxxxxxxxxx line 19
- xxxxxxx. TAB-SPACE POINTERxxxx line 20
- xxxxxxxx:cf Xerrorfile1xxxxxxx line 21
- xxxxxxxx:cf Xerrorfile2xxxxxxx line 22
-end of testfile
diff --git a/src/testdir/test100.in b/src/testdir/test100.in
deleted file mode 100644
index e42331946c..0000000000
--- a/src/testdir/test100.in
+++ /dev/null
@@ -1,42 +0,0 @@
-Tests for 'undolevel' setting 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()
-:%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/test100.ok b/src/testdir/test100.ok
deleted file mode 100644
index 95b318461c..0000000000
--- a/src/testdir/test100.ok
+++ /dev/null
@@ -1,41 +0,0 @@
-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
diff --git a/src/testdir/test101.in b/src/testdir/test101.in
deleted file mode 100644
index 04c934f2c5..0000000000
--- a/src/testdir/test101.in
+++ /dev/null
@@ -1,45 +0,0 @@
-Test for v:hlsearch vim: set ft=vim :
-
-STARTTEST
-:" Last abc: Q
-:so small.vim
-:new
-:call setline(1, repeat(['aaa'], 10))
-:set hlsearch nolazyredraw
-:let r=[]
-:command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])
-/aaa
-:AddR
-:nohlsearch
-:AddR
-:let v:hlsearch=1
-:AddR
-:let v:hlsearch=0
-:AddR
-:set hlsearch
-:AddR
-:let v:hlsearch=0
-:AddR
-n:AddR
-:let v:hlsearch=0
-:AddR
-/
-:AddR
-:let r1=r[0][0]
-:" I guess it is not guaranteed that screenattr outputs always the same character
-:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')
-:try
-: let v:hlsearch=[]
-:catch
-: call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
-:endtry
-:bwipeout!
-:$put=r
-:call garbagecollect(1)
-:"
-:/^start:/,$wq! test.out
-:" vim: et ts=4 isk-=\:
-:call getchar()
-ENDTEST
-
-start:
diff --git a/src/testdir/test101.ok b/src/testdir/test101.ok
deleted file mode 100644
index 3ed7436cf7..0000000000
--- a/src/testdir/test101.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-start:
-1:highlighted
-0:not highlighted
-1:highlighted
-0:not highlighted
-1:highlighted
-0:not highlighted
-1:highlighted
-0:not highlighted
-1:highlighted
-Vim(let):E706:
diff --git a/src/testdir/test102.in b/src/testdir/test102.in
deleted file mode 100644
index 35e9f6c2cf..0000000000
--- a/src/testdir/test102.in
+++ /dev/null
@@ -1,12 +0,0 @@
-Test if fnameescape is correct for special chars like !
-
-STARTTEST
-:%d
-:let fname = 'Xspa ce'
-:try | exe "w! " . fnameescape(fname) | put='Space' | endtry
-:let fname = 'Xemark!'
-:try | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry
-:w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test102.ok b/src/testdir/test102.ok
deleted file mode 100644
index a25fea192c..0000000000
--- a/src/testdir/test102.ok
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Space
-ExclamationMark
diff --git a/src/testdir/test103.in b/src/testdir/test103.in
deleted file mode 100644
index 7c7591e3b9..0000000000
--- a/src/testdir/test103.in
+++ /dev/null
@@ -1,37 +0,0 @@
-Test for visual mode not being reset causing E315 error.
-STARTTEST
-:so small.vim
-:enew
-:let g:msg="Everything's fine."
-:function! TriggerTheProblem()
-: " At this point there is no visual selection because :call reset it.
-: " Let's restore the selection:
-: normal gv
-: '<,'>del _
-: try
-: exe "normal \<Esc>"
-: catch /^Vim\%((\a\+)\)\=:E315/
-: echom 'Snap! E315 error!'
-: let g:msg='Snap! E315 error!'
-: endtry
-:endfunction
-:enew
-:setl buftype=nofile
-:call append(line('$'), 'Delete this line.')
-:"
-:"
-:" NOTE: this has to be done by a call to a function because executing :del the
-:" ex-way will require the colon operator which resets the visual mode thus
-:" preventing the problem:
-:"
-GV:call TriggerTheProblem()
-:%del _
-:call append(line('$'), g:msg)
-:w! test.out
-:brewind
-ENDTEST
-
-STARTTEST
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test103.ok b/src/testdir/test103.ok
deleted file mode 100644
index 9ea6dd6eea..0000000000
--- a/src/testdir/test103.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Everything's fine.
diff --git a/src/testdir/test104.in b/src/testdir/test104.in
deleted file mode 100644
index fd847131e9..0000000000
--- a/src/testdir/test104.in
+++ /dev/null
@@ -1,30 +0,0 @@
-Tests for :let. vim: set ft=vim ts=8 :
-
-STARTTEST
-:so small.vim
-:set runtimepath+=./sautest
-:" Test to not autoload when assigning. It causes internal error.
-:try
-: let Test104#numvar = function('tr')
-: $put ='OK: ' . string(Test104#numvar)
-:catch
-: $put ='FAIL: ' . v:exception
-:endtry
-:let a = 1
-:let b = 2
-:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0 == 1 ? "a" : "b"}']
-: try
-: redir => messages
-: execute 'let' letargs
-: redir END
-: $put ='OK:'
-: $put =split(substitute(messages, '\n', '\0 ', 'g'), '\n')
-: catch
-: $put ='FAIL: ' . v:exception
-: redir END
-: endtry
-:endfor
-:/^Results/,$wq! test.out
-ENDTEST
-
-Results of test104:
diff --git a/src/testdir/test104.ok b/src/testdir/test104.ok
deleted file mode 100644
index 5fb20945c3..0000000000
--- a/src/testdir/test104.ok
+++ /dev/null
@@ -1,13 +0,0 @@
-Results of test104:
-OK: function('tr')
-OK:
- a #1
- b #2
-OK:
- b #2
-OK:
- b #2
- a #1
-OK:
- a #1
- b #2
diff --git a/src/testdir/test105.in b/src/testdir/test105.in
deleted file mode 100644
index 284f3bf4eb..0000000000
--- a/src/testdir/test105.in
+++ /dev/null
@@ -1,45 +0,0 @@
-Test filename modifiers vim: set ft=vim :
-
-STARTTEST
-:source small.vim
-:%delete _
-:set shell=sh
-:set shellslash
-:let tab="\t"
-:command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(expr)))
-:let $HOME=fnamemodify('.', ':p:h:h:h')
-:Put fnamemodify('.', ':p' )[-1:]
-:Put fnamemodify('.', ':p:h' )[-1:]
-:Put fnamemodify('test.out', ':p' )[-1:]
-:Put fnamemodify('test.out', ':.' )
-:Put fnamemodify('../testdir/a', ':.' )
-:Put fnamemodify('test.out', ':~' )
-:Put fnamemodify('../testdir/a', ':~' )
-:Put fnamemodify('../testdir/a', ':t' )
-:Put fnamemodify('.', ':p:t' )
-:Put fnamemodify('test.out', ':p:t' )
-:Put fnamemodify('test.out', ':p:e' )
-:Put fnamemodify('test.out', ':p:t:e' )
-:Put fnamemodify('abc.fb2.tar.gz', ':r' )
-:Put fnamemodify('abc.fb2.tar.gz', ':r:r' )
-:Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' )
-:Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '')
-:Put fnamemodify('abc.fb2.tar.gz', ':e' )
-:Put fnamemodify('abc.fb2.tar.gz', ':e:e' )
-:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' )
-:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e')
-:Put fnamemodify('abc.fb2.tar.gz', ':e:e:r' )
-:Put fnamemodify('abc def', ':S' )
-:Put fnamemodify('abc" "def', ':S' )
-:Put fnamemodify('abc"%"def', ':S' )
-:Put fnamemodify('abc'' ''def', ':S' )
-:Put fnamemodify('abc''%''def', ':S' )
-:Put fnamemodify("abc\ndef", ':S' )
-:set shell=tcsh
-:Put fnamemodify("abc\ndef", ':S' )
-:$put ='vim: ts=8'
-:1 delete _
-:w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test105.ok b/src/testdir/test105.ok
deleted file mode 100644
index 0681597c05..0000000000
--- a/src/testdir/test105.ok
+++ /dev/null
@@ -1,29 +0,0 @@
-fnamemodify('.', ':p' )[-1:] '/'
-fnamemodify('.', ':p:h' )[-1:] 'r'
-fnamemodify('test.out', ':p' )[-1:] 't'
-fnamemodify('test.out', ':.' ) 'test.out'
-fnamemodify('../testdir/a', ':.' ) 'a'
-fnamemodify('test.out', ':~' ) '~/src/testdir/test.out'
-fnamemodify('../testdir/a', ':~' ) '~/src/testdir/a'
-fnamemodify('../testdir/a', ':t' ) 'a'
-fnamemodify('.', ':p:t' ) ''
-fnamemodify('test.out', ':p:t' ) 'test.out'
-fnamemodify('test.out', ':p:e' ) 'out'
-fnamemodify('test.out', ':p:t:e' ) 'out'
-fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar'
-fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2'
-fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc'
-substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') 'src/testdir/abc.fb2'
-fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz'
-fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz'
-fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz'
-fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') 'fb2.tar.gz'
-fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) 'tar'
-fnamemodify('abc def', ':S' ) '''abc def'''
-fnamemodify('abc" "def', ':S' ) '''abc" "def'''
-fnamemodify('abc"%"def', ':S' ) '''abc"%"def'''
-fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def'''
-fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def'''
-fnamemodify("abc\ndef", ':S' ) '''abc^@def'''
-fnamemodify("abc\ndef", ':S' ) '''abc\^@def'''
-vim: ts=8
diff --git a/src/testdir/test106.in b/src/testdir/test106.in
deleted file mode 100644
index eb99e650ae..0000000000
--- a/src/testdir/test106.in
+++ /dev/null
@@ -1,16 +0,0 @@
-Tests for errorformat. vim: set ft=vim ts=8 :
-
-STARTTEST
-:so small.vim
-:if !has('quickfix') | e! test.ok | wq! test.out | endif
-:set efm=%EEEE%m,%WWWW%m,%+CCCC%.%#,%-GGGG%.%#
-:cgetexpr ['WWWW', 'EEEE', 'CCCC']
-:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
-:cgetexpr ['WWWW', 'GGGG', 'EEEE', 'CCCC']
-:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
-:cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY']
-:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
-:/^Results/,$wq! test.out
-ENDTEST
-
-Results of test106:
diff --git a/src/testdir/test106.ok b/src/testdir/test106.ok
deleted file mode 100644
index 0a18cecf1c..0000000000
--- a/src/testdir/test106.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-Results of test106:
-[['W', 1], ['E^@CCCC', 1]]
-[['W', 1], ['E^@CCCC', 1]]
-[['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]]
diff --git a/src/testdir/test10a.in b/src/testdir/test10a.in
deleted file mode 100644
index 19e8652fe5..0000000000
--- a/src/testdir/test10a.in
+++ /dev/null
@@ -1,73 +0,0 @@
-Test for 'errorformat'.
-
-STARTTEST
-:so small.vim
-:/start of errorfile/,/end of errorfile/w! Xerrorfile
-:/start of testfile/,/end of testfile/w! Xtestfile
-:cf Xerrorfile
-rA
-:cn
-rB
-:cn
-rC
-:cn
-rD
-:cn
-rE
-:w! test.out " Write contents of this file
-:qa!
-ENDTEST
-
-start of errorfile
-
- printf(" %d \n", (number/other)%10 );
-..................^
-%CC-E-NOSEMI, Missing ";".
-at line number 4 in file SYS$DISK:XTESTFILE
-
- other=10000000;
-.............^
-%CC-E-UNDECLARED, In this statement, "oszt" is not declared.
-at line number 7 in file SYS$DISK:XTESTFILE
-
- for (i = 0; i<7 ; i++ ){
-..................^
-%CC-E-UNDECLARED, In this statement, "i" is not declared.
-at line number 16 in file SYS$DISK:XTESTFILE
-
-some other error somewhere here.
-...........................^
-%CC-W-WARRING, Sorry, but no expalnation for such an warring.
-at line number 19 in file SYS$DISK:XTESTFILE
-
-and finally some other error exactly here.
-.....................................^
-%CC-I-INFORMATIONAL, It should be some informational message.
-at line number 20 in file SYS$DISK:XTESTFILE
-
-Does anyone know what is the problem and how to correct ?? :)
-end of errorfile
-
-start of testfile
-01234567890123456789012345678901234567
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-end of testfile
diff --git a/src/testdir/test10a.ok b/src/testdir/test10a.ok
deleted file mode 100644
index 10e78c9239..0000000000
--- a/src/testdir/test10a.ok
+++ /dev/null
@@ -1,23 +0,0 @@
-start of testfile
-01234567890123456789012345678901234567
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 4 xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx
-line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 7 xxxxxBxxxxxxxxxxxxxxxxxxxxxxxx
-line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 16 xxxxxxxxxxCxxxxxxxxxxxxxxxxxxx
-line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 19 xxxxxxxxxxxxxxxxxxxDxxxxxxxxxx
-line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxE
-line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-end of testfile
diff --git a/src/testdir/test11.in b/src/testdir/test11.in
deleted file mode 100644
index 47de470a2d..0000000000
--- a/src/testdir/test11.in
+++ /dev/null
@@ -1,84 +0,0 @@
-Tests for autocommands:
-- FileWritePre writing a compressed file
-- FileReadPost reading a compressed file
-- BufNewFile reading a file template
-- BufReadPre decompressing the file to be read
-- FilterReadPre substituting characters in the temp file
-- FilterReadPost substituting characters after filtering
-- FileReadPre set options for decompression
-- FileReadPost decompress the file
-
-Note: This test is skipped if "gzip" is not available.
-$GZIP is made empty, "-v" would cause trouble.
-Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
-modified outside of Vim (noticed on Solaris).
-
-STARTTEST
-:so small.vim
-:" drop out when there is no gzip program
-:if !executable("gzip")
-: e! test.ok
-: w! test.out
-: qa!
-:endif
-:let $GZIP = ""
-:au FileChangedShell * echo "caught FileChangedShell"
-:set bin
-:au FileWritePre *.gz '[,']!gzip
-:au FileWritePost *.gz undo
-:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
-:au FileReadPost *.gz '[,']!gzip -d
-:$r Xtestfile.gz " Read and decompress the testfile
-:?startstart?,$w! test.out " Write contents of this file
-:au BufNewFile *.c read Xtest.c
-:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c
-:e! foo.c " Will load Xtest.c
-:au FileAppendPre *.out '[,']s/new/NEW/
-:au FileAppendPost *.out !cat Xtest.c >>test.out
-:w>>test.out " Append it to the output file
-:au! FileAppendPre
-:" setup autocommands to decompress before reading and re-compress afterwards
-:au BufReadPre *.gz exe '!gzip -d ' . shellescape(expand("<afile>"))
-:au BufReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>"))
-:au BufReadPost *.gz call rename(expand("<afile>"), expand("<afile>:r"))
-:au BufReadPost *.gz exe '!gzip ' . shellescape(expand("<afile>:r"))
-:e! Xtestfile.gz " Edit compressed file
-:w>>test.out " Append it to the output file
-:set shelltemp " need temp files here
-:au FilterReadPre *.out call rename(expand("<afile>"), expand("<afile>") . ".t")
-:au FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>"))
-:au FilterReadPre *.out exe '!rm ' . shellescape(expand("<afile>")) . '.t'
-:au FilterReadPost *.out '[,']s/x/X/g
-:e! test.out " Edit the output file
-:23,$!cat
-:23,$s/\r$// " remove CR for when sed adds them
-:au! FileReadPre *.gz exe '!gzip -d ' . shellescape(expand("<afile>"))
-:au FileReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>"))
-:au! FileReadPost *.gz '[,']s/l/L/
-:$r Xtestfile.gz " Read compressed file
-:w " write it, after filtering
-:au! " remove all autocommands
-:e " Edit test.out again
-:set nobin ff& " use the default fileformat for writing
-:w
-:qa!
-ENDTEST
-
-startstart
-start of testfile
-line 2 Abcdefghijklmnopqrstuvwxyz
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 4 Abcdefghijklmnopqrstuvwxyz
-line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 6 Abcdefghijklmnopqrstuvwxyz
-line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 8 Abcdefghijklmnopqrstuvwxyz
-line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 10 Abcdefghijklmnopqrstuvwxyz
-end of testfile
-
-start of test.c
-/*
- * Here is a new .c file
- */
-end of test.c
diff --git a/src/testdir/test11.ok b/src/testdir/test11.ok
deleted file mode 100644
index af8c5ce261..0000000000
--- a/src/testdir/test11.ok
+++ /dev/null
@@ -1,61 +0,0 @@
-startstart
-start of testfile
-line 2 Abcdefghijklmnopqrstuvwxyz
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 4 Abcdefghijklmnopqrstuvwxyz
-line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 6 Abcdefghijklmnopqrstuvwxyz
-line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 8 Abcdefghijklmnopqrstuvwxyz
-line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 10 Abcdefghijklmnopqrstuvwxyz
-end of testfile
-
-start of test.c
-/*
- * Here is a new .c file
- */
-end of test.c
-start of testfile
-line 2 Abcdefghijklmnopqrstuvwxyz
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-line 4 Abcdefghijklmnopqrstuvwxyz
-linE 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 6 AbcdefghijklmnopqrstuvwXyz
-linE 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 8 AbcdefghijklmnopqrstuvwXyz
-linE 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 10 AbcdefghijklmnopqrstuvwXyz
-End of testfile
-
-/*
- * HEre is a NEW .c file
- */
-/*
- * HEre is a new .c file
- */
-start of tEstfile
-linE 2 AbcdefghijklmnopqrstuvwXyz
-linE 3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 4 AbcdefghijklmnopqrstuvwXyz
-linE 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 6 AbcdefghijklmnopqrstuvwXyz
-linE 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 8 AbcdefghijklmnopqrstuvwXyz
-linE 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-linE 10 AbcdefghijklmnopqrstuvwXyz
-End of testfile
-/*
- * HEre is a new .c file
- */
-start of testfiLe
-Line 2 Abcdefghijklmnopqrstuvwxyz
-Line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-Line 4 Abcdefghijklmnopqrstuvwxyz
-Line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-Line 6 Abcdefghijklmnopqrstuvwxyz
-Line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-Line 8 Abcdefghijklmnopqrstuvwxyz
-Line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-Line 10 Abcdefghijklmnopqrstuvwxyz
-end of testfiLe
diff --git a/src/testdir/test12.in b/src/testdir/test12.in
deleted file mode 100644
index 46e9c45b80..0000000000
--- a/src/testdir/test12.in
+++ /dev/null
@@ -1,52 +0,0 @@
-Tests for 'directory' option.
-- ".", in same dir as file
-- "./dir", in directory relative to file
-- "dir", in directory relative to current dir
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo
-:set dir=.,~
-:/start of testfile/,/end of testfile/w! Xtest1
-:" do an ls of the current dir to find the swap file (should not be there)
-:if has("unix")
-: !ls .X*.swp >test.out
-:else
-: r !ls X*.swp >test.out
-:endif
-:!echo first line >>test.out
-:e Xtest1
-:if has("unix")
-:" Do an ls of the current dir to find the swap file, remove the leading dot
-:" to make the result the same for all systems.
-: r!ls .X*.swp
-: s/\.*X/X/
-: .w >>test.out
-: undo
-:else
-: !ls X*.swp >>test.out
-:endif
-:!echo under Xtest1.swp >>test.out
-:!mkdir Xtest2
-:set dir=./Xtest2,.,~
-:e Xtest1
-:!ls X*.swp >>test.out
-:!echo under under >>test.out
-:!ls Xtest2 >>test.out
-:!echo under Xtest1.swp >>test.out
-:!mkdir Xtest.je
-:/start of testfile/,/end of testfile/w! Xtest2/Xtest3
-:set dir=Xtest.je,~
-:e Xtest2/Xtest3
-:swap
-:!ls Xtest2 >>test.out
-:!echo under Xtest3 >>test.out
-:!ls Xtest.je >>test.out
-:!echo under Xtest3.swp >>test.out
-:qa!
-ENDTEST
-
-start of testfile
-line 2 Abcdefghij
-line 3 Abcdefghij
-end of testfile
diff --git a/src/testdir/test12.ok b/src/testdir/test12.ok
deleted file mode 100644
index 605623b117..0000000000
--- a/src/testdir/test12.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-first line
-Xtest1.swp
-under Xtest1.swp
-under under
-Xtest1.swp
-under Xtest1.swp
-Xtest3
-under Xtest3
-Xtest3.swp
-under Xtest3.swp
diff --git a/src/testdir/test13.in b/src/testdir/test13.in
deleted file mode 100644
index cb8a6fff89..0000000000
--- a/src/testdir/test13.in
+++ /dev/null
@@ -1,58 +0,0 @@
-Tests for autocommands on :close command
-
-Write three files and open them, each in a window.
-Then go to next window, with autocommand that deletes the previous one.
-Do this twice, writing the file.
-
-Also test deleting the buffer on a Unload event. If this goes wrong there
-will be the ATTENTION prompt.
-
-Also test changing buffers in a BufDel autocommand. If this goes wrong there
-are ml_line errors and/or a Crash.
-
-STARTTEST
-:so small.vim
-:/^start of testfile/,/^end of testfile/w! Xtestje1
-:/^start of testfile/,/^end of testfile/w! Xtestje2
-:/^start of testfile/,/^end of testfile/w! Xtestje3
-:e Xtestje1
-otestje1
-:w
-:sp Xtestje2
-otestje2
-:w
-:sp Xtestje3
-otestje3
-:w
-
-:au WinLeave Xtestje2 bwipe
-
-:w! test.out
-:au WinLeave Xtestje1 bwipe Xtestje3
-:close
-:w >>test.out
-:e Xtestje1
-:bwipe Xtestje2 Xtestje3 test.out
-:au!
-:au! BufUnload Xtestje1 bwipe
-:e Xtestje3
-:w >>test.out
-:e Xtestje2
-:sp Xtestje1
-:e
-:w >>test.out
-:au!
-:only
-:e Xtestje1
-:bwipe Xtestje2 Xtestje3 test.out test13.in
-:au BufWipeout Xtestje1 buf Xtestje1
-:bwipe
-:w >>test.out
-:qa!
-ENDTEST
-
-start of testfile
- contents
- contents
- contents
-end of testfile
diff --git a/src/testdir/test13.ok b/src/testdir/test13.ok
deleted file mode 100644
index 0f1fc347a4..0000000000
--- a/src/testdir/test13.ok
+++ /dev/null
@@ -1,30 +0,0 @@
-start of testfile
-testje1
- contents
- contents
- contents
-end of testfile
-start of testfile
-testje1
- contents
- contents
- contents
-end of testfile
-start of testfile
-testje3
- contents
- contents
- contents
-end of testfile
-start of testfile
-testje2
- contents
- contents
- contents
-end of testfile
-start of testfile
-testje1
- contents
- contents
- contents
-end of testfile
diff --git a/src/testdir/test14.in b/src/testdir/test14.in
deleted file mode 100644
index fb987ebc88..0000000000
--- a/src/testdir/test14.in
+++ /dev/null
@@ -1,99 +0,0 @@
-Tests for "vaBiB", end could be wrong.
-Also test ":s/pat/sub/" with different ~s in sub.
-Also test for ^Vxff and ^Vo123 in Insert mode.
-Also test "[m", "]m", "[M" and "]M"
-Also test search()
-
-STARTTEST
-:so small.vim
-/Start cursor here
-vaBiBD:?Bug?,/Piece/-2w! test.out
-/^- Bug
-:s/u/~u~/
-:s/i/~u~/
-:s/o/~~~/
-:.w >>test.out
-:if has("ebcdic")
-: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
-:else
-: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
-:endif
-:exe "normal " . tt
-:unlet tt
-:.w >>test.out
-:set vb
-/^Piece
-2]maA:.w >>test.out
-j]maB:.w >>test.out
-]maC:.w >>test.out
-[maD:.w >>test.out
-k2[maE:.w >>test.out
-3[maF:.w >>test.out
-]MaG:.w >>test.out
-j2]MaH:.w >>test.out
-]M]MaI:.w >>test.out
-2[MaJ:.w >>test.out
-k[MaK:.w >>test.out
-3[MaL:.w >>test.out
-:"
-/^foobar
-:let startline = line('.')
-:call search('foobar', 'c')
-:call append(line('$'), line('.') - startline)
-j:call search('^$', 'c')
-:call append(line('$'), line('.') - startline)
-:call search('^$', 'bc')
-:call append(line('$'), line('.') - startline)
-/two
-:call search('.', 'c')
-:call append(line('$'), getline('.')[col('.') - 1:])
-:"
-/^substitute
-:s/foo/bar/
-:$put =@/
-/^substitute
-:keeppatterns s/asdf/xyz/
-:$put =@/
-/^substitute
-Y:$put =@0
-/bar /e
-:$put =@0
--:keeppatterns /xyz
-0dn:/^search()/,$w >>test.out
-:qa!
-ENDTEST
-
-- Bug in "vPPPP" on this text (Webb):
- {
- cmd;
- {
- cmd; /* <-- Start cursor here */
- {
- }
- }
- }
-
-Piece of Java
-{
- tt m1 {
- t1;
- } e1
-
- tt m2 {
- t2;
- } e2
-
- tt m3 {
- if (x)
- {
- t3;
- }
- } e3
-}
-
-foobar
-
-substitute foo asdf
-
-one two
-search()
diff --git a/src/testdir/test14.ok b/src/testdir/test14.ok
deleted file mode 100644
index 0aa2db3f97..0000000000
--- a/src/testdir/test14.ok
+++ /dev/null
@@ -1,26 +0,0 @@
-- Bug in "vPPPP" on this text (Webb):
- {
- }
-- Bug uuun "vPPPP" uuuuuuuuun this text (Webb):
-ABC !ag8
- tt m1 {A
- tt m2 {B
- tt m3 {C
- tt m3 {DC
- tt m1 {EA
-{F
- }G e1
- }H e3
-}I
- }JH e3
- }K e2
-{LF
-search()
-0
-1
-1
-two
-foo
-^substitute
-substitute bar xyz
-xyz
diff --git a/src/testdir/test15.in b/src/testdir/test15.in
deleted file mode 100644
index 366529a550..0000000000
--- a/src/testdir/test15.in
+++ /dev/null
@@ -1,136 +0,0 @@
-Tests for :right on text with embedded TAB.
-Also test formatting a paragraph.
-Also test undo after ":%s" and formatting.
-
-STARTTEST
-:so small.vim
-:set tw=65
-
-:/^\s*test for :left/,/^\s*test for :center/ left
-:/^\s*test for :center/,/^\s*test for :right/ center
-:/^\s*test for :right/,/^xxx/-1 right
-:set fo+=tcroql tw=72
-/xxxxxxxx$
-0gq6kk
-:set nocp viminfo+=nviminfo
-:" undo/redo here to make the next undo only work on the following changes
-u
-:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
-/^aa
-ggu
-:?test for :left?,$w! test.out
-:qa!
-ENDTEST
-
- test for :left
- a a
- fa a
- dfa a
- sdfa a
- asdfa a
- xasdfa a
-asxxdfa a
-
- test for :center
- a a
- fa afd asdf
- dfa a
- sdfa afd asdf
- asdfa a
- xasdfa asdfasdfasdfasdfasdf
-asxxdfa a
-
- test for :right
- a a
- fa a
- dfa a
- sdfa a
- asdfa a
- xasdfa a
- asxxdfa a
- asxa;ofa a
- asdfaqwer a
- a ax
- fa ax
- dfa ax
- sdfa ax
- asdfa ax
- xasdfa ax
- asxxdfa ax
- asxa;ofa ax
- asdfaqwer ax
- a axx
- fa axx
- dfa axx
- sdfa axx
- asdfa axx
- xasdfa axx
- asxxdfa axx
- asxa;ofa axx
- asdfaqwer axx
- a axxx
- fa axxx
- dfa axxx
- sdfa axxx
- asdfa axxx
- xasdfa axxx
- asxxdfa axxx
- asxa;ofa axxx
- asdfaqwer axxx
- a axxxo
- fa axxxo
- dfa axxxo
- sdfa axxxo
- asdfa axxxo
- xasdfa axxxo
- asxxdfa axxxo
- asxa;ofa axxxo
- asdfaqwer axxxo
- a axxxoi
- fa axxxoi
- dfa axxxoi
- sdfa axxxoi
- asdfa axxxoi
- xasdfa axxxoi
- asxxdfa axxxoi
- asxa;ofa axxxoi
- asdfaqwer axxxoi
- a axxxoik
- fa axxxoik
- dfa axxxoik
- sdfa axxxoik
- asdfa axxxoik
- xasdfa axxxoik
- asxxdfa axxxoik
- asxa;ofa axxxoik
- asdfaqwer axxxoik
- a axxxoike
- fa axxxoike
- dfa axxxoike
- sdfa axxxoike
- asdfa axxxoike
- xasdfa axxxoike
- asxxdfa axxxoike
- asxa;ofa axxxoike
- asdfaqwer axxxoike
- a axxxoikey
- fa axxxoikey
- dfa axxxoikey
- sdfa axxxoikey
- asdfa axxxoikey
- xasdfa axxxoikey
- asxxdfa axxxoikey
- asxa;ofa axxxoikey
- asdfaqwer axxxoikey
-
-xxxxx xx xxxxxx
-xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
-xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx
-xx xxxxxxx. xxxx xxxx.
-
-> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx
-> xxxxxx xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx
-
-aa aa aa aa
-bb bb bb bb
-cc cc cc cc
diff --git a/src/testdir/test15.ok b/src/testdir/test15.ok
deleted file mode 100644
index bc09f5e7db..0000000000
--- a/src/testdir/test15.ok
+++ /dev/null
@@ -1,111 +0,0 @@
-test for :left
-a a
-fa a
-dfa a
-sdfa a
-asdfa a
-xasdfa a
-asxxdfa a
-
- test for :center
- a a
- fa afd asdf
- dfa a
- sdfa afd asdf
- asdfa a
- xasdfa asdfasdfasdfasdfasdf
- asxxdfa a
-
- test for :right
- a a
- fa a
- dfa a
- sdfa a
- asdfa a
- xasdfa a
- asxxdfa a
- asxa;ofa a
- asdfaqwer a
- a ax
- fa ax
- dfa ax
- sdfa ax
- asdfa ax
- xasdfa ax
- asxxdfa ax
- asxa;ofa ax
- asdfaqwer ax
- a axx
- fa axx
- dfa axx
- sdfa axx
- asdfa axx
- xasdfa axx
- asxxdfa axx
- asxa;ofa axx
- asdfaqwer axx
- a axxx
- fa axxx
- dfa axxx
- sdfa axxx
- asdfa axxx
- xasdfa axxx
- asxxdfa axxx
- asxa;ofa axxx
- asdfaqwer axxx
- a axxxo
- fa axxxo
- dfa axxxo
- sdfa axxxo
- asdfa axxxo
- xasdfa axxxo
- asxxdfa axxxo
- asxa;ofa axxxo
- asdfaqwer axxxo
- a axxxoi
- fa axxxoi
- dfa axxxoi
- sdfa axxxoi
- asdfa axxxoi
- xasdfa axxxoi
- asxxdfa axxxoi
- asxa;ofa axxxoi
- asdfaqwer axxxoi
- a axxxoik
- fa axxxoik
- dfa axxxoik
- sdfa axxxoik
- asdfa axxxoik
- xasdfa axxxoik
- asxxdfa axxxoik
- asxa;ofa axxxoik
- asdfaqwer axxxoik
- a axxxoike
- fa axxxoike
- dfa axxxoike
- sdfa axxxoike
- asdfa axxxoike
- xasdfa axxxoike
- asxxdfa axxxoike
- asxa;ofa axxxoike
- asdfaqwer axxxoike
- a axxxoikey
- fa axxxoikey
- dfa axxxoikey
- sdfa axxxoikey
- asdfa axxxoikey
- xasdfa axxxoikey
- asxxdfa axxxoikey
- asxa;ofa axxxoikey
- asdfaqwer axxxoikey
-
-xxxxx xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx
-xxxxxxxxxxxxxxxxxx xxxxx xxxx, xxxx xxxx xxxx xxxx xxx xx xx xx xxxxxxx.
-xxxx xxxx.
-
-> xx xx, xxxx xxxx xxx xxxx xxx xxxxx xxx xxx xxxxxxx xxx xxxxx xxxxxx
-> xxxxxxx: xxxx xxxxxxx, xx xxxxxx xxxx xxxxxxxxxx
-
-aa aa aa aa
-bb bb bb bb
-cc cc cc cc
diff --git a/src/testdir/test16.in b/src/testdir/test16.in
deleted file mode 100644
index b2cd159a8c..0000000000
--- a/src/testdir/test16.in
+++ /dev/null
@@ -1,15 +0,0 @@
-Tests for resetting "secure" flag after GUI has started.
-For KDE set a font, empty 'guifont' may cause a hang.
-
-STARTTEST
-:if $DISPLAY == "" | e! test.ok | wq! test.out | endif
-:set exrc secure
-:if has("gui_kde")
-: set guifont=Courier\ 10\ Pitch/8/-1/5/50/0/0/0/0/0
-:endif
-:gui -f
-:.,$w! test.out
-:qa!
-ENDTEST
-
- just some text
diff --git a/src/testdir/test16.ok b/src/testdir/test16.ok
deleted file mode 100644
index 25e2eea5c0..0000000000
--- a/src/testdir/test16.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-
- just some text
diff --git a/src/testdir/test17.in b/src/testdir/test17.in
deleted file mode 100644
index bc542c7625..0000000000
--- a/src/testdir/test17.in
+++ /dev/null
@@ -1,141 +0,0 @@
-Tests for:
-- "gf" on ${VAR},
-- ":checkpath!" with various 'include' settings.
-
-STARTTEST
-:so small.vim
-:if has("ebcdic")
-: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
-:else
-: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
-:endif
-:function! DeleteDirectory(dir)
-: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
-: exec "silent !rmdir /Q /S " . a:dir
-: else
-: exec "silent !rm -rf " . a:dir
-: endif
-:endfun
-:if has("unix")
-:let $CDIR = "."
-/CDIR
-:else
-:if has("amiga")
-:let $TDIR = "/testdir"
-:else
-:let $TDIR = "."
-:endif
-/TDIR
-:endif
-:" Dummy writing for making that sure gf doesn't fail even if the current
-:" file is modified. It can be occurred when executing the following command
-:" directly on Windows without fixing the 'fileformat':
-:" > nmake -f Make_dos.mak test17.out
-:w! test.out
-gf
-:set ff=unix
-:w! test.out
-:brewind
-ENDTEST
-
- ${CDIR}/test17a.in
- $TDIR/test17a.in
-
-STARTTEST
-:" check for 'include' without \zs or \ze
-:lang C
-:call delete("./Xbase.a")
-:call DeleteDirectory("Xdir1")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:e! Xdir1/dir2/foo.a
-i#include "bar.a"
-:w
-:e Xdir1/dir2/bar.a
-i#include "baz.a"
-:w
-:e Xdir1/dir2/baz.a
-i#include "foo.a"
-:w
-:e Xbase.a
-:set path=Xdir1/dir2
-i#include <foo.a>
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-ENDTEST
-
-STARTTEST
-:" check for 'include' with \zs and \ze
-:call delete("./Xbase.b")
-:call DeleteDirectory("Xdir1")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:let &include='^\s*%inc\s*/\zs[^/]\+\ze'
-:function! DotsToSlashes()
-: return substitute(v:fname, '\.', '/', 'g') . '.b'
-:endfunction
-:let &includeexpr='DotsToSlashes()'
-:e! Xdir1/dir2/foo.b
-i%inc /bar/
-:w
-:e Xdir1/dir2/bar.b
-i%inc /baz/
-:w
-:e Xdir1/dir2/baz.b
-i%inc /foo/
-:w
-:e Xbase.b
-:set path=Xdir1/dir2
-i%inc /foo/
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-ENDTEST
-
-STARTTEST
-:" check for 'include' with \zs and no \ze
-:call delete("./Xbase.c")
-:call DeleteDirectory("Xdir1")
-:!mkdir Xdir1
-:!mkdir "Xdir1/dir2"
-:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'
-:function! StripNewlineChar()
-: if v:fname =~ '\n$'
-: return v:fname[:-2]
-: endif
-: return v:fname
-:endfunction
-:let &includeexpr='StripNewlineChar()'
-:e! Xdir1/dir2/foo.c
-i%inc bar.c
-:w
-:e Xdir1/dir2/bar.c
-i%inc baz.c
-:w
-:e Xdir1/dir2/baz.c
-i%inc foo.c
-:w
-:e Xdir1/dir2/FALSE.c
-i%inc foo.c
-:w
-:e Xbase.c
-:set path=Xdir1/dir2
-i%inc FALSE.c foo.c
-:w
-:redir! >>test.out
-:checkpath!
-:redir END
-:brewind
-:" change "\" to "/" for Windows and fix 'fileformat'
-:e test.out
-:%s#\\#/#g
-:set ff&
-:w
-:q
-ENDTEST
-
diff --git a/src/testdir/test17.ok b/src/testdir/test17.ok
deleted file mode 100644
index b2a66d5f85..0000000000
--- a/src/testdir/test17.ok
+++ /dev/null
@@ -1,33 +0,0 @@
-This file is just to test "gf" in test 17.
-The contents is not important.
-Just testing!
-
-
---- Included files in path ---
-Xdir1/dir2/foo.a
-Xdir1/dir2/foo.a -->
- Xdir1/dir2/bar.a
- Xdir1/dir2/bar.a -->
- Xdir1/dir2/baz.a
- Xdir1/dir2/baz.a -->
- "foo.a" (Already listed)
-
-
---- Included files in path ---
-Xdir1/dir2/foo.b
-Xdir1/dir2/foo.b -->
- Xdir1/dir2/bar.b
- Xdir1/dir2/bar.b -->
- Xdir1/dir2/baz.b
- Xdir1/dir2/baz.b -->
- foo (Already listed)
-
-
---- Included files in path ---
-Xdir1/dir2/foo.c
-Xdir1/dir2/foo.c -->
- Xdir1/dir2/bar.c
- Xdir1/dir2/bar.c -->
- Xdir1/dir2/baz.c
- Xdir1/dir2/baz.c -->
- foo.c (Already listed)
diff --git a/src/testdir/test17a.in b/src/testdir/test17a.in
deleted file mode 100644
index 7e89364797..0000000000
--- a/src/testdir/test17a.in
+++ /dev/null
@@ -1,3 +0,0 @@
-This file is just to test "gf" in test 17.
-The contents is not important.
-Just testing!
diff --git a/src/testdir/test18.in b/src/testdir/test18.in
deleted file mode 100644
index 9bfd922344..0000000000
--- a/src/testdir/test18.in
+++ /dev/null
@@ -1,16 +0,0 @@
-Tests for not doing smart indenting when it isn't set.
-
-STARTTEST
-:so small.vim
-:set nocin nosi ai
-/some
-2cc#test
-:?start?,$w! test.out
-:qa!
-ENDTEST
-
-start text
- some test text
- test text
-test text
- test text
diff --git a/src/testdir/test18.ok b/src/testdir/test18.ok
deleted file mode 100644
index e719713785..0000000000
--- a/src/testdir/test18.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-start text
- #test
-test text
- test text
diff --git a/src/testdir/test19.in b/src/testdir/test19.in
deleted file mode 100644
index aafa34e521..0000000000
--- a/src/testdir/test19.in
+++ /dev/null
@@ -1,33 +0,0 @@
-Tests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
-Also test that dv_ works correctly
-
-STARTTEST
-:so small.vim
-:set smarttab expandtab ts=8 sw=4
-:" make sure that backspace works, no matter what termcap is used
-:set t_kD=x7f t_kb=x08
-/some
-r :set noexpandtab
-/other
-r
-:" Test replacing with Tabs and then backspacing to undo it
-0wR 
-:" Test replacing with Tabs
-0wR 
-:" Test that copyindent works with expandtab set
-:set expandtab smartindent copyindent ts=8 sw=8 sts=8
-o{
-x:set nosol
-/Second line/
-fwdv_:?^start?,$w! test.out
-:qa!
-ENDTEST
-
-start text
- some test text
-test text
- other test text
- a cde
- f ghi
-test text
- Second line beginning with whitespace
diff --git a/src/testdir/test19.ok b/src/testdir/test19.ok
deleted file mode 100644
index 4146214919..0000000000
--- a/src/testdir/test19.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-start text
- ome test text
-test text
- ther test text
- a cde
- hi
-test text
-{
- x
- with whitespace
diff --git a/src/testdir/test2.in b/src/testdir/test2.in
deleted file mode 100644
index b7b5a51066..0000000000
--- a/src/testdir/test2.in
+++ /dev/null
@@ -1,29 +0,0 @@
-
-This is a test if a URL is recognized by "gf", with the cursor before and
-after the "://". Also test ":\\".
-
-STARTTEST
-:so small.vim
-/^first
-/tmp
-:call append(0, expand("<cfile>"))
-/^second
-/URL
-:call append(1, expand("<cfile>"))
-:if has("ebcdic")
-: set isf=@,240-249,/,.,-,_,+,,,$,:,~,\
-:else
-: set isf=@,48-57,/,.,-,_,+,,,$,:,~,\
-:endif
-/^third
-/name
-:call append(2, expand("<cfile>"))
-/^fourth
-/URL
-:call append(3, expand("<cfile>"))
-5GdG:wq! test.out
-ENDTEST
-first test for URL://machine.name/tmp/vimtest2a and other text
-second test for URL://machine.name/tmp/vimtest2b. And other text
-third test for URL:\\machine.name\vimtest2c and other text
-fourth test for URL:\\machine.name\tmp\vimtest2d, and other text
diff --git a/src/testdir/test2.ok b/src/testdir/test2.ok
deleted file mode 100644
index 32978825f8..0000000000
--- a/src/testdir/test2.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-URL://machine.name/tmp/vimtest2a
-URL://machine.name/tmp/vimtest2b
-URL:\\machine.name\vimtest2c
-URL:\\machine.name\tmp\vimtest2d
diff --git a/src/testdir/test20.in b/src/testdir/test20.in
deleted file mode 100644
index 662a1439f2..0000000000
--- a/src/testdir/test20.in
+++ /dev/null
@@ -1,28 +0,0 @@
-Tests Blockwise Visual when there are TABs before the text.
-First test for undo working properly when executing commands from a register.
-Also test this in an empty buffer.
-
-STARTTEST
-:so tiny.vim
-G0"ay$k@au
-:new
-@auY:quit!
-GP
-/start here$
-"by$jjlld
-/456$
-jj"bP
-:/56$/,$-1w! test.out
-:qa!
-ENDTEST
-
-123456
-234567
-345678
-
-test text test tex start here
- some text
- test text
-test text
-
-OxjAykdd
diff --git a/src/testdir/test20.ok b/src/testdir/test20.ok
deleted file mode 100644
index 7c50ea8db8..0000000000
--- a/src/testdir/test20.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-123start here56
-234start here67
-345start here78
-
-test text test tex rt here
- somext
- tesext
-test text
-
-
diff --git a/src/testdir/test21.in b/src/testdir/test21.in
deleted file mode 100644
index 491b9f7404..0000000000
--- a/src/testdir/test21.in
+++ /dev/null
@@ -1,19 +0,0 @@
-Tests for [ CTRL-I with a count and CTRL-W CTRL-I with a count
-
-STARTTEST
-:so small.vim
-/start
-6[ :.w! test.out
-?start here
-6 :.w >>test.out
-:qa!
-ENDTEST
-
-#include test21.in
-
-/* test text test tex start here
- some text
- test text
- start OK if found this line
- start found wrong line
-test text
diff --git a/src/testdir/test21.ok b/src/testdir/test21.ok
deleted file mode 100644
index d9f1b759ce..0000000000
--- a/src/testdir/test21.ok
+++ /dev/null
@@ -1,2 +0,0 @@
- start OK if found this line
- start OK if found this line
diff --git a/src/testdir/test22.in b/src/testdir/test22.in
deleted file mode 100644
index f5cc046c6a..0000000000
--- a/src/testdir/test22.in
+++ /dev/null
@@ -1,13 +0,0 @@
-Tests for file with some lines ending in CTRL-M, some not
-
-STARTTEST
-:set ta tx
-:e!
-:$-3,$w! test.out
-:qa!
-ENDTEST
-
-this lines ends in a
-this one doesn't
-this one does
-and the last one doesn't
diff --git a/src/testdir/test22.ok b/src/testdir/test22.ok
deleted file mode 100644
index 38ff89eaf3..0000000000
--- a/src/testdir/test22.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-this lines ends in a
-this one doesn't
-this one does
-and the last one doesn't
diff --git a/src/testdir/test23.in b/src/testdir/test23.in
deleted file mode 100644
index 0e0e605531..0000000000
--- a/src/testdir/test23.in
+++ /dev/null
@@ -1,15 +0,0 @@
-Tests for complicated + argument to :edit command
-
-STARTTEST
-:$-1w! Xfile1
-:$w! Xfile2
-:edit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w
-:w! test.out
-:e Xfile1
-:w >> test.out
-:qa!
-ENDTEST
-
-The result should be in Xfile1: "fooPIPEbar", in Xfile2: "fooSLASHbar"
-foo|bar
-foo/bar
diff --git a/src/testdir/test23.ok b/src/testdir/test23.ok
deleted file mode 100644
index f1930abad6..0000000000
--- a/src/testdir/test23.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-fooSLASHbar
-fooPIPEbar
diff --git a/src/testdir/test24.in b/src/testdir/test24.in
deleted file mode 100644
index 7dfc1afdc6..0000000000
--- a/src/testdir/test24.in
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test24.ok b/src/testdir/test24.ok
deleted file mode 100644
index cd61210968..0000000000
--- a/src/testdir/test24.ok
+++ /dev/null
@@ -1,32 +0,0 @@
-start
-test text test text
-test text test text
-test text test text
-test text test text
-test text test text
-test text test text
-test text test text x61
-test text test text x60-x64
-test text test text x78 5
-test text test text o143
-test text test text o140-o144
-test text test text o41 7
-test text test text \%x42
-test text test text \%o103
-test text test text [\x00]
-test text test text [\x00-\x10]
-test text test text [\x-z]
-test text test text [\u-z]
-xx xx a
-xx aaaaa xx a
-xx aaaaa xx a
-xx Aaa xx
-xx Aaaa xx
-xx Aaa xx
-xx foobar xA xx
-xx an A xx
-XX 9;
-YY 77;
- xyz
- bcd
- BB
diff --git a/src/testdir/test25.in b/src/testdir/test25.in
deleted file mode 100644
index 4139865daf..0000000000
--- a/src/testdir/test25.in
+++ /dev/null
@@ -1,31 +0,0 @@
-Test for jumping to a tag with 'hidden' set, with symbolic link in path of tag.
-This only works for Unix, because of the symbolic link.
-
-STARTTEST
-:so small.vim
-:set hidden
-:" Create a link from test25.dir to the current directory.
-:!rm -f test25.dir
-:!ln -s . test25.dir
-:" Create tags.text, with the current directory name inserted.
-/tags line
-:r !pwd
-d$/test
-hP:.w! tags.test
-:" Try jumping to a tag in the current file, but with a path that contains a
-:" symbolic link. When wrong, this will give the ATTENTION message. The next
-:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
-:set tags=tags.test
-G x:.w! test.out
-:!rm -f test25.dir tags.test
-:qa!
-ENDTEST
-
-tags line:
-SECTION_OFF /test25.dir/test25.in /^#define SECTION_OFF 3$/
-
-/*tx.c*/
-#define SECTION_OFF 3
-#define NUM_SECTIONS 3
-
-SECTION_OFF
diff --git a/src/testdir/test25.ok b/src/testdir/test25.ok
deleted file mode 100644
index 08fc070b7b..0000000000
--- a/src/testdir/test25.ok
+++ /dev/null
@@ -1 +0,0 @@
-#efine SECTION_OFF 3
diff --git a/src/testdir/test26.in b/src/testdir/test26.in
deleted file mode 100644
index e7cd757661..0000000000
--- a/src/testdir/test26.in
+++ /dev/null
@@ -1,44 +0,0 @@
-Test for :execute, :while and :if
-
-STARTTEST
-:so small.vim
-mt:let i = 0
-:while i < 12
-: let i = i + 1
-: if has("ebcdic")
-: execute "normal o" . i . "\047"
-: else
-: execute "normal o" . i . "\033"
-: endif
-: if i % 2
-: normal Ax
-: if i == 9
-: break
-: endif
-: if i == 5
-: continue
-: else
-: let j = 9
-: while j > 0
-: if has("ebcdic")
-: execute "normal" j . "a" . j . "\x27"
-: else
-: execute "normal" j . "a" . j . "\x1b"
-: endif
-: let j = j - 1
-: endwhile
-: endif
-: endif
-: if i == 9
-: if has("ebcdic")
-: execute "normal Az\047"
-: else
-: execute "normal Az\033"
-: endif
-: endif
-:endwhile
-:unlet i j
-:'t,$w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test26.ok b/src/testdir/test26.ok
deleted file mode 100644
index bc44761187..0000000000
--- a/src/testdir/test26.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-
-1x999999999888888887777777666666555554444333221
-2
-3x999999999888888887777777666666555554444333221
-4
-5x
-6
-7x999999999888888887777777666666555554444333221
-8
-9x
diff --git a/src/testdir/test27.in b/src/testdir/test27.in
deleted file mode 100644
index 2df16d9eff..0000000000
--- a/src/testdir/test27.in
+++ /dev/null
@@ -1,20 +0,0 @@
-Test for expanding file names
-
-STARTTEST
-:!mkdir Xdir1
-:!mkdir Xdir2
-:!mkdir Xdir3
-:cd Xdir3
-:!mkdir Xdir4
-:cd ..
-:w Xdir1/file
-:w Xdir3/Xdir4/file
-:n Xdir?/*/file
-Go%:.w! test.out
-:n! Xdir?/*/nofile
-Go%:.w >>test.out
-:e! xx
-:!rm -rf Xdir1 Xdir2 Xdir3
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test27.ok b/src/testdir/test27.ok
deleted file mode 100644
index c35f2438a9..0000000000
--- a/src/testdir/test27.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-Xdir3/Xdir4/file
-Xdir?/*/nofile
diff --git a/src/testdir/test28.in b/src/testdir/test28.in
deleted file mode 100644
index 5542c92666..0000000000
--- a/src/testdir/test28.in
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test28.ok b/src/testdir/test28.ok
deleted file mode 100644
index 911d854655..0000000000
--- a/src/testdir/test28.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-sd
-map __2 asdsecondsdsd0map __5 asd0fifth
diff --git a/src/testdir/test29.in b/src/testdir/test29.in
deleted file mode 100644
index 1d6cb6f4d1..0000000000
--- a/src/testdir/test29.in
+++ /dev/null
@@ -1,230 +0,0 @@
-Test for joining lines and marks in them
- in compatible and nocompatible modes
- and with 'joinspaces' set or not
- and with 'cpoptions' flag 'j' set or not
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo
-:set nojoinspaces
-:set cpoptions-=j
-/firstline/
-j"td/^STARTTEST/-1
-PJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
-j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
-j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions+=j
-j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
-j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
-ENDTEST
-
-firstline
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf.
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-asdfasdf
-asdf
-zx cvn.
-as dfg?
-hjkl iop!
-ert
-zx cvn.
-as dfg?
-hjkl iop!
-ert
-
-STARTTEST
-/^{/+1
-:set comments=s1:/*,mb:*,ex:*/,://
-:set nojoinspaces fo=j
-:set backspace=eol,start
-:.,+3join
-j4J
-:.,+2join
-j3J
-:.,+2join
-j3J
-:.,+2join
-jj3J
-ENDTEST
-
-{
-
-/*
- * Make sure the previous comment leader is not removed.
- */
-
-/*
- * Make sure the previous comment leader is not removed.
- */
-
-// Should the next comment leader be left alone?
-// Yes.
-
-// Should the next comment leader be left alone?
-// Yes.
-
-/* Here the comment leader should be left intact. */
-// And so should this one.
-
-/* Here the comment leader should be left intact. */
-// And so should this one.
-
-if (condition) // Remove the next comment leader!
- // OK, I will.
- action();
-
-if (condition) // Remove the next comment leader!
- // OK, I will.
- action();
-}
-
-STARTTEST
-:" Test with backspace set to the non-compatible setting
-/^\d\+ this
-:set cp bs=2
-Avim1
-Avim2u
-:set cpo-=<
-:inoremap <c-u> <left><c-u>
-Avim3
-:iunmap <c-u>
-Avim4
-:" Test with backspace set to the compatible setting
-:set bs=
-A vim5A
-A vim6Azweiu
-:inoremap <c-u> <left><c-u>
-A vim7
-:set cp
-ENDTEST
-1 this shouldn't be deleted
-2 this shouldn't be deleted
-3 this shouldn't be deleted
-4 this should be deleted
-5 this shouldn't be deleted
-6 this shouldn't be deleted
-7 this shouldn't be deleted
-8 this shouldn't be deleted (not touched yet)
-
-STARTTEST
-/^{/+1
-:set comments=sO:*\ -,mO:*\ \ ,exO:*/
-:set comments+=s1:/*,mb:*,ex:*/,://
-:set comments+=s1:>#,mb:#,ex:#<,:<
-:set cpoptions-=j joinspaces fo=j
-:set backspace=eol,start
-:.,+3join
-j4J
-:.,+8join
-j9J
-:.,+2join
-j3J
-:.,+2join
-j3J
-:.,+2join
-jj3J
-j:.,+2join
-jj3J
-j:.,+5join
-j6J
-oSome code! // Make sure backspacing does not remove this comment leader.0i
-ENDTEST
-
-{
-
-/*
- * Make sure the previous comment leader is not removed.
- */
-
-/*
- * Make sure the previous comment leader is not removed.
- */
-
-/* List:
- * - item1
- * foo bar baz
- * foo bar baz
- * - item2
- * foo bar baz
- * foo bar baz
- */
-
-/* List:
- * - item1
- * foo bar baz
- * foo bar baz
- * - item2
- * foo bar baz
- * foo bar baz
- */
-
-// Should the next comment leader be left alone?
-// Yes.
-
-// Should the next comment leader be left alone?
-// Yes.
-
-/* Here the comment leader should be left intact. */
-// And so should this one.
-
-/* Here the comment leader should be left intact. */
-// And so should this one.
-
-if (condition) // Remove the next comment leader!
- // OK, I will.
- action();
-
-if (condition) // Remove the next comment leader!
- // OK, I will.
- action();
-
-int i = 7 /* foo *// 3
- // comment
- ;
-
-int i = 7 /* foo *// 3
- // comment
- ;
-
-># Note that the last character of the ending comment leader (left angle
- # bracket) is a comment leader itself. Make sure that this comment leader is
- # not removed from the next line #<
-< On this line a new comment is opened which spans 2 lines. This comment should
-< retain its comment leader.
-
-># Note that the last character of the ending comment leader (left angle
- # bracket) is a comment leader itself. Make sure that this comment leader is
- # not removed from the next line #<
-< On this line a new comment is opened which spans 2 lines. This comment should
-< retain its comment leader.
-
-}
-
-STARTTEST
-:g/^STARTTEST/.,/^ENDTEST/d
-:?firstline?+1,$w! test.out
-:qa!
-ENDTEST
diff --git a/src/testdir/test29.ok b/src/testdir/test29.ok
deleted file mode 100644
index 9dc07ed46b..0000000000
--- a/src/testdir/test29.ok
+++ /dev/null
@@ -1,97 +0,0 @@
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-zx cvn. as dfg? hjkl iop! ert ernop
-zx cvn. as dfg? hjkl iop! ert ernop
-
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-zx cvn. as dfg? hjkl iop! ert enop
-zx cvn. as dfg? hjkl iop! ert ernop
-
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf. asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-asdfasdf asdf
-zx cvn. as dfg? hjkl iop! ert a
-
-
-{
-/* Make sure the previous comment leader is not removed. */
-/* Make sure the previous comment leader is not removed. */
-// Should the next comment leader be left alone? Yes.
-// Should the next comment leader be left alone? Yes.
-/* Here the comment leader should be left intact. */ // And so should this one.
-/* Here the comment leader should be left intact. */ // And so should this one.
-if (condition) // Remove the next comment leader! OK, I will.
- action();
-if (condition) // Remove the next comment leader! OK, I will.
- action();
-}
-
-1 this shouldn't be deleted
-2 this shouldn't be deleted
-3 this shouldn't be deleted
-4 this should be deleted3
-
-6 this shouldn't be deleted vim5
-7 this shouldn't be deleted vim6
-8 this shouldn't be deleted (not touched yet) vim7
-
-
-{
-/* Make sure the previous comment leader is not removed. */
-/* Make sure the previous comment leader is not removed. */
-/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
-/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */
-// Should the next comment leader be left alone? Yes.
-// Should the next comment leader be left alone? Yes.
-/* Here the comment leader should be left intact. */ // And so should this one.
-/* Here the comment leader should be left intact. */ // And so should this one.
-if (condition) // Remove the next comment leader! OK, I will.
- action();
-if (condition) // Remove the next comment leader! OK, I will.
- action();
-int i = 7 /* foo *// 3 // comment
- ;
-int i = 7 /* foo *// 3 // comment
- ;
-># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
-># Note that the last character of the ending comment leader (left angle bracket) is a comment leader itself. Make sure that this comment leader is not removed from the next line #< < On this line a new comment is opened which spans 2 lines. This comment should retain its comment leader.
-
-Some code!// Make sure backspacing does not remove this comment leader.
-}
-
diff --git a/src/testdir/test3.in b/src/testdir/test3.in
deleted file mode 100644
index a7543945c4..0000000000
--- a/src/testdir/test3.in
+++ /dev/null
@@ -1,2056 +0,0 @@
-/* vim: set cin ts=4 sw=4 : */
-
-Test for 'cindent'
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo modeline
-:edit " read modeline
-/start of AUTO
-=/end of AUTO
-ENDTEST
-
-/* start of AUTO matically checked vim: set ts=4 : */
-{
- if (test)
- cmd1;
- cmd2;
-}
-
-{
- if (test)
- cmd1;
- else
- cmd2;
-}
-
-{
- if (test)
- {
- cmd1;
- cmd2;
- }
-}
-
-{
- if (test)
- {
- cmd1;
- else
- }
-}
-
-{
- while (this)
- if (test)
- cmd1;
- cmd2;
-}
-
-{
- while (this)
- if (test)
- cmd1;
- else
- cmd2;
-}
-
-{
- if (test)
- {
- cmd;
- }
-
- if (test)
- cmd;
-}
-
-{
- if (test) {
- cmd;
- }
-
- if (test) cmd;
-}
-
-{
- cmd1;
- for (blah)
- while (this)
- if (test)
- cmd2;
- cmd3;
-}
-
-{
- cmd1;
- for (blah)
- while (this)
- if (test)
- cmd2;
- cmd3;
-
- if (test)
- {
- cmd1;
- cmd2;
- cmd3;
- }
-}
-
-
-/* Test for 'cindent' do/while mixed with if/else: */
-
-{
- do
- if (asdf)
- asdfasd;
- while (cond);
-
- do
- if (asdf)
- while (asdf)
- asdf;
- while (asdf);
-}
-
-/* Test for 'cindent' with two ) on a continuation line */
-{
- if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d
- aal;sdkjf ( ;asldfkja;sldfk
- al;sdjfka ;slkdf ) sa;ldkjfsa dlk;)
- line up here;
-}
-
-
-/* C++ tests: */
-
-// foo() these three lines should remain in column 0
-// {
-// }
-
-/* Test for continuation and unterminated lines: */
-{
- i = 99 + 14325 +
- 21345 +
- 21345 +
- 21345 + ( 21345 +
- 21345) +
- 2345 +
- 1234;
- c = 1;
-}
-
-/*
- testje for indent with empty line
-
- here */
-
-{
- if (testing &&
- not a joke ||
- line up here)
- hay;
- if (testing &&
- (not a joke || testing
- )line up here)
- hay;
- if (testing &&
- (not a joke || testing
- line up here))
- hay;
-}
-
-
-{
- switch (c)
- {
- case xx:
- do
- if (asdf)
- do
- asdfasdf;
- while (asdf);
- else
- asdfasdf;
- while (cond);
- case yy:
- case xx:
- case zz:
- testing;
- }
-}
-
-{
- if (cond) {
- foo;
- }
- else
- {
- bar;
- }
-}
-
-{
- if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf
- alsdkfj (asldk;fj
- awith cino=(0 ;lf this one goes to below the paren with ==
- ;laksjfd ;lsakdjf ;alskdf asd)
- asdfasdf;)))
- asdfasdf;
-}
-
- int
-func(a, b)
- int a;
- int c;
-{
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3)
- )
-}
-
-{
- while (asd)
- {
- if (asdf)
- if (test)
- if (that)
- {
- if (asdf)
- do
- cdasd;
- while (as
- df);
- }
- else
- if (asdf)
- asdf;
- else
- asdf;
- asdf;
- }
-}
-
-{
- s = "/*"; b = ';'
- s = "/*"; b = ';';
- a = b;
-}
-
-{
- switch (a)
- {
- case a:
- switch (t)
- {
- case 1:
- cmd;
- break;
- case 2:
- cmd;
- break;
- }
- cmd;
- break;
- case b:
- {
- int i;
- cmd;
- }
- break;
- case c: {
- int i;
- cmd;
- }
- case d: if (cond &&
- test) { /* this line doesn't work right */
- int i;
- cmd;
- }
- break;
- }
-}
-
-{
- if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) &&
- (bp_to->b_p_initialized ||
- (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL)))
- return;
-label :
- asdf = asdf ?
- asdf : asdf;
- asdf = asdf ?
- asdf: asdf;
-}
-
-/* Special Comments : This function has the added complexity (compared */
-/* : to addtolist) of having to check for a detail */
-/* : texture and add that to the list first. */
-
-char *(array[100]) = {
- "testje",
- "foo",
- "bar",
-}
-
-enum soppie
-{
-yes = 0,
-no,
-maybe
-};
-
-typedef enum soppie
-{
-yes = 0,
-no,
-maybe
-};
-
-static enum
-{
-yes = 0,
-no,
-maybe
-} soppie;
-
-public static enum
-{
-yes = 0,
-no,
-maybe
-} soppie;
-
-static private enum
-{
-yes = 0,
-no,
-maybe
-} soppie;
-
-{
- int a,
- b;
-}
-
-{
- struct Type
- {
- int i;
- char *str;
- } var[] =
- {
- 0, "zero",
- 1, "one",
- 2, "two",
- 3, "three"
- };
-
- float matrix[3][3] =
- {
- {
- 0,
- 1,
- 2
- },
- {
- 3,
- 4,
- 5
- },
- {
- 6,
- 7,
- 8
- }
- };
-}
-
-{
- /* blah ( blah */
- /* where does this go? */
-
- /* blah ( blah */
- cmd;
-
- func(arg1,
- /* comment */
- arg2);
- a;
- {
- b;
- {
- c; /* Hey, NOW it indents?! */
- }
- }
-
- {
- func(arg1,
- arg2,
- arg3);
- /* Hey, what am I doing here? Is this coz of the ","? */
- }
-}
-
-main ()
-{
- if (cond)
- {
- a = b;
- }
- if (cond) {
- a = c;
- }
- if (cond)
- a = d;
- return;
-}
-
-{
- case 2: if (asdf &&
- asdfasdf)
- aasdf;
- a = 9;
- case 3: if (asdf)
- aasdf;
- a = 9;
- case 4: x = 1;
- y = 2;
-
-label: if (asdf)
- here;
-
-label: if (asdf &&
- asdfasdf)
- {
- }
-
-label: if (asdf &&
- asdfasdf) {
- there;
- }
-
-label: if (asdf &&
- asdfasdf)
- there;
-}
-
-{
- /*
- hello with ":set comments= cino=c5"
- */
-
- /*
- hello with ":set comments= cino="
- */
-}
-
-
-{
- if (a < b) {
- a = a + 1;
- } else
- a = a + 2;
-
- if (a)
- do {
- testing;
- } while (asdfasdf);
- a = b + 1;
- asdfasdf
-}
-
-class bob
-{
- int foo() {return 1;}
- int bar;
-}
-
-main()
-{
-while(1)
-if (foo)
-{
-bar;
-}
-else {
-asdf;
-}
-misplacedline;
-}
-
-{
- if (clipboard.state == SELECT_DONE
- && ((row == clipboard.start.lnum
- && col >= clipboard.start.col)
- || row > clipboard.start.lnum))
-}
-
-{
-if (1) {i += 4;}
-where_am_i;
-return 0;
-}
-
-{
-{
-} // sdf(asdf
-if (asdf)
-asd;
-}
-
-{
-label1:
-label2:
-}
-
-{
-int fooRet = foo(pBar1, false /*fKB*/,
- true /*fPTB*/, 3 /*nT*/, false /*fDF*/);
-f() {
-for ( i = 0;
- i < m;
- /* c */ i++ ) {
-a = b;
-}
-}
-}
-
-{
- f1(/*comment*/);
- f2();
-}
-
-{
-do {
-if (foo) {
-} else
-;
-} while (foo);
-foo(); // was wrong
-}
-
-int x; // no extra indent because of the ;
-void func()
-{
-}
-
-char *tab[] = {"aaa",
- "};", /* }; */ NULL}
- int indented;
-{}
-
-char *a[] = {"aaa", "bbb",
- "ccc", NULL};
-// here
-
-char *tab[] = {"aaa",
- "xx", /* xx */}; /* asdf */
-int not_indented;
-
-{
- do {
- switch (bla)
- {
- case 1: if (foo)
- bar;
- }
- } while (boo);
- wrong;
-}
-
-int foo,
- bar;
-int foo;
-
-#if defined(foo) \
- && defined(bar)
-char * xx = "asdf\
- foo\
- bor";
-int x;
-
-char *foo = "asdf\
- asdf\
- asdf",
- *bar;
-
-void f()
-{
-#if defined(foo) \
- && defined(bar)
-char *foo = "asdf\
- asdf\
- asdf",
- *bar;
- {
- int i;
-char *foo = "asdf\
- asdf\
- asdf",
- *bar;
- }
-#endif
-}
-#endif
-
-int y; // comment
- // comment
-
- // comment
-
-{
- Constructor(int a,
- int b ) : BaseClass(a)
- {
- }
-}
-
-void foo()
-{
- char one,
- two;
- struct bla piet,
- jan;
- enum foo kees,
- jannie;
- static unsigned sdf,
- krap;
- unsigned int piet,
- jan;
- int
- kees,
- jan;
-}
-
-{
- t(int f,
- int d); // )
- d();
-}
-
-Constructor::Constructor(int a,
- int b
- ) :
- BaseClass(a,
- b,
- c),
- mMember(b),
-{
-}
-
-Constructor::Constructor(int a,
- int b ) :
- BaseClass(a)
-{
-}
-
-Constructor::Constructor(int a,
- int b ) /*x*/ : /*x*/ BaseClass(a),
- member(b)
-{
-}
-
-class CAbc :
- public BaseClass1,
- protected BaseClass2
-{
- int Test() { return FALSE; }
- int Test1() { return TRUE; }
-
- CAbc(int a, int b ) :
- BaseClass(a)
- {
- switch(xxx)
- {
- case abc:
- asdf();
- break;
-
- case 999:
- baer();
- break;
- }
- }
-
-public: // <-- this was incoreectly indented before!!
- void testfall();
-protected:
- void testfall();
-};
-
-class CAbc : public BaseClass1,
- protected BaseClass2
-{
-};
-
-static struct
-{
- int a;
- int b;
-} variable[COUNT] =
-{
- {
- 123,
- 456
- },
- {
- 123,
- 456
- }
-};
-
-static struct
-{
- int a;
- int b;
-} variable[COUNT] =
-{
- { 123, 456 },
- { 123, 456 }
-};
-
-void asdf() /* ind_maxparen may cause trouble here */
-{
- if ((0
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1)) break;
-}
-
-foo()
-{
- a = cond ? foo() : asdf
- + asdf;
-
- a = cond ?
- foo() : asdf
- + asdf;
-}
-
-int main(void)
-{
- if (a)
- if (b)
- 2;
- else 3;
- next_line_of_code();
-}
-
-barry()
-{
- Foo::Foo (int one,
- int two)
- : something(4)
- {}
-}
-
-barry()
-{
- Foo::Foo (int one, int two)
- : something(4)
- {}
-}
-
-Constructor::Constructor(int a,
- int b
- ) :
- BaseClass(a,
- b,
- c),
- mMember(b)
-{
-}
- int main ()
- {
- if (lala)
- do
- ++(*lolo);
- while (lili
- && lele);
- lulu;
- }
-
-int main ()
-{
-switch (c)
-{
-case 'c': if (cond)
-{
-}
-}
-}
-
-main()
-{
- (void) MyFancyFuasdfadsfnction(
- argument);
-}
-
-main()
-{
- char foo[] = "/*";
- /* as
- df */
- hello
-}
-
-/* valid namespaces with normal indent */
-namespace
-{
-{
- 111111111111;
-}
-}
-namespace /* test */
-{
- 11111111111111111;
-}
-namespace // test
-{
- 111111111111111111;
-}
-namespace
-{
- 111111111111111111;
-}
-namespace test
-{
- 111111111111111111;
-}
-namespace{
- 111111111111111111;
-}
-namespace test{
- 111111111111111111;
-}
-namespace {
- 111111111111111111;
-}
-namespace test {
- 111111111111111111;
-namespace test2 {
- 22222222222222222;
-}
-}
-
-/* invalid namespaces use block indent */
-namespace test test2 {
- 111111111111111111111;
-}
-namespace11111111111 {
- 111111111111;
-}
-namespace() {
- 1111111111111;
-}
-namespace()
-{
- 111111111111111111;
-}
-namespace test test2
-{
- 1111111111111111111;
-}
-namespace111111111
-{
- 111111111111111111;
-}
-
-/* end of AUTO */
-
-STARTTEST
-:set tw=0 wm=60 columns=80 noai fo=croq
-/serious/e
-a about life, the universe, and the rest
-ENDTEST
-
-{
-
-/* this is
- * a real serious important big
- * comment
- */
- /* insert " about life, the universe, and the rest" after "serious" */
-}
-
-STARTTEST
-:set nocin
-/comments
-joabout life/happens
-jothere/below
-oline/this
-Ohello
-ENDTEST
-
-{
- /*
- * Testing for comments, without 'cin' set
- */
-
-/*
-* what happens here?
-*/
-
- /*
- the end of the comment, try inserting a line below */
-
- /* how about
- this one */
-}
-
-STARTTEST
-:set cin
-/vec2
-==
-ENDTEST
-
-{
- var = this + that + vec[0] * vec[0]
- + vec[1] * vec[1]
- + vec2[2] * vec[2];
-}
-
-STARTTEST
-:set cin
-:set cino=}4
-/testing1
-k2==/testing2
-k2==
-ENDTEST
-
-{
- asdf asdflkajds f;
- if (tes & ting) {
- asdf asdf asdf ;
- asdfa sdf asdf;
- }
- testing1;
- if (tes & ting)
- {
- asdf asdf asdf ;
- asdfa sdf asdf;
- }
- testing2;
-}
-
-STARTTEST
-:set cin
-:set cino=(0,)20
-/main
-=][
-ENDTEST
-
-main ( int first_par, /*
- * Comment for
- * first par
- */
- int second_par /*
- * Comment for
- * second par
- */
- )
-{
- func( first_par, /*
- * Comment for
- * first par
- */
- second_par /*
- * Comment for
- * second par
- */
- );
-
-}
-
-STARTTEST
-:set cin
-:set cino=es,n0s
-/main
-=][
-ENDTEST
-
-main(void)
-{
- /* Make sure that cino=X0s is not parsed like cino=Xs. */
- if (cond)
- foo();
- else
- {
- bar();
- }
-}
-
-STARTTEST
-:set cin
-:set cino=
-]]=][
-ENDTEST
-
-{
- do
- {
- if ()
- {
- if ()
- asdf;
- else
- asdf;
- }
- } while ();
- cmd; /* this should go under the } */
-}
-
-STARTTEST
-]]=][
-ENDTEST
-
-void f()
-{
- if ( k() ) {
- l();
-
- } else { /* Start (two words) end */
- m();
- }
-
- n();
-}
-
-STARTTEST
-:set cino={s,e-s
-]]=][
-ENDTEST
-
-void f()
-{
- if ( k() )
- {
- l();
- } else { /* Start (two words) end */
- m();
- }
- n(); /* should be under the if () */
-}
-
-STARTTEST
-:set cino={s,fs
-]]=/ foo
-ENDTEST
-
-void bar(void)
-{
- static array[2][2] =
- {
- { 1, 2 },
- { 3, 4 },
- }
-
- while (a)
- {
- foo(&a);
- }
-
- {
- int a;
- {
- a = a + 1;
- }
- }
- b = a;
- }
-
-void func(void)
- {
- a = 1;
- {
- b = 2;
- }
- c = 3;
- d = 4;
- }
-/* foo */
-
-STARTTEST
-:set cino=
-/while
-ohere
-ENDTEST
-
-a()
-{
- do {
- a = a +
- a;
- } while ( a ); /* add text under this line */
- if ( a )
- a;
-}
-
-STARTTEST
-:set cino= com=
-/comment
-olabel2: b(); label3 /* post */: /* pre */ label4: f(/*com*/); if (/*com*/) cmd();
-ENDTEST
-
-a()
-{
-label1:
- /* hmm */
- // comment
-}
-
-STARTTEST
-:set comments& comments^=s:/*,m:**,ex:*/
-/simple
-=5j
-ENDTEST
-
-/*
- * A simple comment
- */
-
-/*
- ** A different comment
- */
-
-STARTTEST
-:set cino=c0
-:set comments& comments-=s1:/* comments^=s0:/*
-2kdd]]=][
-ENDTEST
-
-void f()
-{
-
- /*********
- A comment.
-*********/
-}
-
-STARTTEST
-:set cino=c0,C1
-:set comments& comments-=s1:/* comments^=s0:/*
-2kdd]]=][
-ENDTEST
-
-void f()
-{
-
- /*********
- A comment.
-*********/
-}
-
-STARTTEST
-:set cino=
-]]=][
-ENDTEST
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-STARTTEST
-:set cino=(s
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-STARTTEST
-:set cino=(s,U1
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-STARTTEST
-:set cino=(0
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- if ( c1
- && ( c2
- || c3))
- foo;
-}
-
-STARTTEST
-:set cino=(0,w1
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- if ( c1
- && ( c2
- || c3))
- foo;
-}
-
-STARTTEST
-:set cino=(s
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- c = c1 && (
- c2 ||
- c3
- ) && c4;
- if (
- c1 && c2
- )
- foo;
-}
-
-STARTTEST
-:set cino=(s,m1
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- c = c1 && (
- c2 ||
- c3
- ) && c4;
- if (
- c1 && c2
- )
- foo;
-}
-
-STARTTEST
-:set cino=b1
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- switch (x)
- {
- case 1:
- a = b;
- break;
- default:
- a = 0;
- break;
- }
-}
-
-STARTTEST
-:set cino=(0,W5
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- invokeme(
- argu,
- ment);
- invokeme(
- argu,
- ment
- );
- invokeme(argu,
- ment
- );
-}
-
-STARTTEST
-:set cino=/6
-2kdd]]=][
-ENDTEST
-
-void f()
-{
- statement;
- // comment 1
- // comment 2
-}
-
-STARTTEST
-:set cino=
-2kdd]]/comment 1/+1
-==
-ENDTEST
-
-void f()
-{
- statement;
- // comment 1
- // comment 2
-}
-
-STARTTEST
-:set cino=g0
-2kdd]]=][
-ENDTEST
-
-class CAbc
-{
- int Test() { return FALSE; }
-
-public: // comment
- void testfall();
-protected:
- void testfall();
-};
-
-STARTTEST
-:set cino=(0,gs,hs
-2kdd]]=][
-ENDTEST
-
-class Foo : public Bar
-{
-public:
-virtual void method1(void) = 0;
-virtual void method2(int arg1,
-int arg2,
-int arg3) = 0;
-};
-
-STARTTEST
-:set cino=+20
-2kdd]]=][
-ENDTEST
-
- void
-foo()
-{
- if (a)
- {
- } else
- asdf;
-}
-
-STARTTEST
-:set cino=(0,W2s
-2kdd]]=][
-ENDTEST
-
-{
- averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
- asdasdf,
- func(asdf,
- asdfadsf),
- asdfasdf
- );
-
- /* those are ugly, but consequent */
-
- func()->asd(asdasdf,
- averylongfunctionname(
- abc,
- dec)->averylongfunctionname(
- asdfadsf,
- asdfasdf,
- asdfasdf,
- ),
- func(asdfadf,
- asdfasdf
- ),
- asdasdf
- );
-
- averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf(
- abc,
- dec)->asdfasdfasdf(
- asdfadsf,
- asdfasdf,
- asdfasdf,
- ),
- func(asdfadf,
- asdfasdf),
- asdasdf
- );
-}
-
-STARTTEST
-:set cino=M1
-2kdd]]=][
-ENDTEST
-
-int main ()
-{
- if (cond1 &&
- cond2
- )
- foo;
-}
-
-STARTTEST
-:set cino=(0,ts
-2kdd=][
-ENDTEST
-
-void func(int a
-#if defined(FOO)
- , int b
- , int c
-#endif
- )
-{
-}
-
-STARTTEST
-:set cino=(0
-2kdd=][
-ENDTEST
-
-void
-func(int a
-#if defined(FOO)
- , int b
- , int c
-#endif
- )
-{
-}
-
-STARTTEST
-:set cino&
-2kdd=7][
-ENDTEST
-
-void func(void)
-{
- if(x==y)
- if(y==z)
- foo=1;
- else { bar=1;
- baz=2;
- }
- printf("Foo!\n");
-}
-
-void func1(void)
-{
- char* tab[] = {"foo", "bar",
- "baz", "quux",
- "this line used", "to be indented incorrectly"};
- foo();
-}
-
-void func2(void)
-{
- int tab[] =
- {1, 2,
- 3, 4,
- 5, 6};
-
- printf("This line used to be indented incorrectly.\n");
-}
-
-int foo[]
-#ifdef BAR
-
-= { 1, 2, 3,
- 4, 5, 6 }
-
-#endif
-;
- int baz;
-
-void func3(void)
-{
- int tab[] = {
- 1, 2,
- 3, 4,
- 5, 6};
-
-printf("Don't you dare indent this line incorrectly!\n");
-}
-
-void
-func4(a, b,
- c)
-int a;
-int b;
-int c;
-{
-}
-
-void
-func5(
- int a,
- int b)
-{
-}
-
-void
-func6(
- int a)
-{
-}
-
-STARTTEST
-:set cino&
-:set cino+=l1
-2kdd=][
-ENDTEST
-
-void func(void)
-{
- int tab[] =
- {
- 1, 2, 3,
- 4, 5, 6};
-
- printf("Indent this line correctly!\n");
-
- switch (foo)
- {
- case bar:
- printf("bar");
- break;
- case baz: {
- printf("baz");
- break;
- }
- case quux:
-printf("But don't break the indentation of this instruction\n");
-break;
- }
-}
-
-STARTTEST
-:set cino&
-2kdd=][
-ENDTEST
-
-void func(void)
-{
- cout << "a"
- << "b"
- << ") :"
- << "c";
-}
-
-STARTTEST
-:set com=s1:/*,m:*,ex:*/
-]]3jofoo();
-ENDTEST
-
-void func(void)
-{
- /*
- * This is a comment.
- */
-}
-
-STARTTEST
-:set cino&
-2kdd=][
-ENDTEST
-
-void func(void)
-{
- for (int i = 0; i < 10; ++i)
- if (i & 1) {
- foo(1);
- } else
- foo(0);
-baz();
-}
-
-STARTTEST
-:set cino=k2s,(0
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-STARTTEST
-:set cino=k2s,(s
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-STARTTEST
-:set cino=k2s,(s,U1
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-STARTTEST
-:set cino=k2s,(0,W4
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- if ( c1
- && ( c2
- || c3))
- foo;
-
- a_long_line(
- argument,
- argument);
- a_short_line(argument,
- argument);
-}
-
-STARTTEST
-:set cino=k2s,u2
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-}
-
-STARTTEST
-:set cino=k2s,(0,w1
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-STARTTEST
-:set cino=k2,(s
-2kdd3j=][
-ENDTEST
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-}
-
-STARTTEST
-:set cino=N-s
-/^NAMESPACESTART
-=/^NAMESPACEEND
-ENDTEST
-
-NAMESPACESTART
-/* valid namespaces with normal indent */
-namespace
-{
- {
- 111111111111;
-}
-}
-namespace /* test */
-{
- 11111111111111111;
-}
-namespace // test
-{
- 111111111111111111;
-}
-namespace
-{
- 111111111111111111;
-}
-namespace test
-{
- 111111111111111111;
-}
-namespace{
- 111111111111111111;
-}
-namespace test{
- 111111111111111111;
-}
-namespace {
- 111111111111111111;
-}
-namespace test {
- 111111111111111111;
-namespace test2 {
- 22222222222222222;
-}
-}
-
-/* invalid namespaces use block indent */
-namespace test test2 {
- 111111111111111111111;
-}
-namespace11111111111 {
- 111111111111;
-}
-namespace() {
- 1111111111111;
-}
-namespace()
-{
- 111111111111111111;
-}
-namespace test test2
-{
- 1111111111111111111;
-}
-namespace111111111
-{
- 111111111111111111;
-}
-NAMESPACEEND
-
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-var bar = {
-foo: {
-that: this,
-some: ok,
-},
-"bar":{
-a : 2,
-b: "123abc",
-x: 4,
-"y": 5
-}
-}
-JSEND
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-var foo = [
-1, // indent 8 more
-2,
-3
-]; // indent 8 less
-JSEND
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-function bar() {
-var foo = [
-1,
-2,
-3
-]; // indent 16 less
-}
-JSEND
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-(function($){
-
-var class_name='myclass';
-
-function private_method() {
-}
-
-var public_method={
-method: function(options,args){
-private_method();
-}
-}
-
-function init(options) {
-
-$(this).data(class_name+'_public',$.extend({},{
-foo: 'bar',
-bar: 2, // indent 8 more
-foobar: [ // indent 8 more
-1, // indent 8 more
-2, // indent 16 more
-3 // indent 16 more
-],
-callback: function(){ // indent 8 more
-return true; // indent 8 more
-} // indent 8 more
-}, options||{}));
-}
-
-$.fn[class_name]=function() {
-
-var _arguments=arguments;
-return this.each(function(){
-
-var options=$(this).data(class_name+'_public');
-if (!options) {
-init.apply(this,_arguments);
-
-} else {
-var method=public_method[_arguments[0]];
-
-if (typeof(method)!='function') {
-console.log(class_name+' has no method "'+_arguments[0]+'"');
-return false;
-}
-_arguments[0]=options;
-method.apply(this,_arguments);
-}
-});
-}
-
-})(jQuery);
-JSEND
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-function init(options) {
-$(this).data(class_name+'_public',$.extend({},{
-foo: 'bar',
-bar: 2,
-foobar: [
-1, // indent 8 more
-2, // indent 8 more
-3 // indent 8 more
-],
-callback: function(){
-return true;
-}
-}, options||{}));
-}
-JSEND
-
-STARTTEST
-:set cino=j1,J1
-/^JSSTART
-=/^JSEND
-ENDTEST
-
-JSSTART
-(function($){
-function init(options) {
-$(this).data(class_name+'_public',$.extend({},{
-foo: 'bar',
-bar: 2, // indent 8 more
-foobar: [ // indent 8 more
-1, // indent 8 more
-2, // indent 16 more
-3 // indent 16 more
-],
-callback: function(){ // indent 8 more
-return true; // indent 8 more
-} // indent 8 more
-}, options||{}));
-}
-})(jQuery);
-JSEND
-
-STARTTEST
-:g/^STARTTEST/.,/^ENDTEST/d
-:1;/start of AUTO/,$wq! test.out
-ENDTEST
diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok
deleted file mode 100644
index d73a5e1230..0000000000
--- a/src/testdir/test3.ok
+++ /dev/null
@@ -1,1820 +0,0 @@
-/* start of AUTO matically checked vim: set ts=4 : */
-{
- if (test)
- cmd1;
- cmd2;
-}
-
-{
- if (test)
- cmd1;
- else
- cmd2;
-}
-
-{
- if (test)
- {
- cmd1;
- cmd2;
- }
-}
-
-{
- if (test)
- {
- cmd1;
- else
- }
-}
-
-{
- while (this)
- if (test)
- cmd1;
- cmd2;
-}
-
-{
- while (this)
- if (test)
- cmd1;
- else
- cmd2;
-}
-
-{
- if (test)
- {
- cmd;
- }
-
- if (test)
- cmd;
-}
-
-{
- if (test) {
- cmd;
- }
-
- if (test) cmd;
-}
-
-{
- cmd1;
- for (blah)
- while (this)
- if (test)
- cmd2;
- cmd3;
-}
-
-{
- cmd1;
- for (blah)
- while (this)
- if (test)
- cmd2;
- cmd3;
-
- if (test)
- {
- cmd1;
- cmd2;
- cmd3;
- }
-}
-
-
-/* Test for 'cindent' do/while mixed with if/else: */
-
-{
- do
- if (asdf)
- asdfasd;
- while (cond);
-
- do
- if (asdf)
- while (asdf)
- asdf;
- while (asdf);
-}
-
-/* Test for 'cindent' with two ) on a continuation line */
-{
- if (asdfasdf;asldkfj asdlkfj as;ldkfj sal;d
- aal;sdkjf ( ;asldfkja;sldfk
- al;sdjfka ;slkdf ) sa;ldkjfsa dlk;)
- line up here;
-}
-
-
-/* C++ tests: */
-
-// foo() these three lines should remain in column 0
-// {
-// }
-
-/* Test for continuation and unterminated lines: */
-{
- i = 99 + 14325 +
- 21345 +
- 21345 +
- 21345 + ( 21345 +
- 21345) +
- 2345 +
- 1234;
- c = 1;
-}
-
-/*
- testje for indent with empty line
-
- here */
-
-{
- if (testing &&
- not a joke ||
- line up here)
- hay;
- if (testing &&
- (not a joke || testing
- )line up here)
- hay;
- if (testing &&
- (not a joke || testing
- line up here))
- hay;
-}
-
-
-{
- switch (c)
- {
- case xx:
- do
- if (asdf)
- do
- asdfasdf;
- while (asdf);
- else
- asdfasdf;
- while (cond);
- case yy:
- case xx:
- case zz:
- testing;
- }
-}
-
-{
- if (cond) {
- foo;
- }
- else
- {
- bar;
- }
-}
-
-{
- if (alskdfj ;alsdkfjal;skdjf (;sadlkfsa ;dlkf j;alksdfj ;alskdjf
- alsdkfj (asldk;fj
- awith cino=(0 ;lf this one goes to below the paren with ==
- ;laksjfd ;lsakdjf ;alskdf asd)
- asdfasdf;)))
- asdfasdf;
-}
-
- int
-func(a, b)
- int a;
- int c;
-{
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3)
- )
-}
-
-{
- while (asd)
- {
- if (asdf)
- if (test)
- if (that)
- {
- if (asdf)
- do
- cdasd;
- while (as
- df);
- }
- else
- if (asdf)
- asdf;
- else
- asdf;
- asdf;
- }
-}
-
-{
- s = "/*"; b = ';'
- s = "/*"; b = ';';
- a = b;
-}
-
-{
- switch (a)
- {
- case a:
- switch (t)
- {
- case 1:
- cmd;
- break;
- case 2:
- cmd;
- break;
- }
- cmd;
- break;
- case b:
- {
- int i;
- cmd;
- }
- break;
- case c: {
- int i;
- cmd;
- }
- case d: if (cond &&
- test) { /* this line doesn't work right */
- int i;
- cmd;
- }
- break;
- }
-}
-
-{
- if (!(vim_strchr(p_cpo, CPO_BUFOPTGLOB) != NULL && entering) &&
- (bp_to->b_p_initialized ||
- (!entering && vim_strchr(p_cpo, CPO_BUFOPT) != NULL)))
- return;
-label :
- asdf = asdf ?
- asdf : asdf;
- asdf = asdf ?
- asdf: asdf;
-}
-
-/* Special Comments : This function has the added complexity (compared */
-/* : to addtolist) of having to check for a detail */
-/* : texture and add that to the list first. */
-
-char *(array[100]) = {
- "testje",
- "foo",
- "bar",
-}
-
-enum soppie
-{
- yes = 0,
- no,
- maybe
-};
-
-typedef enum soppie
-{
- yes = 0,
- no,
- maybe
-};
-
-static enum
-{
- yes = 0,
- no,
- maybe
-} soppie;
-
-public static enum
-{
- yes = 0,
- no,
- maybe
-} soppie;
-
-static private enum
-{
- yes = 0,
- no,
- maybe
-} soppie;
-
-{
- int a,
- b;
-}
-
-{
- struct Type
- {
- int i;
- char *str;
- } var[] =
- {
- 0, "zero",
- 1, "one",
- 2, "two",
- 3, "three"
- };
-
- float matrix[3][3] =
- {
- {
- 0,
- 1,
- 2
- },
- {
- 3,
- 4,
- 5
- },
- {
- 6,
- 7,
- 8
- }
- };
-}
-
-{
- /* blah ( blah */
- /* where does this go? */
-
- /* blah ( blah */
- cmd;
-
- func(arg1,
- /* comment */
- arg2);
- a;
- {
- b;
- {
- c; /* Hey, NOW it indents?! */
- }
- }
-
- {
- func(arg1,
- arg2,
- arg3);
- /* Hey, what am I doing here? Is this coz of the ","? */
- }
-}
-
-main ()
-{
- if (cond)
- {
- a = b;
- }
- if (cond) {
- a = c;
- }
- if (cond)
- a = d;
- return;
-}
-
-{
- case 2: if (asdf &&
- asdfasdf)
- aasdf;
- a = 9;
- case 3: if (asdf)
- aasdf;
- a = 9;
- case 4: x = 1;
- y = 2;
-
-label: if (asdf)
- here;
-
-label: if (asdf &&
- asdfasdf)
- {
- }
-
-label: if (asdf &&
- asdfasdf) {
- there;
- }
-
-label: if (asdf &&
- asdfasdf)
- there;
-}
-
-{
- /*
- hello with ":set comments= cino=c5"
- */
-
- /*
- hello with ":set comments= cino="
- */
-}
-
-
-{
- if (a < b) {
- a = a + 1;
- } else
- a = a + 2;
-
- if (a)
- do {
- testing;
- } while (asdfasdf);
- a = b + 1;
- asdfasdf
-}
-
-class bob
-{
- int foo() {return 1;}
- int bar;
-}
-
-main()
-{
- while(1)
- if (foo)
- {
- bar;
- }
- else {
- asdf;
- }
- misplacedline;
-}
-
-{
- if (clipboard.state == SELECT_DONE
- && ((row == clipboard.start.lnum
- && col >= clipboard.start.col)
- || row > clipboard.start.lnum))
-}
-
-{
- if (1) {i += 4;}
- where_am_i;
- return 0;
-}
-
-{
- {
- } // sdf(asdf
- if (asdf)
- asd;
-}
-
-{
-label1:
-label2:
-}
-
-{
- int fooRet = foo(pBar1, false /*fKB*/,
- true /*fPTB*/, 3 /*nT*/, false /*fDF*/);
- f() {
- for ( i = 0;
- i < m;
- /* c */ i++ ) {
- a = b;
- }
- }
-}
-
-{
- f1(/*comment*/);
- f2();
-}
-
-{
- do {
- if (foo) {
- } else
- ;
- } while (foo);
- foo(); // was wrong
-}
-
-int x; // no extra indent because of the ;
-void func()
-{
-}
-
-char *tab[] = {"aaa",
- "};", /* }; */ NULL}
- int indented;
-{}
-
-char *a[] = {"aaa", "bbb",
- "ccc", NULL};
-// here
-
-char *tab[] = {"aaa",
- "xx", /* xx */}; /* asdf */
-int not_indented;
-
-{
- do {
- switch (bla)
- {
- case 1: if (foo)
- bar;
- }
- } while (boo);
- wrong;
-}
-
-int foo,
- bar;
-int foo;
-
-#if defined(foo) \
- && defined(bar)
-char * xx = "asdf\
- foo\
- bor";
-int x;
-
-char *foo = "asdf\
- asdf\
- asdf",
- *bar;
-
-void f()
-{
-#if defined(foo) \
- && defined(bar)
- char *foo = "asdf\
- asdf\
- asdf",
- *bar;
- {
- int i;
- char *foo = "asdf\
- asdf\
- asdf",
- *bar;
- }
-#endif
-}
-#endif
-
-int y; // comment
-// comment
-
-// comment
-
-{
- Constructor(int a,
- int b ) : BaseClass(a)
- {
- }
-}
-
-void foo()
-{
- char one,
- two;
- struct bla piet,
- jan;
- enum foo kees,
- jannie;
- static unsigned sdf,
- krap;
- unsigned int piet,
- jan;
- int
- kees,
- jan;
-}
-
-{
- t(int f,
- int d); // )
- d();
-}
-
-Constructor::Constructor(int a,
- int b
- ) :
- BaseClass(a,
- b,
- c),
- mMember(b),
-{
-}
-
-Constructor::Constructor(int a,
- int b ) :
- BaseClass(a)
-{
-}
-
-Constructor::Constructor(int a,
- int b ) /*x*/ : /*x*/ BaseClass(a),
- member(b)
-{
-}
-
-class CAbc :
- public BaseClass1,
- protected BaseClass2
-{
- int Test() { return FALSE; }
- int Test1() { return TRUE; }
-
- CAbc(int a, int b ) :
- BaseClass(a)
- {
- switch(xxx)
- {
- case abc:
- asdf();
- break;
-
- case 999:
- baer();
- break;
- }
- }
-
- public: // <-- this was incoreectly indented before!!
- void testfall();
- protected:
- void testfall();
-};
-
-class CAbc : public BaseClass1,
- protected BaseClass2
-{
-};
-
-static struct
-{
- int a;
- int b;
-} variable[COUNT] =
-{
- {
- 123,
- 456
- },
- {
- 123,
- 456
- }
-};
-
-static struct
-{
- int a;
- int b;
-} variable[COUNT] =
-{
- { 123, 456 },
- { 123, 456 }
-};
-
-void asdf() /* ind_maxparen may cause trouble here */
-{
- if ((0
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1
- && 1)) break;
-}
-
-foo()
-{
- a = cond ? foo() : asdf
- + asdf;
-
- a = cond ?
- foo() : asdf
- + asdf;
-}
-
-int main(void)
-{
- if (a)
- if (b)
- 2;
- else 3;
- next_line_of_code();
-}
-
-barry()
-{
- Foo::Foo (int one,
- int two)
- : something(4)
- {}
-}
-
-barry()
-{
- Foo::Foo (int one, int two)
- : something(4)
- {}
-}
-
-Constructor::Constructor(int a,
- int b
- ) :
- BaseClass(a,
- b,
- c),
- mMember(b)
-{
-}
-int main ()
-{
- if (lala)
- do
- ++(*lolo);
- while (lili
- && lele);
- lulu;
-}
-
-int main ()
-{
- switch (c)
- {
- case 'c': if (cond)
- {
- }
- }
-}
-
-main()
-{
- (void) MyFancyFuasdfadsfnction(
- argument);
-}
-
-main()
-{
- char foo[] = "/*";
- /* as
- df */
- hello
-}
-
-/* valid namespaces with normal indent */
-namespace
-{
- {
- 111111111111;
- }
-}
-namespace /* test */
-{
- 11111111111111111;
-}
-namespace // test
-{
- 111111111111111111;
-}
-namespace
-{
- 111111111111111111;
-}
-namespace test
-{
- 111111111111111111;
-}
-namespace{
- 111111111111111111;
-}
-namespace test{
- 111111111111111111;
-}
-namespace {
- 111111111111111111;
-}
-namespace test {
- 111111111111111111;
- namespace test2 {
- 22222222222222222;
- }
-}
-
-/* invalid namespaces use block indent */
-namespace test test2 {
- 111111111111111111111;
-}
-namespace11111111111 {
- 111111111111;
-}
-namespace() {
- 1111111111111;
-}
-namespace()
-{
- 111111111111111111;
-}
-namespace test test2
-{
- 1111111111111111111;
-}
-namespace111111111
-{
- 111111111111111111;
-}
-
-/* end of AUTO */
-
-
-{
-
-/* this is
- * a real serious
- * about life, the
- * universe, and the
- * rest important big
- * comment
- */
- /* insert " about life, the universe, and the rest" after "serious" */
-}
-
-
-{
- /*
- * Testing for comments, without 'cin' set
- */
-about life
-
-/*
-* what happens here?
-*/
-there
-
- /*
- the end of the comment, try inserting a line below */
-line
-
- /* how about
-hello
- this one */
-}
-
-
-{
- var = this + that + vec[0] * vec[0]
- + vec[1] * vec[1]
- + vec2[2] * vec[2];
-}
-
-
-{
- asdf asdflkajds f;
- if (tes & ting) {
- asdf asdf asdf ;
- asdfa sdf asdf;
- }
- testing1;
- if (tes & ting)
- {
- asdf asdf asdf ;
- asdfa sdf asdf;
- }
- testing2;
-}
-
-
-main ( int first_par, /*
- * Comment for
- * first par
- */
- int second_par /*
- * Comment for
- * second par
- */
- )
-{
- func( first_par, /*
- * Comment for
- * first par
- */
- second_par /*
- * Comment for
- * second par
- */
- );
-
-}
-
-
-main(void)
-{
- /* Make sure that cino=X0s is not parsed like cino=Xs. */
- if (cond)
- foo();
- else
- {
- bar();
- }
-}
-
-
-{
- do
- {
- if ()
- {
- if ()
- asdf;
- else
- asdf;
- }
- } while ();
- cmd; /* this should go under the } */
-}
-
-
-void f()
-{
- if ( k() ) {
- l();
-
- } else { /* Start (two words) end */
- m();
- }
-
- n();
-}
-
-
-void f()
- {
- if ( k() )
- {
- l();
- } else { /* Start (two words) end */
- m();
- }
- n(); /* should be under the if () */
-}
-
-
-void bar(void)
- {
- static array[2][2] =
- {
- { 1, 2 },
- { 3, 4 },
- }
-
- while (a)
- {
- foo(&a);
- }
-
- {
- int a;
- {
- a = a + 1;
- }
- }
- b = a;
- }
-
-void func(void)
- {
- a = 1;
- {
- b = 2;
- }
- c = 3;
- d = 4;
- }
-/* foo */
-
-
-a()
-{
- do {
- a = a +
- a;
- } while ( a ); /* add text under this line */
- here
- if ( a )
- a;
-}
-
-
-a()
-{
-label1:
- /* hmm */
- // comment
-label2: b();
-label3 /* post */:
-/* pre */ label4:
- f(/*com*/);
- if (/*com*/)
- cmd();
-}
-
-
-/*
- * A simple comment
- */
-
-/*
-** A different comment
-*/
-
-
-void f()
-{
-
- /*********
- A comment.
- *********/
-}
-
-
-void f()
-{
-
- /*********
- A comment.
- *********/
-}
-
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-
-void f()
-{
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-
-void f()
-{
- if ( c1
- && ( c2
- || c3))
- foo;
-}
-
-
-void f()
-{
- if ( c1
- && ( c2
- || c3))
- foo;
-}
-
-
-void f()
-{
- c = c1 && (
- c2 ||
- c3
- ) && c4;
- if (
- c1 && c2
- )
- foo;
-}
-
-
-void f()
-{
- c = c1 && (
- c2 ||
- c3
- ) && c4;
- if (
- c1 && c2
- )
- foo;
-}
-
-
-void f()
-{
- switch (x)
- {
- case 1:
- a = b;
- break;
- default:
- a = 0;
- break;
- }
-}
-
-
-void f()
-{
- invokeme(
- argu,
- ment);
- invokeme(
- argu,
- ment
- );
- invokeme(argu,
- ment
- );
-}
-
-
-void f()
-{
- statement;
- // comment 1
- // comment 2
-}
-
-
-void f()
-{
- statement;
- // comment 1
- // comment 2
-}
-
-
-class CAbc
-{
- int Test() { return FALSE; }
-
-public: // comment
- void testfall();
-protected:
- void testfall();
-};
-
-
-class Foo : public Bar
-{
- public:
- virtual void method1(void) = 0;
- virtual void method2(int arg1,
- int arg2,
- int arg3) = 0;
-};
-
-
- void
-foo()
-{
- if (a)
- {
- } else
- asdf;
-}
-
-
-{
- averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(
- asdasdf,
- func(asdf,
- asdfadsf),
- asdfasdf
- );
-
- /* those are ugly, but consequent */
-
- func()->asd(asdasdf,
- averylongfunctionname(
- abc,
- dec)->averylongfunctionname(
- asdfadsf,
- asdfasdf,
- asdfasdf,
- ),
- func(asdfadf,
- asdfasdf
- ),
- asdasdf
- );
-
- averylongfunctionnameaverylongfunctionnameavery()->asd(fasdf(
- abc,
- dec)->asdfasdfasdf(
- asdfadsf,
- asdfasdf,
- asdfasdf,
- ),
- func(asdfadf,
- asdfasdf),
- asdasdf
- );
-}
-
-
-int main ()
-{
- if (cond1 &&
- cond2
- )
- foo;
-}
-
-
-void func(int a
-#if defined(FOO)
- , int b
- , int c
-#endif
- )
-{
-}
-
-
- void
-func(int a
-#if defined(FOO)
- , int b
- , int c
-#endif
- )
-{
-}
-
-
-void func(void)
-{
- if(x==y)
- if(y==z)
- foo=1;
- else { bar=1;
- baz=2;
- }
- printf("Foo!\n");
-}
-
-void func1(void)
-{
- char* tab[] = {"foo", "bar",
- "baz", "quux",
- "this line used", "to be indented incorrectly"};
- foo();
-}
-
-void func2(void)
-{
- int tab[] =
- {1, 2,
- 3, 4,
- 5, 6};
-
- printf("This line used to be indented incorrectly.\n");
-}
-
-int foo[]
-#ifdef BAR
-
-= { 1, 2, 3,
- 4, 5, 6 }
-
-#endif
- ;
-int baz;
-
-void func3(void)
-{
- int tab[] = {
- 1, 2,
- 3, 4,
- 5, 6};
-
- printf("Don't you dare indent this line incorrectly!\n");
-}
-
- void
-func4(a, b,
- c)
- int a;
- int b;
- int c;
-{
-}
-
- void
-func5(
- int a,
- int b)
-{
-}
-
- void
-func6(
- int a)
-{
-}
-
-
-void func(void)
-{
- int tab[] =
- {
- 1, 2, 3,
- 4, 5, 6};
-
- printf("Indent this line correctly!\n");
-
- switch (foo)
- {
- case bar:
- printf("bar");
- break;
- case baz: {
- printf("baz");
- break;
- }
- case quux:
- printf("But don't break the indentation of this instruction\n");
- break;
- }
-}
-
-
-void func(void)
-{
- cout << "a"
- << "b"
- << ") :"
- << "c";
-}
-
-
-void func(void)
-{
- /*
- * This is a comment.
- */
- foo();
-}
-
-
-void func(void)
-{
- for (int i = 0; i < 10; ++i)
- if (i & 1) {
- foo(1);
- } else
- foo(0);
- baz();
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- c = c1 &&
- (
- c2 ||
- c3
- ) && c4;
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- if ( c1
- && ( c2
- || c3))
- foo;
-
- a_long_line(
- argument,
- argument);
- a_short_line(argument,
- argument);
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
- if (c123456789
- && (c22345
- || c3))
- printf("foo\n");
-
- if ( c1
- && ( c2
- || c3))
- foo;
- func( c1
- && ( c2
- || c3))
- foo;
-}
-
-
-void func(void)
-{
- if (condition1
- && condition2)
- action();
- function(argument1
- && argument2);
-
- if (c1 && (c2 ||
- c3))
- foo;
- if (c1 &&
- (c2 || c3))
- {
- }
-}
-
-
-NAMESPACESTART
-/* valid namespaces with normal indent */
-namespace
-{
-{
- 111111111111;
-}
-}
-namespace /* test */
-{
-11111111111111111;
-}
-namespace // test
-{
-111111111111111111;
-}
-namespace
-{
-111111111111111111;
-}
-namespace test
-{
-111111111111111111;
-}
-namespace{
-111111111111111111;
-}
-namespace test{
-111111111111111111;
-}
-namespace {
-111111111111111111;
-}
-namespace test {
-111111111111111111;
-namespace test2 {
-22222222222222222;
-}
-}
-
-/* invalid namespaces use block indent */
-namespace test test2 {
- 111111111111111111111;
-}
-namespace11111111111 {
- 111111111111;
-}
-namespace() {
- 1111111111111;
-}
-namespace()
-{
- 111111111111111111;
-}
-namespace test test2
-{
- 1111111111111111111;
-}
-namespace111111111
-{
- 111111111111111111;
-}
-NAMESPACEEND
-
-
-
-JSSTART
-var bar = {
- foo: {
- that: this,
- some: ok,
- },
- "bar":{
- a : 2,
- b: "123abc",
- x: 4,
- "y": 5
- }
-}
-JSEND
-
-
-JSSTART
-var foo = [
-1, // indent 8 more
- 2,
- 3
- ]; // indent 8 less
-JSEND
-
-
-JSSTART
-function bar() {
- var foo = [
- 1,
- 2,
- 3
- ]; // indent 16 less
-}
-JSEND
-
-
-JSSTART
-(function($){
-
- var class_name='myclass';
-
- function private_method() {
- }
-
- var public_method={
- method: function(options,args){
- private_method();
- }
- }
-
- function init(options) {
-
- $(this).data(class_name+'_public',$.extend({},{
- foo: 'bar',
- bar: 2, // indent 8 more
- foobar: [ // indent 8 more
- 1, // indent 8 more
- 2, // indent 16 more
- 3 // indent 16 more
- ],
- callback: function(){ // indent 8 more
- return true; // indent 8 more
- } // indent 8 more
- }, options||{}));
- }
-
- $.fn[class_name]=function() {
-
- var _arguments=arguments;
- return this.each(function(){
-
- var options=$(this).data(class_name+'_public');
- if (!options) {
- init.apply(this,_arguments);
-
- } else {
- var method=public_method[_arguments[0]];
-
- if (typeof(method)!='function') {
- console.log(class_name+' has no method "'+_arguments[0]+'"');
- return false;
- }
- _arguments[0]=options;
- method.apply(this,_arguments);
- }
- });
- }
-
-})(jQuery);
-JSEND
-
-
-JSSTART
-function init(options) {
- $(this).data(class_name+'_public',$.extend({},{
- foo: 'bar',
- bar: 2,
- foobar: [
- 1, // indent 8 more
- 2, // indent 8 more
- 3 // indent 8 more
- ],
- callback: function(){
- return true;
- }
- }, options||{}));
-}
-JSEND
-
-
-JSSTART
-(function($){
- function init(options) {
- $(this).data(class_name+'_public',$.extend({},{
- foo: 'bar',
- bar: 2, // indent 8 more
- foobar: [ // indent 8 more
- 1, // indent 8 more
- 2, // indent 16 more
- 3 // indent 16 more
- ],
- callback: function(){ // indent 8 more
- return true; // indent 8 more
- } // indent 8 more
- }, options||{}));
- }
-})(jQuery);
-JSEND
-
diff --git a/src/testdir/test30.in b/src/testdir/test30.in
deleted file mode 100644
index 4a8778d2de..0000000000
--- a/src/testdir/test30.in
+++ /dev/null
@@ -1,222 +0,0 @@
-Test for a lot of variations of the 'fileformats' option
-
-Note: This test will fail if "cat" is not available.
-
-STARTTEST
-:so small.vim
-:" first write three test files, one in each format
-:set fileformat=unix
-:set fileformats=
-:/^1/w! XX1
-:/^2/w! XX2
-:/^3/w! XX3
-:/^4/w! XX4
-:/^5/w! XX5
-:/^6/w! XX6
-:/^7/w! XX7
-:/^8/w! XX8
-:/^9/w! XX9
-:/^10/w! XX10
-:/^unix/;/eof/-1w! XXUnix
-:/^dos/;/eof/-1w! XXDos
-:set bin noeol
-:$w! XXMac
-:set nobin eol
-:bwipe XXUnix XXDos XXMac
-:" create mixed format files
-:if has("vms")
-: !copy XXUnix,XXDos XXUxDs.
-: !copy XXUnix,XXMac XXUxMac.
-: !copy XXDos,XXMac XXDosMac.
-: !copy XXUnix,XXDos,XXMac XXUxDsMc.
-:elseif has("win32")
-: !copy /b XXUnix+XXDos XXUxDs
-: !copy /b XXUnix+XXMac XXUxMac
-: !copy /b XXDos+XXMac XXDosMac
-: !copy /b XXUnix+XXDos+XXMac XXUxDsMc
-:else
-: !cat XXUnix XXDos >XXUxDs
-: !cat XXUnix XXMac >XXUxMac
-: !cat XXDos XXMac >XXDosMac
-: !cat XXUnix XXDos XXMac >XXUxDsMc
-:endif
-:"
-:" try reading and writing with 'fileformats' empty
-:set fileformat=unix
-:e! XXUnix
-:w! test.out
-:e! XXDos
-:w! XXtt01
-:e! XXMac
-:w! XXtt02
-:bwipe XXUnix XXDos XXMac
-:set fileformat=dos
-:e! XXUnix
-:w! XXtt11
-:e! XXDos
-:w! XXtt12
-:e! XXMac
-:w! XXtt13
-:bwipe XXUnix XXDos XXMac
-:set fileformat=mac
-:e! XXUnix
-:w! XXtt21
-:e! XXDos
-:w! XXtt22
-:e! XXMac
-:w! XXtt23
-:bwipe XXUnix XXDos XXMac
-:"
-:" try reading and writing with 'fileformats' set to one format
-:set fileformats=unix
-:e! XXUxDsMc
-:w! XXtt31
-:bwipe XXUxDsMc
-:set fileformats=dos
-:e! XXUxDsMc
-:w! XXtt32
-:bwipe XXUxDsMc
-:set fileformats=mac
-:e! XXUxDsMc
-:w! XXtt33
-:bwipe XXUxDsMc
-:"
-:" try reading and writing with 'fileformats' set to two formats
-:set fileformats=unix,dos
-:e! XXUxDsMc
-:w! XXtt41
-:bwipe XXUxDsMc
-:e! XXUxMac
-:w! XXtt42
-:bwipe XXUxMac
-:e! XXDosMac
-:w! XXtt43
-:bwipe XXDosMac
-:set fileformats=unix,mac
-:e! XXUxDs
-:w! XXtt51
-:bwipe XXUxDs
-:e! XXUxDsMc
-:w! XXtt52
-:bwipe XXUxDsMc
-:e! XXDosMac
-:w! XXtt53
-:bwipe XXDosMac
-:set fileformats=dos,mac
-:e! XXUxDs
-:w! XXtt61
-:bwipe XXUxDs
-:e! XXUxMac
-:w! XXtt62
-:bwipe XXUxMac
-:e! XXUxDsMc
-:w! XXtt63
-:bwipe XXUxDsMc
-:"
-:" try reading and writing with 'fileformats' set to three formats
-:set fileformats=unix,dos,mac
-:e! XXUxDsMc
-:w! XXtt71
-:bwipe XXUxDsMc
-:set fileformats=mac,dos,unix
-:e! XXUxDsMc
-:w! XXtt81
-:bwipe XXUxDsMc
-:" try with 'binary' set
-:set fileformats=mac,unix,dos
-:set binary
-:e! XXUxDsMc
-:w! XXtt91
-:bwipe XXUxDsMc
-:set fileformats=mac
-:e! XXUxDsMc
-:w! XXtt92
-:bwipe XXUxDsMc
-:set fileformats=dos
-:e! XXUxDsMc
-:w! XXtt93
-:"
-:" Append "END" to each file so that we can see what the last written char was.
-:set fileformat=unix nobin
-ggdGaEND:w >>XXtt01
-:w >>XXtt02
-:w >>XXtt11
-:w >>XXtt12
-:w >>XXtt13
-:w >>XXtt21
-:w >>XXtt22
-:w >>XXtt23
-:w >>XXtt31
-:w >>XXtt32
-:w >>XXtt33
-:w >>XXtt41
-:w >>XXtt42
-:w >>XXtt43
-:w >>XXtt51
-:w >>XXtt52
-:w >>XXtt53
-:w >>XXtt61
-:w >>XXtt62
-:w >>XXtt63
-:w >>XXtt71
-:w >>XXtt81
-:w >>XXtt91
-:w >>XXtt92
-:w >>XXtt93
-:"
-:" Concatenate the results.
-:" Make fileformat of test.out the native fileformat.
-:" Add a newline at the end.
-:set binary
-:e! test.out
-:$r XXtt01
-:$r XXtt02
-Go1:$r XXtt11
-:$r XXtt12
-:$r XXtt13
-Go2:$r XXtt21
-:$r XXtt22
-:$r XXtt23
-Go3:$r XXtt31
-:$r XXtt32
-:$r XXtt33
-Go4:$r XXtt41
-:$r XXtt42
-:$r XXtt43
-Go5:$r XXtt51
-:$r XXtt52
-:$r XXtt53
-Go6:$r XXtt61
-:$r XXtt62
-:$r XXtt63
-Go7:$r XXtt71
-Go8:$r XXtt81
-Go9:$r XXtt91
-:$r XXtt92
-:$r XXtt93
-Go10:$r XXUnix
-:set nobinary ff&
-:w
-:qa!
-ENDTEST
-
-1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-
-unix
-unix
-eof
-
-dos
-dos
-eof
-
-mac mac
diff --git a/src/testdir/test30.ok b/src/testdir/test30.ok
deleted file mode 100644
index 380ce67061..0000000000
--- a/src/testdir/test30.ok
+++ /dev/null
@@ -1,121 +0,0 @@
-unix
-unix
-dos
-dos
-END
-mac mac
-END
-1
-unix
-unix
-END
-dos
-dos
-END
-mac mac
-END
-2
-unix
-unix
- END
-dos
-dos
- END
-mac mac END
-3
-unix
-unix
-dos
-dos
-mac mac
-END
-unix
-unix
-dos
-dos
-mac mac
-END
-unix
-unix
-dos
-dos
-mac mac END
-4
-unix
-unix
-dos
-dos
-mac mac
-END
-unix
-unix
-mac mac
-END
-dos
-dos
-mac mac
-END
-5
-unix
-unix
-dos
-dos
-END
-unix
-unix
-dos
-dos
-mac mac
-END
-dos
-dos
-mac mac END
-6
-unix
-unix
-dos
-dos
-END
-unix
-unix
-mac mac
-END
-unix
-unix
-dos
-dos
-mac mac
-END
-7
-unix
-unix
-dos
-dos
-mac mac
-END
-8
-unix
-unix
-dos
-dos
-mac mac
-END
-9
-unix
-unix
-dos
-dos
-mac mac END
-unix
-unix
-dos
-dos
-mac mac END
-unix
-unix
-dos
-dos
-mac mac END
-10
-unix
-unix
diff --git a/src/testdir/test31.in b/src/testdir/test31.in
deleted file mode 100644
index 7dc2334781..0000000000
--- a/src/testdir/test31.in
+++ /dev/null
@@ -1,75 +0,0 @@
-Test for commands that close windows and/or buffers:
-:quit
-:close
-:hide
-:only
-:sall
-:all
-:ball
-:buf
-:edit
-
-STARTTEST
-:so tiny.vim
-GA 1:$w! Xtest1
-$r2:$w! Xtest2
-$r3:$w! Xtest3
-:n! Xtest1 Xtest2
-A 1:set hidden
-:" test for working :n when hidden set; write "testtext 2"
-:n
-:w! test.out
-:" test for failing :rew when hidden not set; write "testtext 2 2"
-:set nohidden
-A 2:rew
-:w >>test.out
-:" test for working :rew when hidden set; write "testtext 1 1"
-:set hidden
-:rew
-:w >>test.out
-:" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"
-:set nohidden
-A 1:sp
-:n Xtest2 Xtest3
-:all
-:1wincmd w
-:w >>test.out
-:" test abandoning changed buffer, should be unloaded even when 'hidden' set
-:" write "testtext 2 2" twice
-:set hidden
-A 1:q!
-:w >>test.out
-:unhide
-:w >>test.out
-:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
-:set nohidden
-A 2:hide
-:w >>test.out
-:" test ":edit" failing in modified buffer when 'hidden' not set
-:" write "testtext 3 3"
-A 3:e Xtest1
-:w >>test.out
-:" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1"
-:set hidden
-:e Xtest1
-:w >>test.out
-:" test ":close" not hiding when 'hidden' not set in modified buffer;
-:" write "testtext 3 3 3"
-:sp Xtest3
-:set nohidden
-A 3:close
-:w >>test.out
-:" test ":close!" does hide when 'hidden' not set in modified buffer;
-:" write "testtext 1"
-A 3:close!
-:w >>test.out
-:set nohidden
-:" test ":all!" hides changed buffer; write "testtext 2 2 2"
-:sp Xtest4
-GA 4:all!
-:1wincmd w
-:w >>test.out
-:qa!
-ENDTEST
-
-testtext
diff --git a/src/testdir/test31.ok b/src/testdir/test31.ok
deleted file mode 100644
index 185bdc768e..0000000000
--- a/src/testdir/test31.ok
+++ /dev/null
@@ -1,12 +0,0 @@
-testtext 2
-testtext 2 2
-testtext 1 1
-testtext 1 1 1
-testtext 2 2
-testtext 2 2
-testtext 3
-testtext 3 3
-testtext 1
-testtext 3 3 3
-testtext 1
-testtext 2 2 2
diff --git a/src/testdir/test32.in b/src/testdir/test32.in
deleted file mode 100644
index 6b399fa6c6..0000000000
--- a/src/testdir/test32.in
+++ /dev/null
@@ -1,60 +0,0 @@
-Test for insert expansion
-
-:se cpt=.,w
-* add-expands (word from next line) from other window
-* add-expands (current buffer first)
-* Local expansion, ends in an empty line (unless it becomes a global expansion)
-* starts Local and switches to global add-expansion
-:se cpt=.,w,i
-* i-add-expands and switches to local
-* add-expands lines (it would end in an empty line if it didn't ignored it self)
-:se cpt=kXtestfile
-* checks k-expansion, and file expansion (use Xtest11 instead of test11,
-* because TEST11.OUT may match first on DOS)
-:se cpt=w
-* checks make_cyclic in other window
-:se cpt=u nohid
-* checks unloaded buffer expansion
-* checks adding mode abortion
-:se cpt=t,d
-* tag expansion, define add-expansion interrupted
-* t-expansion
-
-STARTTEST
-:so small.vim
-:se nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&
-:se cot=
-nO#include "Xtestfile"
-ru
-O
-
-
-:se cpt=.,w,i
-kOM
-  
-:se cpt=kXtestfile
-:w Xtest11.one
-:w Xtest11.two
-OIXA
-:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
-:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
-OXddk
-:se cpt=w
-OST
-:se cpt=u nohid
-oOEN
-unl
-:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
-O
-a
-:wq! test.out
-ENDTEST
-
-start of testfile
-run1
-run2
-end of testfile
-
-test11 36Gepeto /Tag/
-asd test11file 36G
-Makefile to run
diff --git a/src/testdir/test32.ok b/src/testdir/test32.ok
deleted file mode 100644
index afc4463fac..0000000000
--- a/src/testdir/test32.ok
+++ /dev/null
@@ -1,15 +0,0 @@
-#include "Xtestfile"
-run1 run3
-run3 run3
-
-Makefile to run3
-Makefile to run3
-Makefile to run3
-Xtest11.two
-STARTTEST
-ENDTEST
-unless
-test11file 36Gepeto /Tag/ asd
-asd
-run1 run2
-
diff --git a/src/testdir/test33.in b/src/testdir/test33.in
deleted file mode 100644
index 5644760402..0000000000
--- a/src/testdir/test33.in
+++ /dev/null
@@ -1,34 +0,0 @@
-Test for 'lisp'
-If the lisp feature is not enabled, this will fail!
-
-STARTTEST
-:so small.vim
-:set lisp
-/^(defun
-=G:/^(defun/,$w! test.out
-:q!
-ENDTEST
-
-(defun html-file (base)
-(format nil "~(~A~).html" base))
-
-(defmacro page (name title &rest body)
-(let ((ti (gensym)))
-`(with-open-file (*standard-output*
-(html-file ,name)
-:direction :output
-:if-exists :supersede)
-(let ((,ti ,title))
-(as title ,ti)
-(with center
-(as h2 (string-upcase ,ti)))
-(brs 3)
-,@body))))
-
-;;; Utilities for generating links
-
-(defmacro with-link (dest &rest body)
-`(progn
-(format t "<a href=\"~A\">" (html-file ,dest))
-,@body
-(princ "</a>")))
diff --git a/src/testdir/test33.ok b/src/testdir/test33.ok
deleted file mode 100644
index cd1d87a14b..0000000000
--- a/src/testdir/test33.ok
+++ /dev/null
@@ -1,23 +0,0 @@
-(defun html-file (base)
- (format nil "~(~A~).html" base))
-
-(defmacro page (name title &rest body)
- (let ((ti (gensym)))
- `(with-open-file (*standard-output*
- (html-file ,name)
- :direction :output
- :if-exists :supersede)
- (let ((,ti ,title))
- (as title ,ti)
- (with center
- (as h2 (string-upcase ,ti)))
- (brs 3)
- ,@body))))
-
-;;; Utilities for generating links
-
-(defmacro with-link (dest &rest body)
- `(progn
- (format t "<a href=\"~A\">" (html-file ,dest))
- ,@body
- (princ "</a>")))
diff --git a/src/testdir/test34.in b/src/testdir/test34.in
deleted file mode 100644
index 71ee5f63b2..0000000000
--- a/src/testdir/test34.in
+++ /dev/null
@@ -1,87 +0,0 @@
-Test for user functions.
-Also test an <expr> mapping calling a function.
-Also test that a builtin function cannot be replaced.
-Also test for regression when calling arbitrary expression.
-
-STARTTEST
-:so small.vim
-:function Table(title, ...)
-: let ret = a:title
-: let idx = 1
-: while idx <= a:0
-: exe "let ret = ret . a:" . idx
-: let idx = idx + 1
-: endwhile
-: return ret
-:endfunction
-:function Compute(n1, n2, divname)
-: if a:n2 == 0
-: return "fail"
-: endif
-: exe "let g:" . a:divname . " = ". a:n1 / a:n2
-: return "ok"
-:endfunction
-:func Expr1()
-: normal! v
-: return "111"
-:endfunc
-:func Expr2()
-: call search('XX', 'b')
-: return "222"
-:endfunc
-:func ListItem()
-: let g:counter += 1
-: return g:counter . '. '
-:endfunc
-:func ListReset()
-: let g:counter = 0
-: return ''
-:endfunc
-:func FuncWithRef(a)
-: unlet g:FuncRef
-: return a:a
-:endfunc
-:let g:FuncRef=function("FuncWithRef")
-:let counter = 0
-:inoremap <expr> ( ListItem()
-:inoremap <expr> [ ListReset()
-:imap <expr> + Expr1()
-:imap <expr> * Expr2()
-:let retval = "nop"
-/^here
-C=Table("xxx", 4, "asdf")
- =Compute(45, 0, "retval")
- =retval
- =Compute(45, 5, "retval")
- =retval
- =g:FuncRef(333)
-
-XX+-XX
----*---
-(one
-(two
-[(one again:call append(line('$'), max([1, 2, 3]))
-:call extend(g:, {'max': function('min')})
-:call append(line('$'), max([1, 2, 3]))
-:try
-: " Regression: the first line below used to throw ?E110: Missing ')'?
-: " Second is here just to prove that this line is correct when not skipping
-: " rhs of &&.
-: $put =(0&&(function('tr'))(1, 2, 3))
-: $put =(1&&(function('tr'))(1, 2, 3))
-:catch
-: $put ='!!! Unexpected exception:'
-: $put =v:exception
-:endtry
-:$-9,$w! test.out
-:delfunc Table
-:delfunc Compute
-:delfunc Expr1
-:delfunc Expr2
-:delfunc ListItem
-:delfunc ListReset
-:unlet retval counter
-:q!
-ENDTEST
-
-here
diff --git a/src/testdir/test34.ok b/src/testdir/test34.ok
deleted file mode 100644
index 97995de80e..0000000000
--- a/src/testdir/test34.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-xxx4asdf fail nop ok 9 333
-XX111-XX
----222---
-1. one
-2. two
-1. one again
-3
-3
-0
-1
diff --git a/src/testdir/test35.in b/src/testdir/test35.in
deleted file mode 100644
index ba97911a1d..0000000000
--- a/src/testdir/test35.in
+++ /dev/null
@@ -1,21 +0,0 @@
-Test Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,
-and octal numbers.
-
-STARTTEST
-/^start-here
-:set nrformats=octal,hex
-j102ll64128$
-:set nrformats=octal
-0102l2w65129blx6lD
-:set nrformats=hex
-0101l257Txldt   
-:set nrformats=
-0200l100w78k
-:$-3,$wq! test.out
-ENDTEST
-
-start-here
-100 0x100 077 0
-100 0x100 077
-100 0x100 077 0xfF 0xFf
-100 0x100 077
diff --git a/src/testdir/test35.ok b/src/testdir/test35.ok
deleted file mode 100644
index 093ad958ac..0000000000
--- a/src/testdir/test35.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-0 0x0ff 0000 -1
-0 1x100 0777777
--1 0x0 078 0xFE 0xfe
--100 -100x100 000
diff --git a/src/testdir/test36.in b/src/testdir/test36.in
deleted file mode 100644
index 8cdb5262bd..0000000000
--- a/src/testdir/test36.in
+++ /dev/null
@@ -1,105 +0,0 @@
-Test character classes in regexp using regexpengine 0, 1, 2.
-
-STARTTEST
-/^start-here/+1
-Y:s/\%#=0\d//g
-p:s/\%#=1\d//g
-p:s/\%#=2\d//g
-p:s/\%#=0[0-9]//g
-p:s/\%#=1[0-9]//g
-p:s/\%#=2[0-9]//g
-p:s/\%#=0\D//g
-p:s/\%#=1\D//g
-p:s/\%#=2\D//g
-p:s/\%#=0[^0-9]//g
-p:s/\%#=1[^0-9]//g
-p:s/\%#=2[^0-9]//g
-p:s/\%#=0\o//g
-p:s/\%#=1\o//g
-p:s/\%#=2\o//g
-p:s/\%#=0[0-7]//g
-p:s/\%#=1[0-7]//g
-p:s/\%#=2[0-7]//g
-p:s/\%#=0\O//g
-p:s/\%#=1\O//g
-p:s/\%#=2\O//g
-p:s/\%#=0[^0-7]//g
-p:s/\%#=1[^0-7]//g
-p:s/\%#=2[^0-7]//g
-p:s/\%#=0\x//g
-p:s/\%#=1\x//g
-p:s/\%#=2\x//g
-p:s/\%#=0[0-9A-Fa-f]//g
-p:s/\%#=1[0-9A-Fa-f]//g
-p:s/\%#=2[0-9A-Fa-f]//g
-p:s/\%#=0\X//g
-p:s/\%#=1\X//g
-p:s/\%#=2\X//g
-p:s/\%#=0[^0-9A-Fa-f]//g
-p:s/\%#=1[^0-9A-Fa-f]//g
-p:s/\%#=2[^0-9A-Fa-f]//g
-p:s/\%#=0\w//g
-p:s/\%#=1\w//g
-p:s/\%#=2\w//g
-p:s/\%#=0[0-9A-Za-z_]//g
-p:s/\%#=1[0-9A-Za-z_]//g
-p:s/\%#=2[0-9A-Za-z_]//g
-p:s/\%#=0\W//g
-p:s/\%#=1\W//g
-p:s/\%#=2\W//g
-p:s/\%#=0[^0-9A-Za-z_]//g
-p:s/\%#=1[^0-9A-Za-z_]//g
-p:s/\%#=2[^0-9A-Za-z_]//g
-p:s/\%#=0\h//g
-p:s/\%#=1\h//g
-p:s/\%#=2\h//g
-p:s/\%#=0[A-Za-z_]//g
-p:s/\%#=1[A-Za-z_]//g
-p:s/\%#=2[A-Za-z_]//g
-p:s/\%#=0\H//g
-p:s/\%#=1\H//g
-p:s/\%#=2\H//g
-p:s/\%#=0[^A-Za-z_]//g
-p:s/\%#=1[^A-Za-z_]//g
-p:s/\%#=2[^A-Za-z_]//g
-p:s/\%#=0\a//g
-p:s/\%#=1\a//g
-p:s/\%#=2\a//g
-p:s/\%#=0[A-Za-z]//g
-p:s/\%#=1[A-Za-z]//g
-p:s/\%#=2[A-Za-z]//g
-p:s/\%#=0\A//g
-p:s/\%#=1\A//g
-p:s/\%#=2\A//g
-p:s/\%#=0[^A-Za-z]//g
-p:s/\%#=1[^A-Za-z]//g
-p:s/\%#=2[^A-Za-z]//g
-p:s/\%#=0\l//g
-p:s/\%#=1\l//g
-p:s/\%#=2\l//g
-p:s/\%#=0[a-z]//g
-p:s/\%#=1[a-z]//g
-p:s/\%#=2[a-z]//g
-p:s/\%#=0\L//g
-p:s/\%#=1\L//g
-p:s/\%#=2\L//g
-p:s/\%#=0[^a-z]//g
-p:s/\%#=1[^a-z]//g
-p:s/\%#=2[^a-z]//g
-p:s/\%#=0\u//g
-p:s/\%#=1\u//g
-p:s/\%#=2\u//g
-p:s/\%#=0[A-Z]//g
-p:s/\%#=1[A-Z]//g
-p:s/\%#=2[A-Z]//g
-p:s/\%#=0\U//g
-p:s/\%#=1\U//g
-p:s/\%#=2\U//g
-p:s/\%#=0[^A-Z]//g
-p:s/\%#=1[^A-Z]//g
-p:s/\%#=2[^A-Z]//g
-:/^start-here/+1,$wq! test.out
-ENDTEST
-
-start-here
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
diff --git a/src/testdir/test36.ok b/src/testdir/test36.ok
deleted file mode 100644
index f72a74b2b7..0000000000
--- a/src/testdir/test36.ok
+++ /dev/null
@@ -1,96 +0,0 @@
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
-0123456789
-0123456789
-0123456789
-0123456789
-0123456789
-0123456789
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~
-01234567
-01234567
-01234567
-01234567
-01234567
-01234567
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
- !"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~
-0123456789ABCDEFabcdef
-0123456789ABCDEFabcdef
-0123456789ABCDEFabcdef
-0123456789ABCDEFabcdef
-0123456789ABCDEFabcdef
-0123456789ABCDEFabcdef
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./:;<=>?@[\]^`{|}~
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
-0123456789ABCDEFGHIXYZ_abcdefghiwxyz
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~
-ABCDEFGHIXYZ_abcdefghiwxyz
-ABCDEFGHIXYZ_abcdefghiwxyz
-ABCDEFGHIXYZ_abcdefghiwxyz
-ABCDEFGHIXYZ_abcdefghiwxyz
-ABCDEFGHIXYZ_abcdefghiwxyz
-ABCDEFGHIXYZ_abcdefghiwxyz
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~
-ABCDEFGHIXYZabcdefghiwxyz
-ABCDEFGHIXYZabcdefghiwxyz
-ABCDEFGHIXYZabcdefghiwxyz
-ABCDEFGHIXYZabcdefghiwxyz
-ABCDEFGHIXYZabcdefghiwxyz
-ABCDEFGHIXYZabcdefghiwxyz
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~
-abcdefghiwxyz
-abcdefghiwxyz
-abcdefghiwxyz
-abcdefghiwxyz
-abcdefghiwxyz
-abcdefghiwxyz
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
- !"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~
-ABCDEFGHIXYZ
-ABCDEFGHIXYZ
-ABCDEFGHIXYZ
-ABCDEFGHIXYZ
-ABCDEFGHIXYZ
-ABCDEFGHIXYZ
diff --git a/src/testdir/test37.in b/src/testdir/test37.in
deleted file mode 100644
index 8ca1125793..0000000000
--- a/src/testdir/test37.in
+++ /dev/null
@@ -1,116 +0,0 @@
-Test for 'scrollbind'. <eralston@computer.org> Do not add a line below!
-STARTTEST
-:so small.vim
-:set noscrollbind
-:set scrollopt=ver,jump
-:set scrolloff=2
-:set nowrap
-:set noequalalways
-:set splitbelow
-:" TEST using two windows open to one buffer, one extra empty window
-:split
-:new
-t:
-:resize 8
-/^start of window 1$/
-zt:
-:set scrollbind
-j:
-:resize 7
-/^start of window 2$/
-zt:
-:set scrollbind
-:" -- start of tests --
-:" TEST scrolling down
-L5jHyybpr0tHyybpr1tL6jHyybpr2kHyybpr3:
-:" TEST scrolling up
-tH4kjHtHyybpr4kHyybpr5k3ktHjHyybpr6tHyybpr7:
-:" TEST horizontal scrolling
-:set scrollopt+=hor
-gg"zyyG"zpGt015zly$bp"zpGky$bp"zpG:
-k10jH7zhg0y$bp"zpGtHg0y$bp"zpG:
-:set scrollopt-=hor
-:" ****** tests using two different buffers *****
-tj:
-:close
-t:
-:set noscrollbind
-:/^start of window 2$/,/^end of window 2$/y
-:new
-tj4"zpGp:
-t/^start of window 1$/
-zt:
-:set scrollbind
-j:
-/^start of window 2$/
-zt:
-:set scrollbind
-:" -- start of tests --
-:" TEST scrolling down
-L5jHyybpr0tHyybpr1tL6jHyybpr2kHyybpr3:
-:" TEST scrolling up
-tH4kjHtHyybpr4kHyybpr5k3ktHjHyybpr6tHyybpr7:
-:" TEST horizontal scrolling
-:set scrollopt+=hor
-gg"zyyG"zpGt015zly$bp"zpGky$bp"zpG:
-k10jH7zhg0y$bp"zpGtHg0y$bp"zpG:
-:set scrollopt-=hor
-:" TEST syncbind
-t:set noscb
-ggLj:set noscb
-ggL:set scb
-t:set scb
-GjG:syncbind
-HktHjHyybptyybp:
-t:set noscb
-ggLj:set noscb
-ggL:set scb
-t:set scb
-tGjGt:syncbind
-HkjHtHyybptjyybp:
-tH3kjHtHyybptjyybp:
-:" ***** done with tests *****
-:w! test.out " Write contents of this file
-:qa!
-ENDTEST
-
-
-start of window 1
-. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
-. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
-. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
-. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
-. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
-. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
-. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
-. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
-. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
-. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
-. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
-. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
-. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
-. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
-. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
-end of window 1
-
-
-start of window 2
-. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
-. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
-. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
-. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
-. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
-. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
-. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
-. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
-. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
-. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
-. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
-. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
-. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
-. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
-. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
-. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
-end of window 2
-
-end of test37.in (please don't delete this line)
diff --git a/src/testdir/test37.ok b/src/testdir/test37.ok
deleted file mode 100644
index d0b74853b3..0000000000
--- a/src/testdir/test37.ok
+++ /dev/null
@@ -1,33 +0,0 @@
-
-0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
-1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
-2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
-3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
-4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
-5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
-6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
-7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
-56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
-UTSRQPONMLKJIHGREDCBA9876543210 02
-. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
-. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
-
-0 line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
-1 line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
-2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
-3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
-4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
-5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
-6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
-7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
-56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
-UTSRQPONMLKJIHGREDCBA9876543210 02
-. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
-. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
-
-. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
-:set scrollbind
-:set scrollbind
-. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
-j:
-. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
diff --git a/src/testdir/test38.in b/src/testdir/test38.in
deleted file mode 100644
index 3e0236251b..0000000000
--- a/src/testdir/test38.in
+++ /dev/null
@@ -1,35 +0,0 @@
-
-Test Virtual replace mode.
-
-STARTTEST
-:so small.vim
-:" make sure that backspace works, no matter what termcap is used
-:set t_kD=x7f t_kb=x08
-ggdGa
-abcdefghi
-jk lmn
- opq rst
-uvwxyz
-gg:set ai
-:set bs=2
-gR0 1
-A
-BCDEFGHIJ
- KL
-MNO
-PQRG:ka
-o0
-abcdefghi
-jk lmn
- opq rst
-uvwxyz
-'ajgR0 1
-A
-BCDEFGHIJ
- KL
-MNO
-PQR:$
-iab cdefghi jkl0gRAB......CDEFGHI.Jo:
-iabcdefghijklmnopqrst0gRAB IJKLMNO QR:wq! test.out
-ENDTEST
-
diff --git a/src/testdir/test38.ok b/src/testdir/test38.ok
deleted file mode 100644
index e10209667b..0000000000
--- a/src/testdir/test38.ok
+++ /dev/null
@@ -1,13 +0,0 @@
- 1
- A
- BCDEFGHIJ
- KL
- MNO
- PQR
- 1
-abcdefghi
-jk lmn
- opq rst
-uvwxyz
-AB......CDEFGHI.Jkl
-AB IJKLMNO QRst
diff --git a/src/testdir/test39.in b/src/testdir/test39.in
deleted file mode 100644
index c1e1cc49a6..0000000000
--- a/src/testdir/test39.in
+++ /dev/null
@@ -1,93 +0,0 @@
-
-Test Visual block mode commands
-And test "U" in Visual mode, also on German sharp S.
-
-STARTTEST
-:so small.vim
-:so mbyte.vim
-:" This only works when 'encoding' is "latin1", don't depend on the environment
-:set enc=latin1
-/^abcde
-:" Test shift-right of a block
-jlllljj>wlljlll>
-:" Test shift-left of a block
-G$hhhhkk<
-:" Test block-insert
-GklkkkIxyz
-:" Test block-replace
-Gllllkkklllrq
-:" Test block-change
-G$khhhhhkkcmno
-:$-4,$w! test.out
-:" Test block-insert using cursor keys for movement
-/^aaaa/
-:exe ":norm! l\<C-V>jjjlllI\<Right>\<Right> \<Esc>"
-:/^aa/,/^$/w >> test.out
-:" Test for Visual block was created with the last <C-v>$
-/^A23$/
-:exe ":norm! l\<C-V>j$Aab\<Esc>"
-:.,/^$/w >> test.out
-:" Test for Visual block was created with the middle <C-v>$ (1)
-/^B23$/
-:exe ":norm! l\<C-V>j$hAab\<Esc>"
-:.,/^$/w >> test.out
-:" Test for Visual block was created with the middle <C-v>$ (2)
-/^C23$/
-:exe ":norm! l\<C-V>j$hhAab\<Esc>"
-:.,/^$/w >> test.out
-:" Test for Visual block insert when virtualedit=all
-:set ve=all
-:/\t\tline
-:exe ":norm! 07l\<C-V>jjIx\<Esc>"
-:set ve=
-:.,/^$/w >> test.out
-:" gUe must uppercase a whole word, also when changes to SS
-Gothe youtueuu endYpk0wgUe
-:" gUfx must uppercase until x, inclusive.
-O- youtuexu -0fogUfx
-:" VU must uppercase a whole line
-YpkVU
-:" same, when it's the last line in the buffer
-YPGi111VUddP
-:" Uppercase two lines
-Oblah di
-doh dutVkUj
-:" Uppercase part of two lines
-ddppi333k0i222fyllvjfuUk
-:" visual replace using Enter or NL
-G3o1234567892k05l2jr G3o987652k02l2jr
-G3o1234567892k05l2jr
-G3o987652k02l2jr
-:"
-:" Test cursor position. When ve=block and Visual block mode and $gj
-:set ve=block
-:exe ":norm! 2k\<C-V>$gj\<Esc>"
-:let cpos=getpos("'>")
-:$put ='col:'.cpos[2].' off:'.cpos[3]
-:/^the/,$w >> test.out
-:qa!
-ENDTEST
-
- line1
- line2
- line3
-
-aaaaaa
-bbbbbb
-cccccc
-dddddd
-
-A23
-4567
-
-B23
-4567
-
-C23
-4567
-
-abcdefghijklm
-abcdefghijklm
-abcdefghijklm
-abcdefghijklm
-abcdefghijklm
diff --git a/src/testdir/test39.ok b/src/testdir/test39.ok
deleted file mode 100644
index ef7a2c6442..0000000000
--- a/src/testdir/test39.ok
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test4.in b/src/testdir/test4.in
deleted file mode 100644
index 4aa2fe5a86..0000000000
--- a/src/testdir/test4.in
+++ /dev/null
@@ -1,31 +0,0 @@
-Test for autocommand that changes current buffer on BufEnter event.
-Check if modelines are interpreted for the correct buffer.
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo
-:au BufEnter Xxx brew
-/start of
-:.,/end of/w! Xxx " write test file Xxx
-:set ai modeline modelines=3
-:sp Xxx " split to Xxx, autocmd will do :brew
-G?this is a
-othis should be auto-indented
-: " Append text with autoindent to this file
-:au! BufEnter Xxx
-:buf Xxx " go to Xxx, no autocmd anymore
-G?this is a
-othis should be in column 1:wq " append text without autoindent to Xxx
-G:r Xxx " include Xxx in the current file
-:?startstart?,$w! test.out
-:qa!
-ENDTEST
-
-startstart
-start of test file Xxx
-vim: set noai :
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test4.ok b/src/testdir/test4.ok
deleted file mode 100644
index dffecda4d2..0000000000
--- a/src/testdir/test4.ok
+++ /dev/null
@@ -1,17 +0,0 @@
-startstart
-start of test file Xxx
-vim: set noai :
- this is a test
- this is a test
- this is a test
- this is a test
- this should be auto-indented
-end of test file Xxx
-start of test file Xxx
-vim: set noai :
- this is a test
- this is a test
- this is a test
- this is a test
-this should be in column 1
-end of test file Xxx
diff --git a/src/testdir/test40.in b/src/testdir/test40.in
deleted file mode 100644
index d92a18f3d0..0000000000
--- a/src/testdir/test40.in
+++ /dev/null
@@ -1,63 +0,0 @@
-Test for "*Cmd" autocommands
-
-STARTTEST
-:so small.vim
-:/^start/,$w! Xxx " write lines below to Xxx
-:au BufReadCmd XtestA 0r Xxx|$del
-:e XtestA " will read text of Xxd instead
-:au BufWriteCmd XtestA call append(line("$"), "write")
-:w " will append a line to the file
-:r XtestA " should not read anything
-: " now we have:
-: " 1 start of Xxx
-: " 2 test40
-: " 3 end of Xxx
-: " 4 write
-:au FileReadCmd XtestB '[r Xxx
-:2r XtestB " will read Xxx below line 2 instead
-: " 1 start of Xxx
-: " 2 test40
-: " 3 start of Xxx
-: " 4 test40
-: " 5 end of Xxx
-: " 6 end of Xxx
-: " 7 write
-:au FileWriteCmd XtestC '[,']copy $
-4GA1
-:4,5w XtestC " will copy lines 4 and 5 to the end
-:r XtestC " should not read anything
-: " 1 start of Xxx
-: " 2 test40
-: " 3 start of Xxx
-: " 4 test401
-: " 5 end of Xxx
-: " 6 end of Xxx
-: " 7 write
-: " 8 test401
-: " 9 end of Xxx
-:au FILEAppendCmd XtestD '[,']w! test.out
-:w >>XtestD " will write all lines to test.out
-:$r XtestD " should not read anything
-:$w >>test.out " append "end of Xxx" to test.out
-:au BufReadCmd XtestE 0r test.out|$del
-:sp XtestE " split window with test.out
-5Goasdf:"
-:au BufWriteCmd XtestE w! test.out
-:wall " will write other window to test.out
-: " 1 start of Xxx
-: " 2 test40
-: " 3 start of Xxx
-: " 4 test401
-: " 5 end of Xxx
-: " 6 asdf
-: " 7 end of Xxx
-: " 8 write
-: " 9 test401
-: " 10 end of Xxx
-: " 11 end of Xxx
-:qa!
-ENDTEST
-
-start of Xxx
- test40
-end of Xxx
diff --git a/src/testdir/test40.ok b/src/testdir/test40.ok
deleted file mode 100644
index b6501394f9..0000000000
--- a/src/testdir/test40.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-start of Xxx
- test40
-start of Xxx
- test401
-end of Xxx
-asdf
-end of Xxx
-write
- test401
-end of Xxx
-end of Xxx
diff --git a/src/testdir/test41.in b/src/testdir/test41.in
deleted file mode 100644
index 2d294cae09..0000000000
--- a/src/testdir/test41.in
+++ /dev/null
@@ -1,24 +0,0 @@
-Test for writing and reading a file of over 100 Kbyte
-
-1 line: "This is the start"
-3001 lines: "This is the leader"
-1 line: "This is the middle"
-3001 lines: "This is the trailer"
-1 line: "This is the end"
-
-STARTTEST
-:%d
-aThis is the start
-This is the leader
-This is the middle
-This is the trailer
-This is the endkY3000p2GY3000p
-:w! Xtest
-:%d
-:e! Xtest
-:.w! test.out
-3003G:.w >>test.out
-6005G:.w >>test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test41.ok b/src/testdir/test41.ok
deleted file mode 100644
index 988e5f24b4..0000000000
--- a/src/testdir/test41.ok
+++ /dev/null
@@ -1,3 +0,0 @@
-This is the start
-This is the middle
-This is the end
diff --git a/src/testdir/test42.in b/src/testdir/test42.in
deleted file mode 100644
index c35569a76c..0000000000
--- a/src/testdir/test42.in
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test42.ok b/src/testdir/test42.ok
deleted file mode 100644
index 183430d71c..0000000000
--- a/src/testdir/test42.ok
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test43.in b/src/testdir/test43.in
deleted file mode 100644
index 7c545073da..0000000000
--- a/src/testdir/test43.in
+++ /dev/null
@@ -1,34 +0,0 @@
-Tests for regexp with various magic settings.
-
-STARTTEST
-:so small.vim
-:set nocompatible viminfo+=nviminfo
-/^1
-/a*b\{2}c\+/e
-x/\Md\*e\{2}f\+/e
-x:set nomagic
-/g\*h\{2}i\+/e
-x/\mj*k\{2}l\+/e
-x/\vm*n{2}o+/e
-x/\V^aa$
-x:set magic
-/\v(a)(b)\2\1\1/e
-x/\V[ab]\(\[xy]\)\1
-x:$
-:set undolevels=100
-dv?bar?
-Yup:"
-:?^1?,$w! test.out
-:qa!
-ENDTEST
-
-1 a aa abb abbccc
-2 d dd dee deefff
-3 g gg ghh ghhiii
-4 j jj jkk jkklll
-5 m mm mnn mnnooo
-6 x ^aa$ x
-7 (a)(b) abbaa
-8 axx [ab]xx
-9 foobar
-
diff --git a/src/testdir/test43.ok b/src/testdir/test43.ok
deleted file mode 100644
index 0b37a6a61e..0000000000
--- a/src/testdir/test43.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-1 a aa abb abbcc
-2 d dd dee deeff
-3 g gg ghh ghhii
-4 j jj jkk jkkll
-5 m mm mnn mnnoo
-6 x aa$ x
-7 (a)(b) abba
-8 axx ab]xx
-9 foobar
-9 foo
-
diff --git a/src/testdir/test44.in b/src/testdir/test44.in
deleted file mode 100644
index 87de1b95a4..0000000000
--- a/src/testdir/test44.in
+++ /dev/null
@@ -1,68 +0,0 @@
-Tests for regexp with multi-byte encoding and various magic settings.
-Test matchstr() with a count and multi-byte chars.
-See test99 for exactly the same test with re=2.
-
-STARTTEST
-:so mbyte.vim
-:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
-:set re=1
-/^1
-/a*b\{2}c\+/e
-x/\Md\*e\{2}f\+/e
-x:set nomagic
-/g\*h\{2}i\+/e
-x/\mj*k\{2}l\+/e
-x/\vm*n{2}o+/e
-x/\V^aa$
-x:set magic
-/\v(a)(b)\2\1\1/e
-x/\V[ab]\(\[xy]\)\1
-x:" Now search for multi-byte without composing char
-/ม
-x:" Now search for multi-byte with composing char
-/ม่
-x:" find word by change of word class
-/ち\<カヨ\>は
-x:" Test \%u, [\u] and friends
-/\%u20ac
-x/[\u4f7f\u5929]\+
-x/\%U12345678
-x/[\U1234abcd\u1234\uabcd]
-x/\%d21879b
-x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
-x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
-x:" Test backwards search from a multi-byte char
-/x
-x?.
-x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
-:@w
-:?^1?,$w! test.out
-:e! test.out
-G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב
-:put =matchstr(\"אבגד\", \"..\", 0, 2) " בג
-:put =matchstr(\"אבגד\", \".\", 0, 0) " א
-:put =matchstr(\"אבגד\", \".\", 4, -1) " ג
-:w!
-:qa!
-ENDTEST
-
-1 a aa abb abbccc
-2 d dd dee deefff
-3 g gg ghh ghhiii
-4 j jj jkk jkklll
-5 m mm mnn mnnooo
-6 x ^aa$ x
-7 (a)(b) abbaa
-8 axx [ab]xx
-9 หม่x อมx
-a อมx หม่x
-b ちカヨは
-c x ¬€x
-d 天使x
-e y
-f z
-g a啷bb
-h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ
-i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ
-j 0123❤x
-k combinations
diff --git a/src/testdir/test44.ok b/src/testdir/test44.ok
deleted file mode 100644
index 0bd0b8ab73..0000000000
--- a/src/testdir/test44.ok
+++ /dev/null
@@ -1,24 +0,0 @@
-1 a aa abb abbcc
-2 d dd dee deeff
-3 g gg ghh ghhii
-4 j jj jkk jkkll
-5 m mm mnn mnnoo
-6 x aa$ x
-7 (a)(b) abba
-8 axx ab]xx
-9 หม่x อx
-a อมx หx
-b カヨは
-c x ¬x
-d 使x
-e y
-f z
-g abb
-h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐ
-i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑ
-j 012❤
-k œ̄ṣ́m̥̄ᾱ̆́
-בג
diff --git a/src/testdir/test45.in b/src/testdir/test45.in
deleted file mode 100644
index e5af5073d9..0000000000
--- a/src/testdir/test45.in
+++ /dev/null
@@ -1,80 +0,0 @@
-Tests for folding. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:" We also need the +syntax feature here.
-:if !has("syntax")
- e! test.ok
- w! test.out
- qa!
-:endif
-:" basic test if a fold can be created, opened, moving to the end and closed
-/^1
-zf2j:call append("$", "manual " . getline(foldclosed(".")))
-zo:call append("$", foldclosed("."))
-]z:call append("$", getline("."))
-zc:call append("$", getline(foldclosed(".")))
-:" test folding with markers.
-:set fdm=marker fdl=1 fdc=3
-/^5
-:call append("$", "marker " . foldlevel("."))
-[z:call append("$", foldlevel("."))
-jo{{ r{jj:call append("$", foldlevel("."))
-kYpj:call append("$", foldlevel("."))
-:" test folding with indent
-:set fdm=indent sw=2
-/^2 b
-i jI :call append("$", "indent " . foldlevel("."))
-k:call append("$", foldlevel("."))
-:" test syntax folding
-:set fdm=syntax fdl=0
-:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
-:syn region Fd1 start="ee" end="ff" fold contained
-:syn region Fd2 start="gg" end="hh" fold contained
-:syn region Fd3 start="commentstart" end="commentend" fold contained
-Gzk:call append("$", "folding " . getline("."))
-k:call append("$", getline("."))
-jAcommentstart Acommentend:set fdl=1
-3j:call append("$", getline("."))
-:set fdl=0
-zO j:call append("$", getline("."))
-:" test expression folding
-:fun Flvl()
- let l = getline(v:lnum)
- if l =~ "bb$"
- return 2
- elseif l =~ "gg$"
- return "s1"
- elseif l =~ "ii$"
- return ">2"
- elseif l =~ "kk$"
- return "0"
- endif
- return "="
-endfun
-:set fdm=expr fde=Flvl()
-/bb$
-:call append("$", "expr " . foldlevel("."))
-/hh$
-:call append("$", foldlevel("."))
-/ii$
-:call append("$", foldlevel("."))
-/kk$
-:call append("$", foldlevel("."))
-:/^last/+1,$w! test.out
-:delfun Flvl
-:qa!
-ENDTEST
-
-1 aa
-2 bb
-3 cc
-4 dd {{{
-5 ee {{{ }}}
-6 ff }}}
-7 gg
-8 hh
-9 ii
-a jj
-b kk
-last
diff --git a/src/testdir/test45.ok b/src/testdir/test45.ok
deleted file mode 100644
index f04996e337..0000000000
--- a/src/testdir/test45.ok
+++ /dev/null
@@ -1,18 +0,0 @@
-manual 1 aa
--1
-3 cc
-1 aa
-marker 2
-1
-1
-0
-indent 2
-1
-folding 9 ii
- 3 cc
-7 gg
-8 hh
-expr 2
-1
-2
-0
diff --git a/src/testdir/test46.in b/src/testdir/test46.in
deleted file mode 100644
index 9a9db74d62..0000000000
--- a/src/testdir/test46.in
+++ /dev/null
@@ -1,27 +0,0 @@
-Tests for multi-line regexps with ":s". vim: set ft=vim :
-
-STARTTEST
-:" test if replacing a line break works with a back reference
-:/^1/,/^2/s/\n\(.\)/ \1/
-:" test if inserting a line break works with a back reference
-:/^3/,/^4/s/\(.\)$/\r\1/
-:" test if replacing a line break with another line break works
-:/^5/,/^6/s/\(\_d\{3}\)/x\1x/
-:/^1/,$w! test.out
-:qa!
-ENDTEST
-
-1 aa
-bb
-cc
-2 dd
-ee
-3 ef
-gh
-4 ij
-5 a8
-8b c9
-9d
-6 e7
-77f
-xxxxx
diff --git a/src/testdir/test46.ok b/src/testdir/test46.ok
deleted file mode 100644
index 71b353df1d..0000000000
--- a/src/testdir/test46.ok
+++ /dev/null
@@ -1,13 +0,0 @@
-1 aa bb cc 2 dd ee
-3 e
-f
-g
-h
-4 i
-j
-5 ax8
-8xb cx9
-9xd
-6 ex7
-7x7f
-xxxxx
diff --git a/src/testdir/test47.in b/src/testdir/test47.in
deleted file mode 100644
index 13ad82462f..0000000000
--- a/src/testdir/test47.in
+++ /dev/null
@@ -1,62 +0,0 @@
-Tests for vertical splits and filler lines in diff mode
-
-STARTTEST
-:so small.vim
-:" Disable the title to avoid xterm keeping the wrong one.
-:set notitle noicon
-/^1
-yG:new
-pkdd:w! Xtest
-ddGpkkrXoxxx:w! Xtest2
-:file Nop
-ggoyyyjjjozzzz
-:vert diffsplit Xtest
-:vert diffsplit Xtest2
-:" jump to second window for a moment to have filler line appear at start of
-:" first window
-ggpgg:let one = winline()
-j:let one = one . "-" . winline()
-j:let one = one . "-" . winline()
-j:let one = one . "-" . winline()
-j:let one = one . "-" . winline()
-j:let one = one . "-" . winline()
-gg:let two = winline()
-j:let two = two . "-" . winline()
-j:let two = two . "-" . winline()
-j:let two = two . "-" . winline()
-j:let two = two . "-" . winline()
-gg:let three = winline()
-j:let three = three . "-" . winline()
-j:let three = three . "-" . winline()
-j:let three = three . "-" . winline()
-j:let three = three . "-" . winline()
-j:let three = three . "-" . winline()
-j:let three = three . "-" . winline()
-:call append("$", one)
-:call append("$", two)
-:call append("$", three)
-:$-2,$w! test.out
-:" Test that diffing shows correct filler lines
-:diffoff!
-:windo :bw!
-:enew
-:put =range(4,10)
-:1d _
-:vnew
-:put =range(1,10)
-:1d _
-:windo :diffthis
-:wincmd h
-:let w0=line('w0')
-:enew
-:put =w0
-:.w >> test.out
-:unlet! one two three w0
-:qa!
-ENDTEST
-
-1 aa
-2 bb
-3 cc
-4 dd
-5 ee
diff --git a/src/testdir/test47.ok b/src/testdir/test47.ok
deleted file mode 100644
index b1cba92b1c..0000000000
--- a/src/testdir/test47.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-2-4-5-6-8-9
-1-2-4-5-8
-2-3-4-5-6-7-8
-1
diff --git a/src/testdir/test48.in b/src/testdir/test48.in
deleted file mode 100644
index 48f4abbf75..0000000000
--- a/src/testdir/test48.in
+++ /dev/null
@@ -1,78 +0,0 @@
-This is a test of 'virtualedit'.
-
-STARTTEST
-:so small.vim
-:set noswf
-:set ve=all
--dgg
-:"
-:" Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".
-:" Repeating CTRL-N fixes it. (Mary Ellen Foster)
-2/w
-C
-:"
-:" Using "C" then then <CR> moves the last remaining character to the next
-:" line. (Mary Ellen Foster)
-j^/are
-C are belong to vim
-:"
-:" When past the end of a line that ends in a single character "b" skips
-:" that word.
-^$15lbC7
-:"
-:" Make sure 'i' works
-$4li<-- should be 3 ' '
-:"
-:" Make sure 'C' works
-$4lC<-- should be 3 ' '
-:"
-:" Make sure 'a' works
-$4la<-- should be 4 ' '
-:"
-:" Make sure 'A' works
-$4lA<-- should be 0 ' '
-:"
-:" Make sure 'D' works
-$4lDi<-- 'D' should be intact
-:"
-:" Test for yank bug reported by Mark Waggoner.
-:set ve=block
-^2w3jyGp
-:"
-:" Test "r" beyond the end of the line
-:set ve=all
-/^"r"
-$5lrxa<-- should be 'x'
-:"
-:" Test to make sure 'x' can delete control characters
-:set display=uhex
-^xxxxxxi[This line should contain only the text between the brackets.]
-:set display=
-:"
-:" Test for ^Y/^E due to bad w_virtcol value, reported by
-:" Roy <royl@netropolis.net>.
-^O3li4li4li <-- should show the name of a noted text editor
-^o4li4li4li <-- and its version number-dd
-:"
-:" Test for yanking and pasting using the small delete register
-gg/^foo
-dewve"-p
-:wq! test.out
-ENDTEST
-foo, bar
-keyword keyw
-all your base are belong to us
-1 2 3 4 5 6
-'i'
-'C'
-'a'
-'A'
-'D'
-this is a test
-this is a test
-this is a test
-"r"
-ab sd
-abcv6efi.him0kl
-
-
diff --git a/src/testdir/test48.ok b/src/testdir/test48.ok
deleted file mode 100644
index 334cb5a29c..0000000000
--- a/src/testdir/test48.ok
+++ /dev/null
@@ -1,22 +0,0 @@
-, foo
-keyword keyword
-all your base
-are belong to vim
-1 2 3 4 5 7
-'i' <-- should be 3 ' '
-'C' <-- should be 3 ' '
-'a' <-- should be 4 ' '
-'A'<-- should be 0 ' '
-'D' <-- 'D' should be intact
-this is a test
-this is a test
-this is a test
-"r" x<-- should be 'x'
-[This line should contain only the text between the brackets.]
- v i m <-- should show the name of a noted text editor
- 6 . 0 <-- and its version number
-
-a
-a
-a
-
diff --git a/src/testdir/test49.in b/src/testdir/test49.in
deleted file mode 100644
index bd6cb4cad7..0000000000
--- a/src/testdir/test49.in
+++ /dev/null
@@ -1,30 +0,0 @@
-This is a test of the script language.
-
-If after adding a new test, the test output doesn't appear properly in
-test49.failed, try to add one ore more "G"s at the line ending in "test.out"
-
-STARTTEST
-:so small.vim
-:se nocp nomore viminfo+=nviminfo
-:lang mess C
-:so test49.vim
-GGGGGGGGGGGGGG"rp:.-,$w! test.out
-:"
-:" make valgrind happy
-:redir => funclist
-:silent func
-:redir END
-:for line in split(funclist, "\n")
-: let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
-: if name != ''
-: exe "delfunc " . name
-: endif
-:endfor
-:for v in keys(g:)
-: silent! exe "unlet " . v
-:endfor
-:unlet v
-:qa!
-ENDTEST
-
-Results of test49.vim:
diff --git a/src/testdir/test49.ok b/src/testdir/test49.ok
deleted file mode 100644
index bf1ceed9af..0000000000
--- a/src/testdir/test49.ok
+++ /dev/null
@@ -1,99 +0,0 @@
-Results of test49.vim:
-*** Test 1: OK (34695)
-*** Test 2: OK (34695)
-*** Test 3: OK (1384648195)
-*** Test 4: OK (32883)
-*** Test 5: OK (32883)
-*** Test 6: OK (603978947)
-*** Test 7: OK (90563)
-*** Test 8: OK (562493431)
-*** Test 9: OK (363)
-*** Test 10: OK (559615)
-*** Test 11: OK (2049)
-*** Test 12: OK (352256)
-*** Test 13: OK (145)
-*** Test 14: OK (42413)
-*** Test 15: OK (42413)
-*** Test 16: OK (8722)
-*** Test 17: OK (285127993)
-*** Test 18: OK (67224583)
-*** Test 19: OK (69275973)
-*** Test 20: OK (1874575085)
-*** Test 21: OK (147932225)
-*** Test 22: OK (4161)
-*** Test 23: OK (49)
-*** Test 24: OK (41)
-*** Test 25: OK (260177811)
-*** Test 26: OK (1681500476)
-*** Test 27: OK (1996459)
-*** Test 28: OK (1996459)
-*** Test 29: OK (170428555)
-*** Test 30: OK (190905173)
-*** Test 31: OK (190905173)
-*** Test 32: OK (354833067)
---- Test 33: sum = 178275600 (ok)
-*** Test 33: OK (1216907538)
-*** Test 34: OK (2146584868)
-*** Test 35: OK (2146584868)
-*** Test 36: OK (1071644672)
-*** Test 37: OK (1071644672)
-*** Test 38: OK (357908480)
-*** Test 39: OK (357908480)
-*** Test 40: OK (357908480)
-*** Test 41: OK (3076095)
-*** Test 42: OK (1505155949)
-*** Test 43: OK (1157763329)
-*** Test 44: OK (1031761407)
-*** Test 45: OK (1157763329)
-*** Test 46: OK (739407)
-*** Test 47: OK (371213935)
-*** Test 48: OK (756255461)
-*** Test 49: OK (179000669)
-*** Test 50: OK (363550045)
-*** Test 51: OK (40744667)
-*** Test 52: OK (1247112011)
-*** Test 53: OK (131071)
-*** Test 54: OK (2047)
-*** Test 55: OK (1023)
-*** Test 56: OK (511)
-*** Test 57: OK (2147450880)
-*** Test 58: OK (624945)
-*** Test 59: OK (2038431743)
-*** Test 60: OK (311511339)
-*** Test 61: OK (374889517)
-*** Test 62: OK (286331153)
-*** Test 63: OK (236978127)
-*** Test 64: OK (1499645335)
-*** Test 65: OK (70187)
-*** Test 66: OK (5464)
-*** Test 67: OK (212514423)
-*** Test 68: OK (212514423)
-*** Test 69: OK (8995471)
-*** Test 70: OK (69544277)
-*** Test 71: OK (34886997)
-*** Test 72: OK (1789569365)
-*** Test 73: OK (9032615)
-*** Test 74: OK (224907669)
-*** Test 75: OK (2000403408)
-*** Test 76: OK (1610087935)
-*** Test 77: OK (1388671)
-*** Test 78: OK (134217728)
-*** Test 79: OK (70288929)
-*** Test 80: OK (17895765)
-*** Test 81: OK (387)
-*** Test 82: OK (8454401)
-*** Test 83: OK (2835)
-*** Test 84: OK (934782101)
-*** Test 85: OK (198689)
---- Test 86: No Crash for vimgrep on BufUnload
-*** Test 86: OK (0)
---- Test 87: 3
---- Test 87: 5
---- Test 87: abcdefghijk
---- Test 87: Successfully executed funcref Add2
-*** Test 87: OK (0)
---- Test 88: All tests were run with throwing exceptions on error.
- The $VIMNOERRTHROW control is not configured.
---- Test 88: All tests were run with throwing exceptions on interrupt.
- The $VIMNOINTTHROW control is not configured.
-*** Test 88: OK (50443995)
diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim
deleted file mode 100644
index 21c2a0c582..0000000000
--- a/src/testdir/test49.vim
+++ /dev/null
@@ -1,9852 +0,0 @@
-" Vim script language tests
-" Author: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
-" Last Change: 2013 Jun 06
-
-"-------------------------------------------------------------------------------
-" Test environment {{{1
-"-------------------------------------------------------------------------------
-
-
-" Adding new tests easily. {{{2
-"
-" Writing new tests is eased considerably with the following functions and
-" abbreviations (see "Commands for recording the execution path", "Automatic
-" argument generation").
-"
-" To get the abbreviations, execute the command
-"
-" :let test49_set_env = 1 | source test49.vim
-"
-" To get them always (from src/testdir), put a line
-"
-" au! BufRead test49.vim let test49_set_env = 1 | source test49.vim
-"
-" into the local .vimrc file in the src/testdir directory.
-"
-if exists("test49_set_env") && test49_set_env
-
- " Automatic argument generation for the test environment commands.
-
- function! Xsum()
- let addend = substitute(getline("."), '^.*"\s*X:\s*\|^.*', '', "")
- " Evaluate arithmetic expression.
- if addend != ""
- exec "let g:Xsum = g:Xsum + " . addend
- endif
- endfunction
-
- function! Xcheck()
- let g:Xsum=0
- ?XpathINIT?,.call Xsum()
- exec "norm A "
- return g:Xsum
- endfunction
-
- iab Xcheck Xcheck<Space><C-R>=Xcheck()<CR><C-O>x
-
- function! Xcomment(num)
- let str = ""
- let tabwidth = &sts ? &sts : &ts
- let tabs = (48+tabwidth - a:num - virtcol(".")) / tabwidth
- while tabs > 0
- let str = str . "\t"
- let tabs = tabs - 1
- endwhile
- let str = str . '" X:'
- return str
- endfunction
-
- function! Xloop()
- let back = line(".") . "|norm" . virtcol(".") . "|"
- norm 0
- let last = search('X\(loop\|path\)INIT\|Xloop\>', "bW")
- exec back
- let theline = getline(last)
- if theline =~ 'X\(loop\|path\)INIT'
- let num = 1
- else
- let num = 2 * substitute(theline, '.*Xloop\s*\(\d\+\).*', '\1', "")
- endif
- ?X\(loop\|path\)INIT?
- \s/\(XloopINIT!\=\s*\d\+\s\+\)\@<=\(\d\+\)/\=2*submatch(2)/
- exec back
- exec "norm a "
- return num . Xcomment(strlen(num))
- endfunction
-
- iab Xloop Xloop<Space><C-R>=Xloop()<CR><C-O>x
-
- function! Xpath(loopinit)
- let back = line(".") . "|norm" . virtcol(".") . "|"
- norm 0
- let last = search('XpathINIT\|Xpath\>\|XloopINIT', "bW")
- exec back
- let theline = getline(last)
- if theline =~ 'XpathINIT'
- let num = 1
- elseif theline =~ 'Xpath\>'
- let num = 2 * substitute(theline, '.*Xpath\s*\(\d\+\).*', '\1', "")
- else
- let pattern = '.*XloopINIT!\=\s*\(\d\+\)\s*\(\d\+\).*'
- let num = substitute(theline, pattern, '\1', "")
- let factor = substitute(theline, pattern, '\2', "")
- " The "<C-O>x" from the "Xpath" iab and the character triggering its
- " expansion are in the input buffer. Save and clear typeahead so
- " that it is not read away by the call to "input()" below. Restore
- " afterwards.
- call inputsave()
- let loops = input("Number of iterations in previous loop? ")
- call inputrestore()
- while (loops > 0)
- let num = num * factor
- let loops = loops - 1
- endwhile
- endif
- exec "norm a "
- if a:loopinit
- return num . " 1"
- endif
- return num . Xcomment(strlen(num))
- endfunction
-
- iab Xpath Xpath<Space><C-R>=Xpath(0)<CR><C-O>x
- iab XloopINIT XloopINIT<Space><C-R>=Xpath(1)<CR><C-O>x
-
- " Also useful (see ExtraVim below):
- aug ExtraVim
- au!
- au BufEnter <sfile> syn region ExtraVim
- \ start=+^if\s\+ExtraVim(.*)+ end=+^endif+
- \ transparent keepend
- au BufEnter <sfile> syn match ExtraComment /^"/
- \ contained containedin=ExtraVim
- au BufEnter <sfile> hi link ExtraComment vimComment
- aug END
-
- aug Xpath
- au BufEnter <sfile> syn keyword Xpath
- \ XpathINIT Xpath XloopINIT Xloop XloopNEXT Xcheck Xout
- au BufEnter <sfile> hi link Xpath Special
- aug END
-
- do BufEnter <sfile>
-
- " Do not execute the tests when sourcing this file for getting the functions
- " and abbreviations above, which are intended for easily adding new test
- " cases; they are not needed for test execution. Unlet the variable
- " controlling this so that an explicit ":source" command for this file will
- " execute the tests.
- unlet test49_set_env
- finish
-
-endif
-
-
-" Commands for recording the execution path. {{{2
-"
-" The Xpath/Xloop commands can be used for computing the eXecution path by
-" adding (different) powers of 2 from those script lines, for which the
-" execution should be checked. Xloop provides different addends for each
-" execution of a loop. Permitted values are 2^0 to 2^30, so that 31 execution
-" points (multiply counted inside loops) can be tested.
-"
-" Note that the arguments of the following commands can be generated
-" automatically, see below.
-"
-" Usage: {{{3
-"
-" - Use XpathINIT at the beginning of the test.
-"
-" - Use Xpath to check if a line is executed.
-" Argument: power of 2 (decimal).
-"
-" - To check multiple execution of loops use Xloop for automatically
-" computing Xpath values:
-"
-" - Use XloopINIT before the loop.
-" Two arguments:
-" - the first Xpath value (power of 2) to be used (Xnext),
-" - factor for computing a new Xnext value when reexecuting a loop
-" (by a ":continue" or ":endwhile"); this should be 2^n where
-" n is the number of Xloop commands inside the loop.
-" If XloopINIT! is used, the first execution of XloopNEXT is
-" a no-operation.
-"
-" - Use Xloop inside the loop:
-" One argument:
-" The argument and the Xnext value are multiplied to build the
-" next Xpath value. No new Xnext value is prepared. The argument
-" should be 2^(n-1) for the nth Xloop command inside the loop.
-" If the loop has only one Xloop command, the argument can be
-" ommitted (default: 1).
-"
-" - Use XloopNEXT before ":continue" and ":endwhile". This computes a new
-" Xnext value for the next execution of the loop by multiplying the old
-" one with the factor specified in the XloopINIT command. No Argument.
-" Alternatively, when XloopINIT! is used, a single XloopNEXT at the
-" beginning of the loop can be used.
-"
-" Nested loops are not supported.
-"
-" - Use Xcheck at end of each test. It prints the test number, the expected
-" execution path value, the test result ("OK" or "FAIL"), and, if the tests
-" fails, the actual execution path.
-" One argument:
-" Expected Xpath/Xloop sum for the correct execution path.
-" In order that this value can be computed automatically, do the
-" following: For each line in the test with an Xpath and Xloop
-" command, add a comment starting with "X:" and specifying an
-" expression that evaluates to the value contributed by this line to
-" the correct execution path. (For copying an Xpath argument of at
-" least two digits into the comment, press <C-P>.) At the end of the
-" test, just type "Xcheck" and press <Esc>.
-"
-" - In order to add additional information to the test output file, use the
-" Xout command. Argument(s) like ":echo".
-"
-" Automatic argument generation: {{{3
-"
-" The arguments of the Xpath, XloopINIT, Xloop, and Xcheck commands can be
-" generated automatically, so that new tests can easily be written without
-" mental arithmetic. The Xcheck argument is computed from the "X:" comments
-" of the preceding Xpath and Xloop commands. See the commands and
-" abbreviations at the beginning of this file.
-"
-" Implementation: {{{3
-" XpathINIT, Xpath, XloopINIT, Xloop, XloopNEXT, Xcheck, Xout.
-"
-" The variants for existing g:ExtraVimResult are needed when executing a script
-" in an extra Vim process, see ExtraVim below.
-
-" EXTRA_VIM_START - do not change or remove this line.
-
-com! XpathINIT let g:Xpath = 0
-
-if exists("g:ExtraVimResult")
- com! -count -bar Xpath exec "!echo <count> >>" . g:ExtraVimResult
-else
- com! -count -bar Xpath let g:Xpath = g:Xpath + <count>
-endif
-
-com! -count -nargs=1 -bang
- \ XloopINIT let g:Xnext = <count> |
- \ let g:Xfactor = <args> |
- \ let g:Xskip = strlen("<bang>")
-
-if exists("g:ExtraVimResult")
- com! -count=1 -bar Xloop exec "!echo " . (g:Xnext * <count>) . " >>" .
- \ g:ExtraVimResult
-else
- com! -count=1 -bar Xloop let g:Xpath = g:Xpath + g:Xnext * <count>
-endif
-
-com! XloopNEXT let g:Xnext = g:Xnext *
- \ (g:Xskip ? 1 : g:Xfactor) |
- \ let g:Xskip = 0
-
-let @r = ""
-let Xtest = 1
-com! -count Xcheck let Xresult = "*** Test " .
- \ (Xtest<10?" ":Xtest<100?" ":"") .
- \ Xtest . ": " . (
- \ (Xpath==<count>) ? "OK (".Xpath.")" :
- \ "FAIL (".Xpath." instead of <count>)"
- \ ) |
- \ let @R = Xresult . "\n" |
- \ echo Xresult |
- \ let Xtest = Xtest + 1
-
-if exists("g:ExtraVimResult")
- com! -nargs=+ Xoutq exec "!echo @R:'" .
- \ substitute(substitute(<q-args>,
- \ "'", '&\\&&', "g"), "\n", "@NL@", "g")
- \ . "' >>" . g:ExtraVimResult
-else
- com! -nargs=+ Xoutq let @R = "--- Test " .
- \ (g:Xtest<10?" ":g:Xtest<100?" ":"") .
- \ g:Xtest . ": " . substitute(<q-args>,
- \ "\n", "&\t ", "g") . "\n"
-endif
-com! -nargs=+ Xout exec 'Xoutq' <args>
-
-" Switch off storing of lines for undoing changes. Speeds things up a little.
-set undolevels=-1
-
-" EXTRA_VIM_STOP - do not change or remove this line.
-
-
-" ExtraVim() - Run a script file in an extra Vim process. {{{2
-"
-" This is useful for testing immediate abortion of the script processing due to
-" an error in a command dynamically enclosed by a :try/:tryend region or when an
-" exception is thrown but not caught or when an interrupt occurs. It can also
-" be used for testing :finish.
-"
-" An interrupt location can be specified by an "INTERRUPT" comment. A number
-" telling how often this location is reached (in a loop or in several function
-" calls) should be specified as argument. When missing, once per script
-" invocation or function call is assumed. INTERRUPT locations are tested by
-" setting a breakpoint in that line and using the ">quit" debug command when
-" the breakpoint is reached. A function for which an INTERRUPT location is
-" specified must be defined before calling it (or executing it as a script by
-" using ExecAsScript below).
-"
-" This function is only called in normal modus ("g:ExtraVimResult" undefined).
-"
-" Tests to be executed as an extra script should be written as follows:
-"
-" column 1 column 1
-" | |
-" v v
-"
-" XpathINIT XpathINIT
-" if ExtraVim() if ExtraVim()
-" ... " ...
-" ... " ...
-" endif endif
-" Xcheck <number> Xcheck <number>
-"
-" Double quotes in column 1 are removed before the script is executed.
-" They should be used if the test has unbalanced conditionals (:if/:endif,
-" :while:/endwhile, :try/:endtry) or for a line with a syntax error. The
-" extra script may use Xpath, XloopINIT, Xloop, XloopNEXT, and Xout as usual.
-"
-" A file name may be specified as argument. All messages of the extra Vim
-" process are then redirected to the file. An existing file is overwritten.
-"
-let ExtraVimCount = 0
-let ExtraVimBase = expand("<sfile>")
-let ExtraVimTestEnv = ""
-"
-function! ExtraVim(...)
- " Count how often this function is called.
- let g:ExtraVimCount = g:ExtraVimCount + 1
-
- " Disable folds to prevent that the ranges in the ":write" commands below
- " are extended up to the end of a closed fold. This also speeds things up
- " considerably.
- set nofoldenable
-
- " Open a buffer for this test script and copy the test environment to
- " a temporary file. Take account of parts relevant for the extra script
- " execution only.
- let current_buffnr = bufnr("%")
- execute "view +1" g:ExtraVimBase
- if g:ExtraVimCount == 1
- let g:ExtraVimTestEnv = tempname()
- execute "/E" . "XTRA_VIM_START/+,/E" . "XTRA_VIM_STOP/-w"
- \ g:ExtraVimTestEnv "|']+"
- execute "/E" . "XTRA_VIM_START/+,/E" . "XTRA_VIM_STOP/-w >>"
- \ g:ExtraVimTestEnv "|']+"
- execute "/E" . "XTRA_VIM_START/+,/E" . "XTRA_VIM_STOP/-w >>"
- \ g:ExtraVimTestEnv "|']+"
- execute "/E" . "XTRA_VIM_START/+,/E" . "XTRA_VIM_STOP/-w >>"
- \ g:ExtraVimTestEnv "|']+"
- endif
-
- " Start the extra Vim script with a ":source" command for the test
- " environment. The source line number where the extra script will be
- " appended, needs to be passed as variable "ExtraVimBegin" to the script.
- let extra_script = tempname()
- exec "!echo 'source " . g:ExtraVimTestEnv . "' >" . extra_script
- let extra_begin = 1
-
- " Starting behind the test environment, skip over the first g:ExtraVimCount
- " occurrences of "if ExtraVim()" and copy the following lines up to the
- " matching "endif" to the extra Vim script.
- execute "/E" . "ND_OF_TEST_ENVIRONMENT/"
- exec 'norm ' . g:ExtraVimCount . '/^\s*if\s\+ExtraVim(.*)/+' . "\n"
- execute ".,/^endif/-write >>" . extra_script
-
- " Open a buffer for the extra Vim script, delete all ^", and write the
- " script if was actually modified.
- execute "edit +" . (extra_begin + 1) extra_script
- ,$s/^"//e
- update
-
- " Count the INTERRUPTs and build the breakpoint and quit commands.
- let breakpoints = ""
- let debug_quits = ""
- let in_func = 0
- exec extra_begin
- while search(
- \ '"\s*INTERRUPT\h\@!\|^\s*fu\%[nction]\>!\=\s*\%(\u\|s:\)\w*\s*(\|'
- \ . '^\s*\\\|^\s*endf\%[unction]\>\|'
- \ . '\%(^\s*fu\%[nction]!\=\s*\)\@<!\%(\u\|s:\)\w*\s*(\|'
- \ . 'ExecAsScript\s\+\%(\u\|s:\)\w*',
- \ "W") > 0
- let theline = getline(".")
- if theline =~ '^\s*fu'
- " Function definition.
- let in_func = 1
- let func_start = line(".")
- let func_name = substitute(theline,
- \ '^\s*fu\%[nction]!\=\s*\(\%(\u\|s:\)\w*\).*', '\1', "")
- elseif theline =~ '^\s*endf'
- " End of function definition.
- let in_func = 0
- else
- let finding = substitute(theline, '.*\(\%' . col(".") . 'c.*\)',
- \ '\1', "")
- if finding =~ '^"\s*INTERRUPT\h\@!'
- " Interrupt comment. Compose as many quit commands as
- " specified.
- let cnt = substitute(finding,
- \ '^"\s*INTERRUPT\s*\(\d*\).*$', '\1', "")
- let quits = ""
- while cnt > 0
- " Use "\r" rather than "\n" to separate the quit commands.
- " "\r" is not interpreted as command separator by the ":!"
- " command below but works to separate commands in the
- " external vim.
- let quits = quits . "q\r"
- let cnt = cnt - 1
- endwhile
- if in_func
- " Add the function breakpoint and note the number of quits
- " to be used, if specified, or one for every call else.
- let breakpoints = breakpoints . " -c 'breakadd func " .
- \ (line(".") - func_start) . " " .
- \ func_name . "'"
- if quits != ""
- let debug_quits = debug_quits . quits
- elseif !exists("quits{func_name}")
- let quits{func_name} = "q\r"
- else
- let quits{func_name} = quits{func_name} . "q\r"
- endif
- else
- " Add the file breakpoint and the quits to be used for it.
- let breakpoints = breakpoints . " -c 'breakadd file " .
- \ line(".") . " " . extra_script . "'"
- if quits == ""
- let quits = "q\r"
- endif
- let debug_quits = debug_quits . quits
- endif
- else
- " Add the quits to be used for calling the function or executing
- " it as script file.
- if finding =~ '^ExecAsScript'
- " Sourcing function as script.
- let finding = substitute(finding,
- \ '^ExecAsScript\s\+\(\%(\u\|s:\)\w*\).*', '\1', "")
- else
- " Function call.
- let finding = substitute(finding,
- \ '^\(\%(\u\|s:\)\w*\).*', '\1', "")
- endif
- if exists("quits{finding}")
- let debug_quits = debug_quits . quits{finding}
- endif
- endif
- endif
- endwhile
-
- " Close the buffer for the script and create an (empty) resultfile.
- bwipeout
- let resultfile = tempname()
- exec "!>" . resultfile
-
- " Run the script in an extra vim. Switch to extra modus by passing the
- " resultfile in ExtraVimResult. Redirect messages to the file specified as
- " argument if any. Use ":debuggreedy" so that the commands provided on the
- " pipe are consumed at the debug prompt. Use "-N" to enable command-line
- " continuation ("C" in 'cpo'). Add "nviminfo" to 'viminfo' to avoid
- " messing up the user's viminfo file.
- let redirect = a:0 ?
- \ " -c 'au VimLeave * redir END' -c 'redir\\! >" . a:1 . "'" : ""
- exec "!echo '" . debug_quits . "q' | ../../build/bin/nvim -u NONE -N -Xes" . redirect .
- \ " -c 'debuggreedy|set viminfo+=nviminfo'" .
- \ " -c 'let ExtraVimBegin = " . extra_begin . "'" .
- \ " -c 'let ExtraVimResult = \"" . resultfile . "\"'" . breakpoints .
- \ " -S " . extra_script
-
- " Build the resulting sum for resultfile and add it to g:Xpath. Add Xout
- " information provided by the extra Vim process to the test output.
- let sum = 0
- exec "edit" resultfile
- let line = 1
- while line <= line("$")
- let theline = getline(line)
- if theline =~ '^@R:'
- exec 'Xout "' . substitute(substitute(
- \ escape(escape(theline, '"'), '\"'),
- \ '^@R:', '', ""), '@NL@', "\n", "g") . '"'
- else
- let sum = sum + getline(line)
- endif
- let line = line + 1
- endwhile
- bwipeout
- let g:Xpath = g:Xpath + sum
-
- " Delete the extra script and the resultfile.
- call delete(extra_script)
- call delete(resultfile)
-
- " Switch back to the buffer that was active when this function was entered.
- exec "buffer" current_buffnr
-
- " Return 0. This protects extra scripts from being run in the main Vim
- " process.
- return 0
-endfunction
-
-
-" ExtraVimThrowpoint() - Relative throwpoint in ExtraVim script {{{2
-"
-" Evaluates v:throwpoint and returns the throwpoint relative to the beginning of
-" an ExtraVim script as passed by ExtraVim() in ExtraVimBegin.
-"
-" EXTRA_VIM_START - do not change or remove this line.
-function! ExtraVimThrowpoint()
- if !exists("g:ExtraVimBegin")
- Xout "ExtraVimThrowpoint() used outside ExtraVim() script."
- return v:throwpoint
- endif
-
- if v:throwpoint =~ '^function\>'
- return v:throwpoint
- endif
-
- return "line " .
- \ (substitute(v:throwpoint, '.*, line ', '', "") - g:ExtraVimBegin) .
- \ " of ExtraVim() script"
-endfunction
-" EXTRA_VIM_STOP - do not change or remove this line.
-
-
-" MakeScript() - Make a script file from a function. {{{2
-"
-" Create a script that consists of the body of the function a:funcname.
-" Replace any ":return" by a ":finish", any argument variable by a global
-" variable, and and every ":call" by a ":source" for the next following argument
-" in the variable argument list. This function is useful if similar tests are
-" to be made for a ":return" from a function call or a ":finish" in a script
-" file.
-"
-" In order to execute a function specifying an INTERRUPT location (see ExtraVim)
-" as a script file, use ExecAsScript below.
-"
-" EXTRA_VIM_START - do not change or remove this line.
-function! MakeScript(funcname, ...)
- let script = tempname()
- execute "redir! >" . script
- execute "function" a:funcname
- redir END
- execute "edit" script
- " Delete the "function" and the "endfunction" lines. Do not include the
- " word "function" in the pattern since it might be translated if LANG is
- " set. When MakeScript() is being debugged, this deletes also the debugging
- " output of its line 3 and 4.
- exec '1,/.*' . a:funcname . '(.*)/d'
- /^\d*\s*endfunction\>/,$d
- %s/^\d*//e
- %s/return/finish/e
- %s/\<a:\(\h\w*\)/g:\1/ge
- normal gg0
- let cnt = 0
- while search('\<call\s*\%(\u\|s:\)\w*\s*(.*)', 'W') > 0
- let cnt = cnt + 1
- s/\<call\s*\%(\u\|s:\)\w*\s*(.*)/\='source ' . a:{cnt}/
- endwhile
- g/^\s*$/d
- write
- bwipeout
- return script
-endfunction
-" EXTRA_VIM_STOP - do not change or remove this line.
-
-
-" ExecAsScript - Source a temporary script made from a function. {{{2
-"
-" Make a temporary script file from the function a:funcname, ":source" it, and
-" delete it afterwards.
-"
-" When inside ":if ExtraVim()", add a file breakpoint for each INTERRUPT
-" location specified in the function.
-"
-" EXTRA_VIM_START - do not change or remove this line.
-function! ExecAsScript(funcname)
- " Make a script from the function passed as argument.
- let script = MakeScript(a:funcname)
-
- " When running in an extra Vim process, add a file breakpoint for each
- " function breakpoint set when the extra Vim process was invoked by
- " ExtraVim().
- if exists("g:ExtraVimResult")
- let bplist = tempname()
- execute "redir! >" . bplist
- breaklist
- redir END
- execute "edit" bplist
- " Get the line number from the function breakpoint. Works also when
- " LANG is set.
- execute 'v/^\s*\d\+\s\+func\s\+' . a:funcname . '\s.*/d'
- %s/^\s*\d\+\s\+func\s\+\%(\u\|s:\)\w*\s\D*\(\d*\).*/\1/e
- let cnt = 0
- while cnt < line("$")
- let cnt = cnt + 1
- if getline(cnt) != ""
- execute "breakadd file" getline(cnt) script
- endif
- endwhile
- bwipeout!
- call delete(bplist)
- endif
-
- " Source and delete the script.
- exec "source" script
- call delete(script)
-endfunction
-
-com! -nargs=1 -bar ExecAsScript call ExecAsScript(<f-args>)
-" EXTRA_VIM_STOP - do not change or remove this line.
-
-
-" END_OF_TEST_ENVIRONMENT - do not change or remove this line.
-
-
-"-------------------------------------------------------------------------------
-" Test 1: :endwhile in function {{{1
-"
-" Detect if a broken loop is (incorrectly) reactivated by the
-" :endwhile. Use a :return to prevent an endless loop, and make
-" this test first to get a meaningful result on an error before other
-" tests will hang.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- Xpath 1 " X: 1
- let first = 1
- XloopINIT 2 8
- while 1
- Xloop 1 " X: 2 + 0 * 16
- if first
- Xloop 2 " X: 4 + 0 * 32
- let first = 0
- XloopNEXT
- break
- else
- Xloop 4 " X: 0 + 0 * 64
- return
- endif
- endwhile
-endfunction
-
-call F()
-Xpath 128 " X: 128
-
-function! G()
- Xpath 256 " X: 256 + 0 * 2048
- let first = 1
- XloopINIT 512 8
- while 1
- Xloop 1 " X: 512 + 0 * 4096
- if first
- Xloop 2 " X: 1024 + 0 * 8192
- let first = 0
- XloopNEXT
- break
- else
- Xloop 4 " X: 0 + 0 * 16384
- return
- endif
- if 1 " unmatched :if
- endwhile
-endfunction
-
-call G()
-Xpath 32768 " X: 32768
-
-Xcheck 34695
-
-" Leave F and G for execution as scripts in the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 2: :endwhile in script {{{1
-"
-" Detect if a broken loop is (incorrectly) reactivated by the
-" :endwhile. Use a :finish to prevent an endless loop, and place
-" this test before others that might hang to get a meaningful result
-" on an error.
-"
-" This test executes the bodies of the functions F and G from the
-" previous test as script files (:return replaced by :finish).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-ExecAsScript F " X: 1 + 2 + 4
-Xpath 128 " X: 128
-
-ExecAsScript G " X: 256 + 512 + 1024
-Xpath 32768 " X: 32768
-
-unlet first
-delfunction F
-delfunction G
-
-Xcheck 34695
-
-
-"-------------------------------------------------------------------------------
-" Test 3: :if, :elseif, :while, :continue, :break {{{1
-"-------------------------------------------------------------------------------
-
-XpathINIT
-if 1
- Xpath 1 " X: 1
- let loops = 3
- XloopINIT 2 512
- while loops > -1 " main loop: loops == 3, 2, 1 (which breaks)
- if loops <= 0
- let break_err = 1
- let loops = -1
- else " 3: 2: 1:
- Xloop 1 " X: 2 + 2*512 + 2*512*512
- endif
- if (loops == 2)
- while loops == 2 " dummy loop
- Xloop 2 " X: 4*512
- let loops = loops - 1
- continue " stop dummy loop
- Xloop 4 " X: 0
- endwhile
- XloopNEXT
- continue " continue main loop
- Xloop 8 " X: 0
- elseif (loops == 1)
- let p = 1
- while p " dummy loop
- Xloop 16 " X: 32*512*512
- let p = 0
- break " break dummy loop
- Xloop 32 " X: 0
- endwhile
- Xloop 64 " X: 128*512*512
- unlet p
- break " break main loop
- Xloop 128 " X: 0
- endif
- if (loops > 0)
- Xloop 256 " X: 512
- endif
- while loops == 3 " dummy loop
- let loops = loops - 1
- endwhile " end dummy loop
- XloopNEXT
- endwhile " end main loop
- Xpath 268435456 " X: 1024*512*512
-else
- Xpath 536870912 " X: 0
-endif
-Xpath 1073741824 " X: 4096*512*512
-if exists("break_err")
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- unlet break_err
-endif
-
-unlet loops
-
-Xcheck 1384648195
-
-
-"-------------------------------------------------------------------------------
-" Test 4: :return {{{1
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- if 1
- Xpath 1 " X: 1
- let loops = 3
- XloopINIT 2 16
- while loops > 0 " 3: 2: 1:
- Xloop 1 " X: 2 + 2*16 + 0*16*16
- if (loops == 2)
- Xloop 2 " X: 4*16
- return
- Xloop 4 " X: 0
- endif
- Xloop 8 " X: 16
- let loops = loops - 1
- XloopNEXT
- endwhile
- Xpath 8192 " X: 0
- else
- Xpath 16384 " X: 0
- endif
-endfunction
-
-call F()
-Xpath 32768 " X: 8*16*16*16
-
-Xcheck 32883
-
-" Leave F for execution as a script in the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 5: :finish {{{1
-"
-" This test executes the body of the function F from the previous test
-" as a script file (:return replaced by :finish).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-ExecAsScript F " X: 1 + 2 + 2*16 + 4*16 + 16
-Xpath 32768 " X: 32768
-
-unlet loops
-delfunction F
-
-Xcheck 32883
-
-
-"-------------------------------------------------------------------------------
-" Test 6: Defining functions in :while loops {{{1
-"
-" Functions can be defined inside other functions. An inner function
-" gets defined when the outer function is executed. Functions may
-" also be defined inside while loops. Expressions in braces for
-" defining the function name are allowed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- " The command CALL collects the argument of all its invocations in "calls"
- " when used from a function (that is, when the global variable "calls" needs
- " the "g:" prefix). This is to check that the function code is skipped when
- " the function is defined. For inner functions, do so only if the outer
- " function is not being executed.
- "
- let calls = ""
- com! -nargs=1 CALL
- \ if !exists("calls") && !exists("outer") |
- \ let g:calls = g:calls . <args> |
- \ endif
-
-
- XloopINIT! 1 16
-
- let i = 0
- while i < 3
-
- XloopNEXT
- let i = i + 1
-
- if i == 1
- Xloop 1 " X: 1
- function! F1(arg)
- CALL a:arg
- let outer = 1
-
- XloopINIT! 4096 4
- let j = 0
- while j < 1
- XloopNEXT
- Xloop 1 " X: 4096
- let j = j + 1
- function! G1(arg)
- CALL a:arg
- endfunction
- Xloop 2 " X: 8192
- endwhile
- endfunction
- Xloop 2 " X: 2
-
- continue
- endif
-
- Xloop 4 " X: 4 * (16 + 256)
- function! F{i}(i, arg)
- CALL a:arg
- let outer = 1
-
- XloopINIT! 16384 4
- if a:i == 3
- XloopNEXT
- XloopNEXT
- XloopNEXT
- endif
- let k = 0
- while k < 3
- XloopNEXT
- Xloop 1 " X: 16384*(1+4+16+64+256+1024)
- let k = k + 1
- function! G{a:i}{k}(arg)
- CALL a:arg
- endfunction
- Xloop 2 " X: 32768*(1+4+16+64+256+1024)
- endwhile
- endfunction
- Xloop 8 " X: 8 * (16 + 256)
-
- endwhile
-
- if exists("*G1")
- Xpath 67108864 " X: 0
- endif
- if exists("*F1")
- call F1("F1")
- if exists("*G1")
- call G1("G1")
- endif
- endif
-
- if exists("G21") || exists("G21") || exists("G21")
- Xpath 134217728 " X: 0
- endif
- if exists("*F2")
- call F2(2, "F2")
- if exists("*G21")
- call G21("G21")
- endif
- if exists("*G22")
- call G22("G22")
- endif
- if exists("*G23")
- call G23("G23")
- endif
- endif
-
- if exists("G31") || exists("G31") || exists("G31")
- Xpath 268435456 " X: 0
- endif
- if exists("*F3")
- call F3(3, "F3")
- if exists("*G31")
- call G31("G31")
- endif
- if exists("*G32")
- call G32("G32")
- endif
- if exists("*G33")
- call G33("G33")
- endif
- endif
-
- Xpath 536870912 " X: 536870912
-
- if calls != "F1G1F2G21G22G23F3G31G32G33"
- Xpath 1073741824 " X: 0
- Xout "calls is" calls
- endif
-
- delfunction F1
- delfunction G1
- delfunction F2
- delfunction G21
- delfunction G22
- delfunction G23
- delfunction G31
- delfunction G32
- delfunction G33
-
-endif
-
-Xcheck 603978947
-
-
-"-------------------------------------------------------------------------------
-" Test 7: Continuing on errors outside functions {{{1
-"
-" On an error outside a function, the script processing continues
-" at the line following the outermost :endif or :endwhile. When not
-" inside an :if or :while, the script processing continues at the next
-" line.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if 1
- Xpath 1 " X: 1
- while 1
- Xpath 2 " X: 2
- asdf
- Xpath 4 " X: 0
- break
- endwhile | Xpath 8 " X: 0
- Xpath 16 " X: 0
-endif | Xpath 32 " X: 0
-Xpath 64 " X: 64
-
-while 1
- Xpath 128 " X: 128
- if 1
- Xpath 256 " X: 256
- asdf
- Xpath 512 " X: 0
- endif | Xpath 1024 " X: 0
- Xpath 2048 " X: 0
- break
-endwhile | Xpath 4096 " X: 0
-Xpath 8192 " X: 8192
-
-asdf
-Xpath 16384 " X: 16384
-
-asdf | Xpath 32768 " X: 0
-Xpath 65536 " X: 65536
-
-Xcheck 90563
-
-
-"-------------------------------------------------------------------------------
-" Test 8: Aborting and continuing on errors inside functions {{{1
-"
-" On an error inside a function without the "abort" attribute, the
-" script processing continues at the next line (unless the error was
-" in a :return command). On an error inside a function with the
-" "abort" attribute, the function is aborted and the script processing
-" continues after the function call; the value -1 is returned then.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- if 1
- Xpath 1 " X: 1
- while 1
- Xpath 2 " X: 2
- asdf
- Xpath 4 " X: 4
- asdf | Xpath 8 " X: 0
- Xpath 16 " X: 16
- break
- endwhile
- Xpath 32 " X: 32
- endif | Xpath 64 " X: 64
- Xpath 128 " X: 128
-
- while 1
- Xpath 256 " X: 256
- if 1
- Xpath 512 " X: 512
- asdf
- Xpath 1024 " X: 1024
- asdf | Xpath 2048 " X: 0
- Xpath 4096 " X: 4096
- endif
- Xpath 8192 " X: 8192
- break
- endwhile | Xpath 16384 " X: 16384
- Xpath 32768 " X: 32768
-
- return novar " returns (default return value 0)
- Xpath 65536 " X: 0
- return 1 " not reached
-endfunction
-
-function! G() abort
- if 1
- Xpath 131072 " X: 131072
- while 1
- Xpath 262144 " X: 262144
- asdf " returns -1
- Xpath 524288 " X: 0
- break
- endwhile
- Xpath 1048576 " X: 0
- endif | Xpath 2097152 " X: 0
- Xpath Xpath 4194304 " X: 0
-
- return -4 " not reached
-endfunction
-
-function! H() abort
- while 1
- Xpath 8388608 " X: 8388608
- if 1
- Xpath 16777216 " X: 16777216
- asdf " returns -1
- Xpath 33554432 " X: 0
- endif
- Xpath 67108864 " X: 0
- break
- endwhile | Xpath 134217728 " X: 0
- Xpath 268435456 " X: 0
-
- return -4 " not reached
-endfunction
-
-" Aborted functions (G and H) return -1.
-let sum = (F() + 1) - 4*G() - 8*H()
-Xpath 536870912 " X: 536870912
-if sum != 13
- Xpath 1073741824 " X: 0
- Xout "sum is" sum
-endif
-
-unlet sum
-delfunction F
-delfunction G
-delfunction H
-
-Xcheck 562493431
-
-
-"-------------------------------------------------------------------------------
-" Test 9: Continuing after aborted functions {{{1
-"
-" When a function with the "abort" attribute is aborted due to an
-" error, the next function back in the call hierarchy without an
-" "abort" attribute continues; the value -1 is returned then.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F() abort
- Xpath 1 " X: 1
- let result = G() " not aborted
- Xpath 2 " X: 2
- if result != 2
- Xpath 4 " X: 0
- endif
- return 1
-endfunction
-
-function! G() " no abort attribute
- Xpath 8 " X: 8
- if H() != -1 " aborted
- Xpath 16 " X: 0
- endif
- Xpath 32 " X: 32
- return 2
-endfunction
-
-function! H() abort
- Xpath 64 " X: 64
- call I() " aborted
- Xpath 128 " X: 0
- return 4
-endfunction
-
-function! I() abort
- Xpath 256 " X: 256
- asdf " error
- Xpath 512 " X: 0
- return 8
-endfunction
-
-if F() != 1
- Xpath 1024 " X: 0
-endif
-
-delfunction F
-delfunction G
-delfunction H
-delfunction I
-
-Xcheck 363
-
-
-"-------------------------------------------------------------------------------
-" Test 10: :if, :elseif, :while argument parsing {{{1
-"
-" A '"' or '|' in an argument expression must not be mixed up with
-" a comment or a next command after a bar. Parsing errors should
-" be recognized.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-if 1 || strlen("\"") | Xpath 1 " X: 1
- Xpath 2 " X: 2
-endif
-Xpath 4 " X: 4
-
-if 0
-elseif 1 || strlen("\"") | Xpath 8 " X: 8
- Xpath 16 " X: 16
-endif
-Xpath 32 " X: 32
-
-while 1 || strlen("\"") | Xpath 64 " X: 64
- Xpath 128 " X: 128
- break
-endwhile
-Xpath 256 " X: 256
-
-let v:errmsg = ""
-if 1 ||| strlen("\"") | Xpath 512 " X: 0
- Xpath 1024 " X: 0
-endif
-Xpath 2048 " X: 2048
-if !MSG('E15', "Invalid expression")
- Xpath 4096 " X: 0
-endif
-
-let v:errmsg = ""
-if 0
-elseif 1 ||| strlen("\"") | Xpath 8192 " X: 0
- Xpath 16384 " X: 0
-endif
-Xpath 32768 " X: 32768
-if !MSG('E15', "Invalid expression")
- Xpath 65536 " X: 0
-endif
-
-let v:errmsg = ""
-while 1 ||| strlen("\"") | Xpath 131072 " X: 0
- Xpath 262144 " X: 0
- break
-endwhile
-Xpath 524288 " X: 524288
-if !MSG('E15', "Invalid expression")
- Xpath 1048576 " X: 0
-endif
-
-delfunction MSG
-
-Xcheck 559615
-
-
-"-------------------------------------------------------------------------------
-" Test 11: :if, :elseif, :while argument evaluation after abort {{{1
-"
-" When code is skipped over due to an error, the boolean argument to
-" an :if, :elseif, or :while must not be evaluated.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let calls = 0
-
-function! P(num)
- let g:calls = g:calls + a:num " side effect on call
- return 0
-endfunction
-
-if 1
- Xpath 1 " X: 1
- asdf " error
- Xpath 2 " X: 0
- if P(1) " should not be called
- Xpath 4 " X: 0
- elseif !P(2) " should not be called
- Xpath 8 " X: 0
- else
- Xpath 16 " X: 0
- endif
- Xpath 32 " X: 0
- while P(4) " should not be called
- Xpath 64 " X: 0
- endwhile
- Xpath 128 " X: 0
-endif
-
-if calls % 2
- Xpath 256 " X: 0
-endif
-if (calls/2) % 2
- Xpath 512 " X: 0
-endif
-if (calls/4) % 2
- Xpath 1024 " X: 0
-endif
-Xpath 2048 " X: 2048
-
-unlet calls
-delfunction P
-
-Xcheck 2049
-
-
-"-------------------------------------------------------------------------------
-" Test 12: Expressions in braces in skipped code {{{1
-"
-" In code skipped over due to an error or inactive conditional,
-" an expression in braces as part of a variable or function name
-" should not be evaluated.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT 1 8
-
-function! NULL()
- Xloop 1 " X: 0
- return 0
-endfunction
-
-function! ZERO()
- Xloop 2 " X: 0
- return 0
-endfunction
-
-function! F0()
- Xloop 4 " X: 0
-endfunction
-
-function! F1(arg)
- Xpath 4096 " X: 0
-endfunction
-
-let V0 = 1
-
-Xpath 8192 " X: 8192
-echo 0 ? F{NULL() + V{ZERO()}}() : 1
-XloopNEXT
-
-Xpath 16384 " X: 16384
-if 0
- Xpath 32768 " X: 0
- call F{NULL() + V{ZERO()}}()
-endif
-XloopNEXT
-
-Xpath 65536 " X: 65536
-if 1
- asdf " error
- Xpath 131072 " X: 0
- call F1(F{NULL() + V{ZERO()}}())
-endif
-XloopNEXT
-
-Xpath 262144 " X: 262144
-if 1
- asdf " error
- Xpath 524288 " X: 0
- call F{NULL() + V{ZERO()}}()
-endif
-
-Xcheck 352256
-
-
-"-------------------------------------------------------------------------------
-" Test 13: Failure in argument evaluation for :while {{{1
-"
-" A failure in the expression evaluation for the condition of a :while
-" causes the whole :while loop until the matching :endwhile being
-" ignored. Continuation is at the next following line.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-Xpath 1 " X: 1
-while asdf
- Xpath 2 " X: 0
- while 1
- Xpath 4 " X: 0
- break
- endwhile
- Xpath 8 " X: 0
- break
-endwhile
-Xpath 16 " X: 16
-
-while asdf | Xpath 32 | endwhile | Xpath 64 " X: 0
-Xpath 128 " X: 128
-
-Xcheck 145
-
-
-"-------------------------------------------------------------------------------
-" Test 14: Failure in argument evaluation for :if {{{1
-"
-" A failure in the expression evaluation for the condition of an :if
-" does not cause the corresponding :else or :endif being matched to
-" a previous :if/:elseif. Neither of both branches of the failed :if
-" are executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-XloopINIT 1 256
-
-function! F()
- Xloop 1 " X: 1 + 256 * 1
- let x = 0
- if x " false
- Xloop 2 " X: 0 + 256 * 0
- elseif !x " always true
- Xloop 4 " X: 4 + 256 * 4
- let x = 1
- if g:boolvar " possibly undefined
- Xloop 8 " X: 8 + 256 * 0
- else
- Xloop 16 " X: 0 + 256 * 0
- endif
- Xloop 32 " X: 32 + 256 * 32
- elseif x " never executed
- Xloop 64 " X: 0 + 256 * 0
- endif
- Xloop 128 " X: 128 + 256 * 128
-endfunction
-
-let boolvar = 1
-call F()
-
-XloopNEXT
-unlet boolvar
-call F()
-
-delfunction F
-
-Xcheck 42413
-
-
-"-------------------------------------------------------------------------------
-" Test 15: Failure in argument evaluation for :if (bar) {{{1
-"
-" Like previous test, except that the failing :if ... | ... | :endif
-" is in a single line.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-XloopINIT 1 256
-
-function! F()
- Xloop 1 " X: 1 + 256 * 1
- let x = 0
- if x " false
- Xloop 2 " X: 0 + 256 * 0
- elseif !x " always true
- Xloop 4 " X: 4 + 256 * 4
- let x = 1
- if g:boolvar | Xloop 8 | else | Xloop 16 | endif " X: 8
- Xloop 32 " X: 32 + 256 * 32
- elseif x " never executed
- Xloop 64 " X: 0 + 256 * 0
- endif
- Xloop 128 " X: 128 + 256 * 128
-endfunction
-
-let boolvar = 1
-call F()
-
-XloopNEXT
-unlet boolvar
-call F()
-
-delfunction F
-
-Xcheck 42413
-
-
-"-------------------------------------------------------------------------------
-" Test 16: Double :else or :elseif after :else {{{1
-"
-" Multiple :elses or an :elseif after an :else are forbidden.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F() abort
- if 0
- Xpath 1 " X: 0
- else
- Xpath 2 " X: 2
- else " aborts function
- Xpath 4 " X: 0
- endif
-endfunction
-
-function! G() abort
- if 0
- Xpath 8 " X: 0
- else
- Xpath 16 " X: 16
- elseif 1 " aborts function
- Xpath 32 " X: 0
- else
- Xpath 64 " X: 0
- endif
-endfunction
-
-function! H() abort
- if 0
- Xpath 128 " X: 0
- elseif 0
- Xpath 256 " X: 0
- else
- Xpath 512 " X: 512
- else " aborts function
- Xpath 1024 " X: 0
- endif
-endfunction
-
-function! I() abort
- if 0
- Xpath 2048 " X: 0
- elseif 0
- Xpath 4096 " X: 0
- else
- Xpath 8192 " X: 8192
- elseif 1 " aborts function
- Xpath 16384 " X: 0
- else
- Xpath 32768 " X: 0
- endif
-endfunction
-
-call F()
-call G()
-call H()
-call I()
-
-delfunction F
-delfunction G
-delfunction H
-delfunction I
-
-Xcheck 8722
-
-
-"-------------------------------------------------------------------------------
-" Test 17: Nesting of unmatched :if or :endif inside a :while {{{1
-"
-" The :while/:endwhile takes precedence in nesting over an unclosed
-" :if or an unopened :endif.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-let messages = ""
-
-" While loops inside a function are continued on error.
-function! F()
- let v:errmsg = ""
- XloopINIT 1 16
- let loops = 3
- while loops > 0
- let loops = loops - 1 " 2: 1: 0:
- Xloop 1 " X: 1 + 1*16 + 1*16*16
- if (loops == 1)
- Xloop 2 " X: 2*16
- XloopNEXT
- continue
- elseif (loops == 0)
- Xloop 4 " X: 4*16*16
- break
- elseif 1
- Xloop 8 " X: 8
- XloopNEXT
- " endif missing!
- endwhile " :endwhile after :if 1
- Xpath 4096 " X: 16*16*16
- if MSG('E171', "Missing :endif")
- let g:messages = g:messages . "A"
- endif
-
- let v:errmsg = ""
- XloopINIT! 8192 4
- let loops = 2
- while loops > 0 " 2: 1:
- XloopNEXT
- let loops = loops - 1
- Xloop 1 " X: 8192 + 8192*4
- if 0
- Xloop 2 " X: 0
- " endif missing
- endwhile " :endwhile after :if 0
- Xpath 131072 " X: 8192*4*4
- if MSG('E171', "Missing :endif")
- let g:messages = g:messages . "B"
- endif
-
- let v:errmsg = ""
- XloopINIT 262144 4
- let loops = 2
- while loops > 0 " 2: 1:
- let loops = loops - 1
- Xloop 1 " X: 262144 + 262144 * 4
- " if missing!
- endif " :endif without :if in while
- Xloop 2 " X: 524288 + 524288 * 4
- XloopNEXT
- endwhile
- Xpath 4194304 " X: 262144*4*4
- if MSG('E580', ":endif without :if")
- let g:messages = g:messages . "C"
- endif
-endfunction
-
-call F()
-
-" Error continuation outside a function is at the outermost :endwhile or :endif.
-let v:errmsg = ""
-XloopINIT! 8388608 4
-let loops = 2
-while loops > 0 " 2: 1:
- XloopNEXT
- let loops = loops - 1
- Xloop 1 " X: 8388608 + 0 * 4
- if 0
- Xloop 2 " X: 0
- " endif missing! Following :endwhile fails.
-endwhile | Xpath 134217728 " X: 0
-Xpath 268435456 " X: 2*8388608*4*4
-if MSG('E171', "Missing :endif")
- let messages = g:messages . "D"
-endif
-
-if messages != "ABCD"
- Xpath 536870912 " X: 0
- Xout "messages is" messages "instead of ABCD"
-endif
-
-unlet loops messages
-delfunction F
-delfunction MSG
-
-Xcheck 285127993
-
-
-"-------------------------------------------------------------------------------
-" Test 18: Interrupt (Ctrl-C pressed) {{{1
-"
-" On an interrupt, the script processing is terminated immediately.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- if 1
- Xpath 1 " X: 1
- while 1
- Xpath 2 " X: 2
- if 1
- Xpath 4 " X: 4
- "INTERRUPT
- Xpath 8 " X: 0
- break
- finish
- endif | Xpath 16 " X: 0
- Xpath 32 " X: 0
- endwhile | Xpath 64 " X: 0
- Xpath 128 " X: 0
- endif | Xpath 256 " X: 0
- Xpath 512 " X: 0
-endif
-
-if ExtraVim()
- try
- Xpath 1024 " X: 1024
- "INTERRUPT
- Xpath 2048 " X: 0
- endtry | Xpath 4096 " X: 0
- Xpath 8192 " X: 0
-endif
-
-if ExtraVim()
- function! F()
- if 1
- Xpath 16384 " X: 16384
- while 1
- Xpath 32768 " X: 32768
- if 1
- Xpath 65536 " X: 65536
- "INTERRUPT
- Xpath 131072 " X: 0
- break
- return
- endif | Xpath 262144 " X: 0
- Xpath Xpath 524288 " X: 0
- endwhile | Xpath 1048576 " X: 0
- Xpath Xpath 2097152 " X: 0
- endif | Xpath Xpath 4194304 " X: 0
- Xpath Xpath 8388608 " X: 0
- endfunction
-
- call F() | Xpath 16777216 " X: 0
- Xpath 33554432 " X: 0
-endif
-
-if ExtraVim()
- function! G()
- try
- Xpath 67108864 " X: 67108864
- "INTERRUPT
- Xpath 134217728 " X: 0
- endtry | Xpath 268435456 " X: 0
- Xpath 536870912 " X: 0
- endfunction
-
- call G() | Xpath 1073741824 " X: 0
- " The Xpath command does not accept 2^31 (negative); display explicitly:
- exec "!echo 2147483648 >>" . g:ExtraVimResult
- " X: 0
-endif
-
-Xcheck 67224583
-
-
-"-------------------------------------------------------------------------------
-" Test 19: Aborting on errors inside :try/:endtry {{{1
-"
-" An error in a command dynamically enclosed in a :try/:endtry region
-" aborts script processing immediately. It does not matter whether
-" the failing command is outside or inside a function and whether a
-" function has an "abort" attribute.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- function! F() abort
- Xpath 1 " X: 1
- asdf
- Xpath 2 " X: 0
- endfunction
-
- try
- Xpath 4 " X: 4
- call F()
- Xpath 8 " X: 0
- endtry | Xpath 16 " X: 0
- Xpath 32 " X: 0
-endif
-
-if ExtraVim()
- function! G()
- Xpath 64 " X: 64
- asdf
- Xpath 128 " X: 0
- endfunction
-
- try
- Xpath 256 " X: 256
- call G()
- Xpath 512 " X: 0
- endtry | Xpath 1024 " X: 0
- Xpath 2048 " X: 0
-endif
-
-if ExtraVim()
- try
- Xpath 4096 " X: 4096
- asdf
- Xpath 8192 " X: 0
- endtry | Xpath 16384 " X: 0
- Xpath 32768 " X: 0
-endif
-
-if ExtraVim()
- if 1
- try
- Xpath 65536 " X: 65536
- asdf
- Xpath 131072 " X: 0
- endtry | Xpath 262144 " X: 0
- endif | Xpath 524288 " X: 0
- Xpath 1048576 " X: 0
-endif
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
- try
- Xpath 2097152 " X: 2097152
- asdf
- Xpath 4194304 " X: 0
- endtry | Xpath 8388608 " X: 0
- endwhile | Xpath 16777216 " X: 0
- Xpath 33554432 " X: 0
-endif
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
-" try
- Xpath 67108864 " X: 67108864
- endwhile | Xpath 134217728 " X: 0
- Xpath 268435456 " X: 0
-endif
-
-Xcheck 69275973
-"-------------------------------------------------------------------------------
-" Test 20: Aborting on errors after :try/:endtry {{{1
-"
-" When an error occurs after the last active :try/:endtry region has
-" been left, termination behavior is as if no :try/:endtry has been
-" seen.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
- try
- Xpath 1 " X: 1
- endtry
- asdf
- endwhile | Xpath 2 " X: 0
- Xpath 4 " X: 4
-endif
-
-if ExtraVim()
- while 1
- try
- Xpath 8 " X: 8
- break
- Xpath 16 " X: 0
- endtry
- endwhile
- Xpath 32 " X: 32
- asdf
- Xpath 64 " X: 64
-endif
-
-if ExtraVim()
- while 1
- try
- Xpath 128 " X: 128
- break
- Xpath 256 " X: 0
- finally
- Xpath 512 " X: 512
- endtry
- endwhile
- Xpath 1024 " X: 1024
- asdf
- Xpath 2048 " X: 2048
-endif
-
-if ExtraVim()
- while 1
- try
- Xpath 4096 " X: 4096
- finally
- Xpath 8192 " X: 8192
- break
- Xpath 16384 " X: 0
- endtry
- endwhile
- Xpath 32768 " X: 32768
- asdf
- Xpath 65536 " X: 65536
-endif
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
- try
- Xpath 131072 " X: 131072
- continue
- Xpath 262144 " X: 0
- endtry
- endwhile
- Xpath 524288 " X: 524288
- asdf
- Xpath 1048576 " X: 1048576
-endif
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
- try
- Xpath 2097152 " X: 2097152
- continue
- Xpath 4194304 " X: 0
- finally
- Xpath 8388608 " X: 8388608
- endtry
- endwhile
- Xpath 16777216 " X: 16777216
- asdf
- Xpath 33554432 " X: 33554432
-endif
-
-if ExtraVim()
- let p = 1
- while p
- let p = 0
- try
- Xpath 67108864 " X: 67108864
- finally
- Xpath 134217728 " X: 134217728
- continue
- Xpath 268435456 " X: 0
- endtry
- endwhile
- Xpath 536870912 " X: 536870912
- asdf
- Xpath 1073741824 " X: 1073741824
-endif
-
-Xcheck 1874575085
-
-
-"-------------------------------------------------------------------------------
-" Test 21: :finally for :try after :continue/:break/:return/:finish {{{1
-"
-" If a :try conditional stays inactive due to a preceding :continue,
-" :break, :return, or :finish, its :finally clause should not be
-" executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- function F()
- let loops = 2
- XloopINIT! 1 256
- while loops > 0
- XloopNEXT
- let loops = loops - 1
- try
- if loops == 1
- Xloop 1 " X: 1
- continue
- Xloop 2 " X: 0
- elseif loops == 0
- Xloop 4 " X: 4*256
- break
- Xloop 8 " X: 0
- endif
-
- try " inactive
- Xloop 16 " X: 0
- finally
- Xloop 32 " X: 0
- endtry
- finally
- Xloop 64 " X: 64 + 64*256
- endtry
- Xloop 128 " X: 0
- endwhile
-
- try
- Xpath 65536 " X: 65536
- return
- Xpath 131072 " X: 0
- try " inactive
- Xpath 262144 " X: 0
- finally
- Xpath 524288 " X: 0
- endtry
- finally
- Xpath 1048576 " X: 1048576
- endtry
- Xpath 2097152 " X: 0
- endfunction
-
- try
- Xpath 4194304 " X: 4194304
- call F()
- Xpath 8388608 " X: 8388608
- finish
- Xpath 16777216 " X: 0
- try " inactive
- Xpath 33554432 " X: 0
- finally
- Xpath 67108864 " X: 0
- endtry
- finally
- Xpath 134217728 " X: 134217728
- endtry
- Xpath 268435456 " X: 0
-endif
-
-Xcheck 147932225
-
-
-"-------------------------------------------------------------------------------
-" Test 22: :finally for a :try after an error/interrupt/:throw {{{1
-"
-" If a :try conditional stays inactive due to a preceding error or
-" interrupt or :throw, its :finally clause should not be executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- function! Error()
- try
- asdf " aborting error, triggering error exception
- endtry
- endfunction
-
- Xpath 1 " X: 1
- call Error()
- Xpath 2 " X: 0
-
- if 1 " not active due to error
- try " not active since :if inactive
- Xpath 4 " X: 0
- finally
- Xpath 8 " X: 0
- endtry
- endif
-
- try " not active due to error
- Xpath 16 " X: 0
- finally
- Xpath 32 " X: 0
- endtry
-endif
-
-if ExtraVim()
- function! Interrupt()
- try
- "INTERRUPT " triggering interrupt exception
- endtry
- endfunction
-
- Xpath 64 " X: 64
- call Interrupt()
- Xpath 128 " X: 0
-
- if 1 " not active due to interrupt
- try " not active since :if inactive
- Xpath 256 " X: 0
- finally
- Xpath 512 " X: 0
- endtry
- endif
-
- try " not active due to interrupt
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 0
- endtry
-endif
-
-if ExtraVim()
- function! Throw()
- throw "xyz"
- endfunction
-
- Xpath 4096 " X: 4096
- call Throw()
- Xpath 8192 " X: 0
-
- if 1 " not active due to :throw
- try " not active since :if inactive
- Xpath 16384 " X: 0
- finally
- Xpath 32768 " X: 0
- endtry
- endif
-
- try " not active due to :throw
- Xpath 65536 " X: 0
- finally
- Xpath 131072 " X: 0
- endtry
-endif
-
-Xcheck 4161
-
-
-"-------------------------------------------------------------------------------
-" Test 23: :catch clauses for a :try after a :throw {{{1
-"
-" If a :try conditional stays inactive due to a preceding :throw,
-" none of its :catch clauses should be executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- try
- Xpath 1 " X: 1
- throw "xyz"
- Xpath 2 " X: 0
-
- if 1 " not active due to :throw
- try " not active since :if inactive
- Xpath 4 " X: 0
- catch /xyz/
- Xpath 8 " X: 0
- endtry
- endif
- catch /xyz/
- Xpath 16 " X: 16
- endtry
-
- Xpath 32 " X: 32
- throw "abc"
- Xpath 64 " X: 0
-
- try " not active due to :throw
- Xpath 128 " X: 0
- catch /abc/
- Xpath 256 " X: 0
- endtry
-endif
-
-Xcheck 49
-
-
-"-------------------------------------------------------------------------------
-" Test 24: :endtry for a :try after a :throw {{{1
-"
-" If a :try conditional stays inactive due to a preceding :throw,
-" its :endtry should not rethrow the exception to the next surrounding
-" active :try conditional.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- try " try 1
- try " try 2
- Xpath 1 " X: 1
- throw "xyz" " makes try 2 inactive
- Xpath 2 " X: 0
-
- try " try 3
- Xpath 4 " X: 0
- endtry " no rethrow to try 1
- catch /xyz/ " should catch although try 2 inactive
- Xpath 8 " X: 8
- endtry
- catch /xyz/ " try 1 active, but exception already caught
- Xpath 16 " X: 0
- endtry
- Xpath 32 " X: 32
-endif
-
-Xcheck 41
-
-
-"-------------------------------------------------------------------------------
-" Test 25: Executing :finally clauses on normal control flow {{{1
-"
-" Control flow in a :try conditional should always fall through to its
-" :finally clause. A :finally clause of a :try conditional inside an
-" inactive conditional should never be executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- let loops = 3
- XloopINIT 1 256
- while loops > 0 " 3: 2: 1:
- Xloop 1 " X: 1 + 1*256 + 1*256*256
- if loops >= 2
- try
- Xloop 2 " X: 2 + 2*256
- if loops == 2
- try
- Xloop 4 " X: 4*256
- finally
- Xloop 8 " X: 8*256
- endtry
- endif
- finally
- Xloop 16 " X: 16 + 16*256
- if loops == 2
- try
- Xloop 32 " X: 32*256
- finally
- Xloop 64 " X: 64*256
- endtry
- endif
- endtry
- endif
- Xloop 128 " X: 128 + 128*256 + 128*256*256
- let loops = loops - 1
- XloopNEXT
- endwhile
- Xpath 16777216 " X: 16777216
-endfunction
-
-if 1
- try
- Xpath 33554432 " X: 33554432
- call F()
- Xpath 67108864 " X: 67108864
- finally
- Xpath 134217728 " X: 134217728
- endtry
-else
- try
- Xpath 268435456 " X: 0
- finally
- Xpath 536870912 " X: 0
- endtry
-endif
-
-delfunction F
-
-Xcheck 260177811
-
-
-"-------------------------------------------------------------------------------
-" Test 26: Executing :finally clauses after :continue or :break {{{1
-"
-" For a :continue or :break dynamically enclosed in a :try/:endtry
-" region inside the next surrounding :while/:endwhile, if the
-" :continue/:break is before the :finally, the :finally clause is
-" executed first. If the :continue/:break is after the :finally, the
-" :finally clause is broken (like an :if/:endif region).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
- let loops = 3
- XloopINIT! 1 32
- while loops > 0
- XloopNEXT
- try
- try
- if loops == 2 " 3: 2: 1:
- Xloop 1 " X: 1*32
- let loops = loops - 1
- continue
- elseif loops == 1
- Xloop 2 " X: 2*32*32
- break
- finish
- endif
- Xloop 4 " X: 4
- endtry
- finally
- Xloop 8 " X: 8 + 8*32 + 8*32*32
- endtry
- Xloop 16 " X: 16
- let loops = loops - 1
- endwhile
- Xpath 32768 " X: 32768
-finally
- Xpath 65536 " X: 65536
- let loops = 3
- XloopINIT 131072 16
- while loops > 0
- try
- finally
- try
- if loops == 2
- Xloop 1 " X: 131072*16
- let loops = loops - 1
- XloopNEXT
- continue
- elseif loops == 1
- Xloop 2 " X: 131072*2*16*16
- break
- finish
- endif
- endtry
- Xloop 4 " X: 131072*4
- endtry
- Xloop 8 " X: 131072*8
- let loops = loops - 1
- XloopNEXT
- endwhile
- Xpath 536870912 " X: 536870912
-endtry
-Xpath 1073741824 " X: 1073741824
-
-unlet loops
-
-Xcheck 1681500476
-
-
-"-------------------------------------------------------------------------------
-" Test 27: Executing :finally clauses after :return {{{1
-"
-" For a :return command dynamically enclosed in a :try/:endtry region,
-" :finally clauses are executed and the called function is ended.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- try
- Xpath 1 " X: 1
- try
- Xpath 2 " X: 2
- return
- Xpath 4 " X: 0
- finally
- Xpath 8 " X: 8
- endtry
- Xpath 16 " X: 0
- finally
- Xpath 32 " X: 32
- endtry
- Xpath 64 " X: 0
-endfunction
-
-function! G()
- try
- Xpath 128 " X: 128
- return
- Xpath 256 " X: 0
- finally
- Xpath 512 " X: 512
- call F()
- Xpath 1024 " X: 1024
- endtry
- Xpath 2048 " X: 0
-endfunction
-
-function! H()
- try
- Xpath 4096 " X: 4096
- call G()
- Xpath 8192 " X: 8192
- finally
- Xpath 16384 " X: 16384
- return
- Xpath 32768 " X: 0
- endtry
- Xpath 65536 " X: 0
-endfunction
-
-try
- Xpath 131072 " X: 131072
- call H()
- Xpath 262144 " X: 262144
-finally
- Xpath 524288 " X: 524288
-endtry
-Xpath 1048576 " X: 1048576
-
-Xcheck 1996459
-
-" Leave F, G, and H for execution as scripts in the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 28: Executing :finally clauses after :finish {{{1
-"
-" For a :finish command dynamically enclosed in a :try/:endtry region,
-" :finally clauses are executed and the sourced file is finished.
-"
-" This test executes the bodies of the functions F, G, and H from the
-" previous test as script files (:return replaced by :finish).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let scriptF = MakeScript("F") " X: 1 + 2 + 8 + 32
-let scriptG = MakeScript("G", scriptF) " X: 128 + 512 + 1024
-let scriptH = MakeScript("H", scriptG) " X: 4096 + 8192 + 16384
-
-try
- Xpath 131072 " X: 131072
- exec "source" scriptH
- Xpath 262144 " X: 262144
-finally
- Xpath 524288 " X: 524288
-endtry
-Xpath 1048576 " X: 1048576
-
-call delete(scriptF)
-call delete(scriptG)
-call delete(scriptH)
-unlet scriptF scriptG scriptH
-delfunction F
-delfunction G
-delfunction H
-
-Xcheck 1996459
-
-
-"-------------------------------------------------------------------------------
-" Test 29: Executing :finally clauses on errors {{{1
-"
-" After an error in a command dynamically enclosed in a :try/:endtry
-" region, :finally clauses are executed and the script processing is
-" terminated.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- function! F()
- while 1
- try
- Xpath 1 " X: 1
- while 1
- try
- Xpath 2 " X: 2
- asdf " error
- Xpath 4 " X: 0
- finally
- Xpath 8 " X: 8
- endtry | Xpath 16 " X: 0
- Xpath 32 " X: 0
- break
- endwhile
- Xpath 64 " X: 0
- finally
- Xpath 128 " X: 128
- endtry | Xpath 256 " X: 0
- Xpath 512 " X: 0
- break
- endwhile
- Xpath 1024 " X: 0
- endfunction
-
- while 1
- try
- Xpath 2048 " X: 2048
- while 1
- call F()
- Xpath 4096 " X: 0
- break
- endwhile | Xpath 8192 " X: 0
- Xpath 16384 " X: 0
- finally
- Xpath 32768 " X: 32768
- endtry | Xpath 65536 " X: 0
- endwhile | Xpath 131072 " X: 0
- Xpath 262144 " X: 0
-endif
-
-if ExtraVim()
- function! G() abort
- if 1
- try
- Xpath 524288 " X: 524288
- asdf " error
- Xpath 1048576 " X: 0
- finally
- Xpath 2097152 " X: 2097152
- endtry | Xpath 4194304 " X: 0
- endif | Xpath 8388608 " X: 0
- Xpath 16777216 " X: 0
- endfunction
-
- if 1
- try
- Xpath 33554432 " X: 33554432
- call G()
- Xpath 67108864 " X: 0
- finally
- Xpath 134217728 " X: 134217728
- endtry | Xpath 268435456 " X: 0
- endif | Xpath 536870912 " X: 0
- Xpath 1073741824 " X: 0
-endif
-
-Xcheck 170428555
-
-
-"-------------------------------------------------------------------------------
-" Test 30: Executing :finally clauses on interrupt {{{1
-"
-" After an interrupt in a command dynamically enclosed in
-" a :try/:endtry region, :finally clauses are executed and the
-" script processing is terminated.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- XloopINIT 1 16
-
- function! F()
- try
- Xloop 1 " X: 1 + 1*16
- "INTERRUPT
- Xloop 2 " X: 0
- finally
- Xloop 4 " X: 4 + 4*16
- endtry
- Xloop 8 " X: 0
- endfunction
-
- try
- Xpath 256 " X: 256
- try
- Xpath 512 " X: 512
- "INTERRUPT
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- try
- Xpath 4096 " X: 4096
- try
- Xpath 8192 " X: 8192
- finally
- Xpath 16384 " X: 16384
- try
- Xpath 32768 " X: 32768
- "INTERRUPT
- Xpath 65536 " X: 0
- endtry
- Xpath 131072 " X: 0
- endtry
- Xpath 262144 " X: 0
- endtry
- Xpath 524288 " X: 0
- endtry
- Xpath 1048576 " X: 0
- finally
- Xpath 2097152 " X: 2097152
- try
- Xpath 4194304 " X: 4194304
- call F()
- Xpath 8388608 " X: 0
- finally
- Xpath 16777216 " X: 16777216
- try
- Xpath 33554432 " X: 33554432
- XloopNEXT
- ExecAsScript F
- Xpath 67108864 " X: 0
- finally
- Xpath 134217728 " X: 134217728
- endtry
- Xpath 268435456 " X: 0
- endtry
- Xpath 536870912 " X: 0
- endtry
- Xpath 1073741824 " X: 0
-endif
-
-Xcheck 190905173
-
-
-"-------------------------------------------------------------------------------
-" Test 31: Executing :finally clauses after :throw {{{1
-"
-" After a :throw dynamically enclosed in a :try/:endtry region,
-" :finally clauses are executed and the script processing is
-" terminated.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- XloopINIT 1 16
-
- function! F()
- try
- Xloop 1 " X: 1 + 1*16
- throw "exception"
- Xloop 2 " X: 0
- finally
- Xloop 4 " X: 4 + 4*16
- endtry
- Xloop 8 " X: 0
- endfunction
-
- try
- Xpath 256 " X: 256
- try
- Xpath 512 " X: 512
- throw "exception"
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- try
- Xpath 4096 " X: 4096
- try
- Xpath 8192 " X: 8192
- finally
- Xpath 16384 " X: 16384
- try
- Xpath 32768 " X: 32768
- throw "exception"
- Xpath 65536 " X: 0
- endtry
- Xpath 131072 " X: 0
- endtry
- Xpath 262144 " X: 0
- endtry
- Xpath 524288 " X: 0
- endtry
- Xpath 1048576 " X: 0
- finally
- Xpath 2097152 " X: 2097152
- try
- Xpath 4194304 " X: 4194304
- call F()
- Xpath 8388608 " X: 0
- finally
- Xpath 16777216 " X: 16777216
- try
- Xpath 33554432 " X: 33554432
- XloopNEXT
- ExecAsScript F
- Xpath 67108864 " X: 0
- finally
- Xpath 134217728 " X: 134217728
- endtry
- Xpath 268435456 " X: 0
- endtry
- Xpath 536870912 " X: 0
- endtry
- Xpath 1073741824 " X: 0
-endif
-
-Xcheck 190905173
-
-
-"-------------------------------------------------------------------------------
-" Test 32: Remembering the :return value on :finally {{{1
-"
-" If a :finally clause is executed due to a :return specifying
-" a value, this is the value visible to the caller if not overwritten
-" by a new :return in the :finally clause. A :return without a value
-" in the :finally clause overwrites with value 0.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- try
- Xpath 1 " X: 1
- try
- Xpath 2 " X: 2
- return "ABCD"
- Xpath 4 " X: 0
- finally
- Xpath 8 " X: 8
- endtry
- Xpath 16 " X: 0
- finally
- Xpath 32 " X: 32
- endtry
- Xpath 64 " X: 0
-endfunction
-
-function! G()
- try
- Xpath 128 " X: 128
- return 8
- Xpath 256 " X: 0
- finally
- Xpath 512 " X: 512
- return 16 + strlen(F())
- Xpath 1024 " X: 0
- endtry
- Xpath 2048 " X: 0
-endfunction
-
-function! H()
- try
- Xpath 4096 " X: 4096
- return 32
- Xpath 8192 " X: 0
- finally
- Xpath 16384 " X: 16384
- return
- Xpath 32768 " X: 0
- endtry
- Xpath 65536 " X: 0
-endfunction
-
-function! I()
- try
- Xpath 131072 " X: 131072
- finally
- Xpath 262144 " X: 262144
- return G() + H() + 64
- Xpath 524288 " X: 0
- endtry
- Xpath 1048576 " X: 0
-endfunction
-
-let retcode = I()
-Xpath 2097152 " X: 2097152
-
-if retcode < 0
- Xpath 4194304 " X: 0
-endif
-if retcode % 4
- Xpath 8388608 " X: 0
-endif
-if (retcode/4) % 2
- Xpath 16777216 " X: 16777216
-endif
-if (retcode/8) % 2
- Xpath 33554432 " X: 0
-endif
-if (retcode/16) % 2
- Xpath 67108864 " X: 67108864
-endif
-if (retcode/32) % 2
- Xpath 134217728 " X: 0
-endif
-if (retcode/64) % 2
- Xpath 268435456 " X: 268435456
-endif
-if retcode/128
- Xpath 536870912 " X: 0
-endif
-
-unlet retcode
-delfunction F
-delfunction G
-delfunction H
-delfunction I
-
-Xcheck 354833067
-
-
-"-------------------------------------------------------------------------------
-" Test 33: :return under :execute or user command and :finally {{{1
-"
-" A :return command may be executed under an ":execute" or from
-" a user command. Executing of :finally clauses and passing through
-" the return code works also then.
-"-------------------------------------------------------------------------------
-XpathINIT
-
-command! -nargs=? RETURN
- \ try | return <args> | finally | return <args> * 2 | endtry
-
-function! F()
- try
- RETURN 8
- Xpath 1 " X: 0
- finally
- Xpath 2 " X: 2
- endtry
- Xpath 4 " X: 0
-endfunction
-
-function! G()
- try
- RETURN 32
- Xpath 8 " X: 0
- finally
- Xpath 16 " X: 16
- RETURN 128
- Xpath 32 " X: 0
- endtry
- Xpath 64 " X: 0
-endfunction
-
-function! H()
- try
- execute "try | return 512 | finally | return 1024 | endtry"
- Xpath 128 " X: 0
- finally
- Xpath 256 " X: 256
- endtry
- Xpath 512 " X: 0
-endfunction
-
-function! I()
- try
- execute "try | return 2048 | finally | return 4096 | endtry"
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- execute "try | return 8192 | finally | return 16384 | endtry"
- Xpath 4096 " X: 0
- endtry
- Xpath 8192 " X: 0
-endfunction
-
-function! J()
- try
- RETURN 32768
- Xpath 16384 " X: 0
- finally
- Xpath 32768 " X: 32768
- return
- Xpath 65536 " X: 0
- endtry
- Xpath 131072 " X: 0
-endfunction
-
-function! K()
- try
- execute "try | return 131072 | finally | return 262144 | endtry"
- Xpath 262144 " X: 0
- finally
- Xpath 524288 " X: 524288
- execute "try | return 524288 | finally | return | endtry"
- Xpath 1048576 " X: 0
- endtry
- Xpath 2097152 " X: 0
-endfunction
-
-function! L()
- try
- return
- Xpath 4194304 " X: 0
- finally
- Xpath 8388608 " X: 8388608
- RETURN 1048576
- Xpath 16777216 " X: 0
- endtry
- Xpath 33554432 " X: 0
-endfunction
-
-function! M()
- try
- return
- Xpath 67108864 " X: 0
- finally
- Xpath 134217728 " X: 134217728
- execute "try | return 4194304 | finally | return 8388608 | endtry"
- Xpath 268435456 " X: 0
- endtry
- Xpath 536870912 " X: 0
-endfunction
-
-function! N()
- RETURN 16777216
-endfunction
-
-function! O()
- execute "try | return 67108864 | finally | return 134217728 | endtry"
-endfunction
-
-let sum = F() + G() + H() + I() + J() + K() + L() + M()
-let expected = 16 + 256 + 1024 + 16384 + 0 + 0 + 2097152 + 8388608
-let sum = sum + N() + O()
-let expected = expected + 33554432 + 134217728
-
-if sum == expected
- Xout "sum = " . sum . " (ok)"
-else
- Xout "sum = " . sum . ", expected: " . expected
-endif
-
-Xpath 1073741824 " X: 1073741824
-
-if sum != expected
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
-endif
-
-unlet sum expected
-delfunction F
-delfunction G
-delfunction H
-delfunction I
-delfunction J
-delfunction K
-delfunction L
-delfunction M
-delfunction N
-delfunction O
-
-Xcheck 1216907538
-
-
-"-------------------------------------------------------------------------------
-" Test 34: :finally reason discarded by :continue {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by a :continue in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 8
-
- function! C(jump)
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return" || a:jump == "finish"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- continue " discards jump that caused the :finally
- Xloop 1 " X: 0
- endtry
- Xloop 2 " X: 0
- elseif loop == 2
- Xloop 4 " X: 4*(1+8+64+512+4096+32768+262144)
- endif
- endwhile
- endfunction
-
- call C("continue")
- Xpath 2097152 " X: 2097152
- call C("break")
- Xpath 4194304 " X: 4194304
- call C("return")
- Xpath 8388608 " X: 8388608
- let g:jump = "finish"
- ExecAsScript C
- unlet g:jump
- Xpath 16777216 " X: 16777216
- try
- call C("error")
- Xpath 33554432 " X: 33554432
- finally
- Xpath 67108864 " X: 67108864
- try
- call C("interrupt")
- Xpath 134217728 " X: 134217728
- finally
- Xpath 268435456 " X: 268435456
- call C("throw")
- Xpath 536870912 " X: 536870912
- endtry
- endtry
- Xpath 1073741824 " X: 1073741824
-
- delfunction C
-
-endif
-
-Xcheck 2146584868
-
-
-"-------------------------------------------------------------------------------
-" Test 35: :finally reason discarded by :break {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by a :break in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 8
-
- function! B(jump)
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return" || a:jump == "finish"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- break " discards jump that caused the :finally
- Xloop 1 " X: 0
- endtry
- elseif loop == 2
- Xloop 2 " X: 0
- endif
- endwhile
- Xloop 4 " X: 4*(1+8+64+512+4096+32768+262144)
- endfunction
-
- call B("continue")
- Xpath 2097152 " X: 2097152
- call B("break")
- Xpath 4194304 " X: 4194304
- call B("return")
- Xpath 8388608 " X: 8388608
- let g:jump = "finish"
- ExecAsScript B
- unlet g:jump
- Xpath 16777216 " X: 16777216
- try
- call B("error")
- Xpath 33554432 " X: 33554432
- finally
- Xpath 67108864 " X: 67108864
- try
- call B("interrupt")
- Xpath 134217728 " X: 134217728
- finally
- Xpath 268435456 " X: 268435456
- call B("throw")
- Xpath 536870912 " X: 536870912
- endtry
- endtry
- Xpath 1073741824 " X: 1073741824
-
- delfunction B
-
-endif
-
-Xcheck 2146584868
-
-
-"-------------------------------------------------------------------------------
-" Test 36: :finally reason discarded by :return {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by a :return in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 8
-
- function! R(jump, retval) abort
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- return a:retval " discards jump that caused the :finally
- Xloop 1 " X: 0
- endtry
- elseif loop == 2
- Xloop 2 " X: 0
- endif
- endwhile
- Xloop 4 " X: 0
- endfunction
-
- let sum = -R("continue", -8)
- Xpath 2097152 " X: 2097152
- let sum = sum - R("break", -16)
- Xpath 4194304 " X: 4194304
- let sum = sum - R("return", -32)
- Xpath 8388608 " X: 8388608
- try
- let sum = sum - R("error", -64)
- Xpath 16777216 " X: 16777216
- finally
- Xpath 33554432 " X: 33554432
- try
- let sum = sum - R("interrupt", -128)
- Xpath 67108864 " X: 67108864
- finally
- Xpath 134217728 " X: 134217728
- let sum = sum - R("throw", -256)
- Xpath 268435456 " X: 268435456
- endtry
- endtry
- Xpath 536870912 " X: 536870912
-
- let expected = 8 + 16 + 32 + 64 + 128 + 256
- if sum != expected
- Xpath 1073741824 " X: 0
- Xout "sum =" . sum . ", expected: " . expected
- endif
-
- unlet sum expected
- delfunction R
-
-endif
-
-Xcheck 1071644672
-
-
-"-------------------------------------------------------------------------------
-" Test 37: :finally reason discarded by :finish {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by a :finish in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 8
-
- function! F(jump) " not executed as function, transformed to a script
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "finish"
- finish
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- finish " discards jump that caused the :finally
- Xloop 1 " X: 0
- endtry
- elseif loop == 2
- Xloop 2 " X: 0
- endif
- endwhile
- Xloop 4 " X: 0
- endfunction
-
- let scriptF = MakeScript("F")
- delfunction F
-
- let g:jump = "continue"
- exec "source" scriptF
- Xpath 2097152 " X: 2097152
- let g:jump = "break"
- exec "source" scriptF
- Xpath 4194304 " X: 4194304
- let g:jump = "finish"
- exec "source" scriptF
- Xpath 8388608 " X: 8388608
- try
- let g:jump = "error"
- exec "source" scriptF
- Xpath 16777216 " X: 16777216
- finally
- Xpath 33554432 " X: 33554432
- try
- let g:jump = "interrupt"
- exec "source" scriptF
- Xpath 67108864 " X: 67108864
- finally
- Xpath 134217728 " X: 134217728
- try
- let g:jump = "throw"
- exec "source" scriptF
- Xpath 268435456 " X: 268435456
- finally
- Xpath 536870912 " X: 536870912
- endtry
- endtry
- endtry
- unlet g:jump
-
- call delete(scriptF)
- unlet scriptF
-
-endif
-
-Xcheck 1071644672
-
-
-"-------------------------------------------------------------------------------
-" Test 38: :finally reason discarded by an error {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by an error in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 4
-
- function! E(jump)
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return" || a:jump == "finish"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- asdf " error; discards jump that caused the :finally
- endtry
- elseif loop == 2
- Xloop 1 " X: 0
- endif
- endwhile
- Xloop 2 " X: 0
- endfunction
-
- try
- Xpath 16384 " X: 16384
- call E("continue")
- Xpath 32768 " X: 0
- finally
- try
- Xpath 65536 " X: 65536
- call E("break")
- Xpath 131072 " X: 0
- finally
- try
- Xpath 262144 " X: 262144
- call E("return")
- Xpath 524288 " X: 0
- finally
- try
- Xpath 1048576 " X: 1048576
- let g:jump = "finish"
- ExecAsScript E
- Xpath 2097152 " X: 0
- finally
- unlet g:jump
- try
- Xpath 4194304 " X: 4194304
- call E("error")
- Xpath 8388608 " X: 0
- finally
- try
- Xpath 16777216 " X: 16777216
- call E("interrupt")
- Xpath 33554432 " X: 0
- finally
- try
- Xpath 67108864 " X: 67108864
- call E("throw")
- Xpath 134217728 " X: 0
- finally
- Xpath 268435456 " X: 268435456
- delfunction E
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- Xpath 536870912 " X: 0
-
-endif
-
-Xcheck 357908480
-
-
-"-------------------------------------------------------------------------------
-" Test 39: :finally reason discarded by an interrupt {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by an interrupt in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 4
-
- function! I(jump)
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return" || a:jump == "finish"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- "INTERRUPT - discards jump that caused the :finally
- let dummy = 0
- endtry
- elseif loop == 2
- Xloop 1 " X: 0
- endif
- endwhile
- Xloop 2 " X: 0
- endfunction
-
- try
- Xpath 16384 " X: 16384
- call I("continue")
- Xpath 32768 " X: 0
- finally
- try
- Xpath 65536 " X: 65536
- call I("break")
- Xpath 131072 " X: 0
- finally
- try
- Xpath 262144 " X: 262144
- call I("return")
- Xpath 524288 " X: 0
- finally
- try
- Xpath 1048576 " X: 1048576
- let g:jump = "finish"
- ExecAsScript I
- Xpath 2097152 " X: 0
- finally
- unlet g:jump
- try
- Xpath 4194304 " X: 4194304
- call I("error")
- Xpath 8388608 " X: 0
- finally
- try
- Xpath 16777216 " X: 16777216
- call I("interrupt")
- Xpath 33554432 " X: 0
- finally
- try
- Xpath 67108864 " X: 67108864
- call I("throw")
- Xpath 134217728 " X: 0
- finally
- Xpath 268435456 " X: 268435456
- delfunction I
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- Xpath 536870912 " X: 0
-
-endif
-
-Xcheck 357908480
-
-
-"-------------------------------------------------------------------------------
-" Test 40: :finally reason discarded by :throw {{{1
-"
-" When a :finally clause is executed due to a :continue, :break,
-" :return, :finish, error, interrupt or :throw, the jump reason is
-" discarded by a :throw in the finally clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 4
-
- function! T(jump)
- XloopNEXT
- let loop = 0
- while loop < 2
- let loop = loop + 1
- if loop == 1
- try
- if a:jump == "continue"
- continue
- elseif a:jump == "break"
- break
- elseif a:jump == "return" || a:jump == "finish"
- return
- elseif a:jump == "error"
- asdf
- elseif a:jump == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:jump == "throw"
- throw "abc"
- endif
- finally
- throw "xyz" " discards jump that caused the :finally
- endtry
- elseif loop == 2
- Xloop 1 " X: 0
- endif
- endwhile
- Xloop 2 " X: 0
- endfunction
-
- try
- Xpath 16384 " X: 16384
- call T("continue")
- Xpath 32768 " X: 0
- finally
- try
- Xpath 65536 " X: 65536
- call T("break")
- Xpath 131072 " X: 0
- finally
- try
- Xpath 262144 " X: 262144
- call T("return")
- Xpath 524288 " X: 0
- finally
- try
- Xpath 1048576 " X: 1048576
- let g:jump = "finish"
- ExecAsScript T
- Xpath 2097152 " X: 0
- finally
- unlet g:jump
- try
- Xpath 4194304 " X: 4194304
- call T("error")
- Xpath 8388608 " X: 0
- finally
- try
- Xpath 16777216 " X: 16777216
- call T("interrupt")
- Xpath 33554432 " X: 0
- finally
- try
- Xpath 67108864 " X: 67108864
- call T("throw")
- Xpath 134217728 " X: 0
- finally
- Xpath 268435456 " X: 268435456
- delfunction T
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- endtry
- Xpath 536870912 " X: 0
-
-endif
-
-Xcheck 357908480
-
-
-"-------------------------------------------------------------------------------
-" Test 41: Skipped :throw finding next command {{{1
-"
-" A :throw in an inactive conditional must not hide a following
-" command.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F()
- Xpath 1 " X: 1
- if 0 | throw "never" | endif | Xpath 2 " X: 2
- Xpath 4 " X: 4
-endfunction
-
-function! G()
- Xpath 8 " X: 8
- while 0 | throw "never" | endwhile | Xpath 16 " X: 16
- Xpath 32 " X: 32
-endfunction
-
-function H()
- Xpath 64 " X: 64
- if 0 | try | throw "never" | endtry | endif | Xpath 128 " X: 128
- Xpath 256 " X: 256
-endfunction
-
-Xpath 512 " X: 512
-
-try
- Xpath 1024 " X: 1024
- call F()
- Xpath 2048 " X: 2048
-catch /.*/
- Xpath 4096 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 8192 " X: 8192
-
-try
- Xpath 16384 " X: 16384
- call G()
- Xpath 32768 " X: 32768
-catch /.*/
- Xpath 65536 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 131072 " X: 131072
-
-try
- Xpath 262144 " X: 262144
- call H()
- Xpath 524288 " X: 524288
-catch /.*/
- Xpath 1048576 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 2097152 " X: 2097152
-
-delfunction F
-delfunction G
-delfunction H
-
-Xcheck 3076095
-
-
-"-------------------------------------------------------------------------------
-" Test 42: Catching number and string exceptions {{{1
-"
-" When a number is thrown, it is converted to a string exception.
-" Numbers and strings may be caught by specifying a regular exception
-" as argument to the :catch command.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
-
- try
- Xpath 1 " X: 1
- throw 4711
- Xpath 2 " X: 0
- catch /4711/
- Xpath 4 " X: 4
- endtry
-
- try
- Xpath 8 " X: 8
- throw 4711
- Xpath 16 " X: 0
- catch /^4711$/
- Xpath 32 " X: 32
- endtry
-
- try
- Xpath 64 " X: 64
- throw 4711
- Xpath 128 " X: 0
- catch /\d/
- Xpath 256 " X: 256
- endtry
-
- try
- Xpath 512 " X: 512
- throw 4711
- Xpath 1024 " X: 0
- catch /^\d\+$/
- Xpath 2048 " X: 2048
- endtry
-
- try
- Xpath 4096 " X: 4096
- throw "arrgh"
- Xpath 8192 " X: 0
- catch /arrgh/
- Xpath 16384 " X: 16384
- endtry
-
- try
- Xpath 32768 " X: 32768
- throw "arrgh"
- Xpath 65536 " X: 0
- catch /^arrgh$/
- Xpath 131072 " X: 131072
- endtry
-
- try
- Xpath 262144 " X: 262144
- throw "arrgh"
- Xpath 524288 " X: 0
- catch /\l/
- Xpath 1048576 " X: 1048576
- endtry
-
- try
- Xpath 2097152 " X: 2097152
- throw "arrgh"
- Xpath 4194304 " X: 0
- catch /^\l\+$/
- Xpath 8388608 " X: 8388608
- endtry
-
- try
- try
- Xpath 16777216 " X: 16777216
- throw "ARRGH"
- Xpath 33554432 " X: 0
- catch /^arrgh$/
- Xpath 67108864 " X: 0
- endtry
- catch /^\carrgh$/
- Xpath 134217728 " X: 134217728
- endtry
-
- try
- Xpath 268435456 " X: 268435456
- throw ""
- Xpath 536870912 " X: 0
- catch /^$/
- Xpath 1073741824 " X: 1073741824
- endtry
-
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xcheck 1505155949
-
-
-"-------------------------------------------------------------------------------
-" Test 43: Selecting the correct :catch clause {{{1
-"
-" When an exception is thrown and there are multiple :catch clauses,
-" the first matching one is taken.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT 1 1024
-let loops = 3
-while loops > 0
- try
- if loops == 3
- Xloop 1 " X: 1
- throw "a"
- Xloop 2 " X: 0
- elseif loops == 2
- Xloop 4 " X: 4*1024
- throw "ab"
- Xloop 8 " X: 0
- elseif loops == 1
- Xloop 16 " X: 16*1024*1024
- throw "abc"
- Xloop 32 " X: 0
- endif
- catch /abc/
- Xloop 64 " X: 64*1024*1024
- catch /ab/
- Xloop 128 " X: 128*1024
- catch /.*/
- Xloop 256 " X: 256
- catch /a/
- Xloop 512 " X: 0
- endtry
-
- let loops = loops - 1
- XloopNEXT
-endwhile
-Xpath 1073741824 " X: 1073741824
-
-unlet loops
-
-Xcheck 1157763329
-
-
-"-------------------------------------------------------------------------------
-" Test 44: Missing or empty :catch patterns {{{1
-"
-" A missing or empty :catch pattern means the same as /.*/, that is,
-" catches everything. To catch only empty exceptions, /^$/ must be
-" used. A :catch with missing, empty, or /.*/ argument also works
-" when followed by another command separated by a bar on the same
-" line. :catch patterns cannot be specified between ||. But other
-" pattern separators can be used instead of //.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
- try
- Xpath 1 " X: 1
- throw ""
- catch /^$/
- Xpath 2 " X: 2
- endtry
-
- try
- Xpath 4 " X: 4
- throw ""
- catch /.*/
- Xpath 8 " X: 8
- endtry
-
- try
- Xpath 16 " X: 16
- throw ""
- catch //
- Xpath 32 " X: 32
- endtry
-
- try
- Xpath 64 " X: 64
- throw ""
- catch
- Xpath 128 " X: 128
- endtry
-
- try
- Xpath 256 " X: 256
- throw "oops"
- catch /^$/
- Xpath 512 " X: 0
- catch /.*/
- Xpath 1024 " X: 1024
- endtry
-
- try
- Xpath 2048 " X: 2048
- throw "arrgh"
- catch /^$/
- Xpath 4096 " X: 0
- catch //
- Xpath 8192 " X: 8192
- endtry
-
- try
- Xpath 16384 " X: 16384
- throw "brrr"
- catch /^$/
- Xpath 32768 " X: 0
- catch
- Xpath 65536 " X: 65536
- endtry
-
- try | Xpath 131072 | throw "x" | catch /.*/ | Xpath 262144 | endtry
- " X: 131072 + 262144
-
- try | Xpath 524288 | throw "y" | catch // | Xpath 1048576 | endtry
- " X: 524288 + 1048576
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- " Extra try level: if ":catch" without arguments below raises
- " a syntax error because it misinterprets the "Xpath" as a pattern,
- " let it be caught by the ":catch /.*/" below.
- try
- try | Xpath 2097152 | throw "z" | catch | Xpath 4194304 | :
- endtry " X: 2097152 + 4194304
- endtry
- catch /.*/
- let caught = 1
- Xout v:exception "in" v:throwpoint
- finally
- if $VIMNOERRTHROW && v:errmsg != ""
- Xout v:errmsg
- endif
- if caught || $VIMNOERRTHROW && v:errmsg != ""
- Xpath 8388608 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- let cologne = 4711
- try
- try
- Xpath 16777216 " X: 16777216
- throw "throw cologne"
- " Next lines catches all and throws 4711:
- catch |throw cologne|
- Xpath 33554432 " X: 0
- endtry
- catch /4711/
- Xpath 67108864 " X: 67108864
- endtry
-
- try
- Xpath 134217728 " X: 134217728
- throw "plus"
- catch +plus+
- Xpath 268435456 " X: 268435456
- endtry
-
- Xpath 536870912 " X: 536870912
-catch /.*/
- Xpath 1073741824 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-unlet! caught cologne
-
-Xcheck 1031761407
-
-
-"-------------------------------------------------------------------------------
-" Test 45: Catching exceptions from nested :try blocks {{{1
-"
-" When :try blocks are nested, an exception is caught by the innermost
-" try conditional that has a matching :catch clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT 1 1024
-let loops = 3
-while loops > 0
- try
- try
- try
- try
- if loops == 3
- Xloop 1 " X: 1
- throw "a"
- Xloop 2 " X: 0
- elseif loops == 2
- Xloop 4 " X: 4*1024
- throw "ab"
- Xloop 8 " X: 0
- elseif loops == 1
- Xloop 16 " X: 16*1024*1024
- throw "abc"
- Xloop 32 " X: 0
- endif
- catch /abc/
- Xloop 64 " X: 64*1024*1024
- endtry
- catch /ab/
- Xloop 128 " X: 128*1024
- endtry
- catch /.*/
- Xloop 256 " X: 256
- endtry
- catch /a/
- Xloop 512 " X: 0
- endtry
-
- let loops = loops - 1
- XloopNEXT
-endwhile
-Xpath 1073741824 " X: 1073741824
-
-unlet loops
-
-Xcheck 1157763329
-
-
-"-------------------------------------------------------------------------------
-" Test 46: Executing :finally after a :throw in nested :try {{{1
-"
-" When an exception is thrown from within nested :try blocks, the
-" :finally clauses of the non-catching try conditionals should be
-" executed before the matching :catch of the next surrounding :try
-" gets the control. If this also has a :finally clause, it is
-" executed afterwards.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let sum = 0
-
-try
- Xpath 1 " X: 1
- try
- Xpath 2 " X: 2
- try
- Xpath 4 " X: 4
- try
- Xpath 8 " X: 8
- throw "ABC"
- Xpath 16 " X: 0
- catch /xyz/
- Xpath 32 " X: 0
- finally
- Xpath 64 " X: 64
- if sum != 0
- Xpath 128 " X: 0
- endif
- let sum = sum + 1
- endtry
- Xpath 256 " X: 0
- catch /123/
- Xpath 512 " X: 0
- catch /321/
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- if sum != 1
- Xpath 4096 " X: 0
- endif
- let sum = sum + 2
- endtry
- Xpath 8192 " X: 0
- finally
- Xpath 16384 " X: 16384
- if sum != 3
- Xpath 32768 " X: 0
- endif
- let sum = sum + 4
- endtry
- Xpath 65536 " X: 0
-catch /ABC/
- Xpath 131072 " X: 131072
- if sum != 7
- Xpath 262144 " X: 0
- endif
- let sum = sum + 8
-finally
- Xpath 524288 " X: 524288
- if sum != 15
- Xpath 1048576 " X: 0
- endif
- let sum = sum + 16
-endtry
-Xpath 65536 " X: 65536
-if sum != 31
- Xpath 131072 " X: 0
-endif
-
-unlet sum
-
-Xcheck 739407
-
-
-"-------------------------------------------------------------------------------
-" Test 47: Throwing exceptions from a :catch clause {{{1
-"
-" When an exception is thrown from a :catch clause, it should not be
-" caught by a :catch of the same :try conditional. After executing
-" the :finally clause (if present), surrounding try conditionals
-" should be checked for a matching :catch.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-Xpath 1 " X: 1
-try
- Xpath 2 " X: 2
- try
- Xpath 4 " X: 4
- try
- Xpath 8 " X: 8
- throw "x1"
- Xpath 16 " X: 0
- catch /x1/
- Xpath 32 " X: 32
- try
- Xpath 64 " X: 64
- throw "x2"
- Xpath 128 " X: 0
- catch /x1/
- Xpath 256 " X: 0
- catch /x2/
- Xpath 512 " X: 512
- try
- Xpath 1024 " X: 1024
- throw "x3"
- Xpath 2048 " X: 0
- catch /x1/
- Xpath 4096 " X: 0
- catch /x2/
- Xpath 8192 " X: 0
- finally
- Xpath 16384 " X: 16384
- endtry
- Xpath 32768 " X: 0
- catch /x3/
- Xpath 65536 " X: 0
- endtry
- Xpath 131072 " X: 0
- catch /x1/
- Xpath 262144 " X: 0
- catch /x2/
- Xpath 524288 " X: 0
- catch /x3/
- Xpath 1048576 " X: 0
- finally
- Xpath 2097152 " X: 2097152
- endtry
- Xpath 4194304 " X: 0
- catch /x1/
- Xpath 8388608 " X: 0
- catch /x2/
- Xpath 16777216 " X: 0
- catch /x3/
- Xpath 33554432 " X: 33554432
- endtry
- Xpath 67108864 " X: 67108864
-catch /.*/
- Xpath 134217728 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-Xpath 268435456 " X: 268435456
-
-Xcheck 371213935
-
-
-"-------------------------------------------------------------------------------
-" Test 48: Throwing exceptions from a :finally clause {{{1
-"
-" When an exception is thrown from a :finally clause, it should not be
-" caught by a :catch of the same :try conditional. Surrounding try
-" conditionals should be checked for a matching :catch. A previously
-" thrown exception is discarded.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
-
- try
- try
- Xpath 1 " X: 1
- catch /x1/
- Xpath 2 " X: 0
- finally
- Xpath 4 " X: 4
- throw "x1"
- Xpath 8 " X: 0
- endtry
- Xpath 16 " X: 0
- catch /x1/
- Xpath 32 " X: 32
- endtry
- Xpath 64 " X: 64
-
- try
- try
- Xpath 128 " X: 128
- throw "x2"
- Xpath 256 " X: 0
- catch /x2/
- Xpath 512 " X: 512
- catch /x3/
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- throw "x3"
- Xpath 4096 " X: 0
- endtry
- Xpath 8192 " X: 0
- catch /x2/
- Xpath 16384 " X: 0
- catch /x3/
- Xpath 32768 " X: 32768
- endtry
- Xpath 65536 " X: 65536
-
- try
- try
- try
- Xpath 131072 " X: 131072
- throw "x4"
- Xpath 262144 " X: 0
- catch /x5/
- Xpath 524288 " X: 0
- finally
- Xpath 1048576 " X: 1048576
- throw "x5" " discards "x4"
- Xpath 2097152 " X: 0
- endtry
- Xpath 4194304 " X: 0
- catch /x4/
- Xpath 8388608 " X: 0
- finally
- Xpath 16777216 " X: 16777216
- endtry
- Xpath 33554432 " X: 0
- catch /x5/
- Xpath 67108864 " X: 67108864
- endtry
- Xpath 134217728 " X: 134217728
-
-catch /.*/
- Xpath 268435456 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-Xpath 536870912 " X: 536870912
-
-Xcheck 756255461
-
-
-"-------------------------------------------------------------------------------
-" Test 49: Throwing exceptions across functions {{{1
-"
-" When an exception is thrown but not caught inside a function, the
-" caller is checked for a matching :catch clause.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! C()
- try
- Xpath 1 " X: 1
- throw "arrgh"
- Xpath 2 " X: 0
- catch /arrgh/
- Xpath 4 " X: 4
- endtry
- Xpath 8 " X: 8
-endfunction
-
-XloopINIT! 16 16
-
-function! T1()
- XloopNEXT
- try
- Xloop 1 " X: 16 + 16*16
- throw "arrgh"
- Xloop 2 " X: 0
- finally
- Xloop 4 " X: 64 + 64*16
- endtry
- Xloop 8 " X: 0
-endfunction
-
-function! T2()
- try
- Xpath 4096 " X: 4096
- call T1()
- Xpath 8192 " X: 0
- finally
- Xpath 16384 " X: 16384
- endtry
- Xpath 32768 " X: 0
-endfunction
-
-try
- Xpath 65536 " X: 65536
- call C() " throw and catch
- Xpath 131072 " X: 131072
-catch /.*/
- Xpath 262144 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-try
- Xpath 524288 " X: 524288
- call T1() " throw, one level
- Xpath 1048576 " X: 0
-catch /arrgh/
- Xpath 2097152 " X: 2097152
-catch /.*/
- Xpath 4194304 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-try
- Xpath 8388608 " X: 8388608
- call T2() " throw, two levels
- Xpath 16777216 " X: 0
-catch /arrgh/
- Xpath 33554432 " X: 33554432
-catch /.*/
- Xpath 67108864 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-Xpath 134217728 " X: 134217728
-
-Xcheck 179000669
-
-" Leave C, T1, and T2 for execution as scripts in the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 50: Throwing exceptions across script files {{{1
-"
-" When an exception is thrown but not caught inside a script file,
-" the sourcing script or function is checked for a matching :catch
-" clause.
-"
-" This test executes the bodies of the functions C, T1, and T2 from
-" the previous test as script files (:return replaced by :finish).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let scriptC = MakeScript("C") " X: 1 + 4 + 8
-delfunction C
-
-XloopINIT! 16 16
-
-let scriptT1 = MakeScript("T1") " X: 16 + 64 + 16*16 + 64*16
-delfunction T1
-
-let scriptT2 = MakeScript("T2", scriptT1) " X: 4096 + 16384
-delfunction T2
-
-function! F()
- try
- Xpath 65536 " X: 65536
- exec "source" g:scriptC
- Xpath 131072 " X: 131072
- catch /.*/
- Xpath 262144 " X: 0
- Xout v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 524288 " X: 524288
- exec "source" g:scriptT1
- Xpath 1048576 " X: 0
- catch /arrgh/
- Xpath 2097152 " X: 2097152
- catch /.*/
- Xpath 4194304 " X: 0
- Xout v:exception "in" v:throwpoint
- endtry
-endfunction
-
-try
- Xpath 8388608 " X: 8388608
- call F()
- Xpath 16777216 " X: 16777216
- exec "source" scriptT2
- Xpath 33554432 " X: 0
-catch /arrgh/
- Xpath 67108864 " X: 67108864
-catch /.*/
- Xpath 134217728 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-Xpath 268435456 " X: 268435456
-
-call delete(scriptC)
-call delete(scriptT1)
-call delete(scriptT2)
-unlet scriptC scriptT1 scriptT2
-delfunction F
-
-Xcheck 363550045
-
-
-"-------------------------------------------------------------------------------
-" Test 51: Throwing exceptions across :execute and user commands {{{1
-"
-" A :throw command may be executed under an ":execute" or from
-" a user command.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-command! -nargs=? THROW1 throw <args> | throw 1
-command! -nargs=? THROW2 try | throw <args> | endtry | throw 2
-command! -nargs=? THROW3 try | throw 3 | catch /3/ | throw <args> | endtry
-command! -nargs=? THROW4 try | throw 4 | finally | throw <args> | endtry
-
-try
-
- try
- try
- Xpath 1 " X: 1
- THROW1 "A"
- catch /A/
- Xpath 2 " X: 2
- endtry
- catch /1/
- Xpath 4 " X: 0
- endtry
-
- try
- try
- Xpath 8 " X: 8
- THROW2 "B"
- catch /B/
- Xpath 16 " X: 16
- endtry
- catch /2/
- Xpath 32 " X: 0
- endtry
-
- try
- try
- Xpath 64 " X: 64
- THROW3 "C"
- catch /C/
- Xpath 128 " X: 128
- endtry
- catch /3/
- Xpath 256 " X: 0
- endtry
-
- try
- try
- Xpath 512 " X: 512
- THROW4 "D"
- catch /D/
- Xpath 1024 " X: 1024
- endtry
- catch /4/
- Xpath 2048 " X: 0
- endtry
-
- try
- try
- Xpath 4096 " X: 4096
- execute 'throw "E" | throw 5'
- catch /E/
- Xpath 8192 " X: 8192
- endtry
- catch /5/
- Xpath 16384 " X: 0
- endtry
-
- try
- try
- Xpath 32768 " X: 32768
- execute 'try | throw "F" | endtry | throw 6'
- catch /F/
- Xpath 65536 " X: 65536
- endtry
- catch /6/
- Xpath 131072 " X: 0
- endtry
-
- try
- try
- Xpath 262144 " X: 262144
- execute'try | throw 7 | catch /7/ | throw "G" | endtry'
- catch /G/
- Xpath 524288 " X: 524288
- endtry
- catch /7/
- Xpath 1048576 " X: 0
- endtry
-
- try
- try
- Xpath 2097152 " X: 2097152
- execute 'try | throw 8 | finally | throw "H" | endtry'
- catch /H/
- Xpath 4194304 " X: 4194304
- endtry
- catch /8/
- Xpath 8388608 " X: 0
- endtry
-
-catch /.*/
- Xpath 16777216 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 33554432 " X: 33554432
-
-delcommand THROW1
-delcommand THROW2
-delcommand THROW3
-delcommand THROW4
-
-Xcheck 40744667
-
-
-"-------------------------------------------------------------------------------
-" Test 52: Uncaught exceptions {{{1
-"
-" When an exception is thrown but not caught, an error message is
-" displayed when the script is terminated. In case of an interrupt
-" or error exception, the normal interrupt or error message(s) are
-" displayed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let msgfile = tempname()
-
-function! MESSAGES(...)
- try
- exec "edit" g:msgfile
- catch /^Vim(edit):/
- return 0
- endtry
-
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- let match = 1
- norm gg
-
- let num = a:0 / 2
- let cnt = 1
- while cnt <= num
- let enr = a:{2*cnt - 1}
- let emsg= a:{2*cnt}
- let cnt = cnt + 1
-
- if enr == ""
- Xout "TODO: Add message number for:" emsg
- elseif enr == "INT"
- let enr = ""
- endif
- if enr == "" && !english
- continue
- endif
- let pattern = (enr != "") ? enr . ':.*' : ''
- if english
- let pattern = pattern . emsg
- endif
- if !search(pattern, "W")
- let match = 0
- Xout "No match for:" pattern
- endif
- norm $
- endwhile
-
- bwipeout!
- return match
-endfunction
-
-if ExtraVim(msgfile)
- Xpath 1 " X: 1
- throw "arrgh"
-endif
-
-Xpath 2 " X: 2
-if !MESSAGES('E605', "Exception not caught")
- Xpath 4 " X: 0
-endif
-
-if ExtraVim(msgfile)
- try
- Xpath 8 " X: 8
- throw "oops"
- catch /arrgh/
- Xpath 16 " X: 0
- endtry
- Xpath 32 " X: 0
-endif
-
-Xpath 64 " X: 64
-if !MESSAGES('E605', "Exception not caught")
- Xpath 128 " X: 0
-endif
-
-if ExtraVim(msgfile)
- function! T()
- throw "brrr"
- endfunction
-
- try
- Xpath 256 " X: 256
- throw "arrgh"
- catch /.*/
- Xpath 512 " X: 512
- call T()
- endtry
- Xpath 1024 " X: 0
-endif
-
-Xpath 2048 " X: 2048
-if !MESSAGES('E605', "Exception not caught")
- Xpath 4096 " X: 0
-endif
-
-if ExtraVim(msgfile)
- try
- Xpath 8192 " X: 8192
- throw "arrgh"
- finally
- Xpath 16384 " X: 16384
- throw "brrr"
- endtry
- Xpath 32768 " X: 0
-endif
-
-Xpath 65536 " X: 65536
-if !MESSAGES('E605', "Exception not caught")
- Xpath 131072 " X: 0
-endif
-
-if ExtraVim(msgfile)
- try
- Xpath 262144 " X: 262144
- "INTERRUPT
- endtry
- Xpath 524288 " X: 0
-endif
-
-Xpath 1048576 " X: 1048576
-if !MESSAGES('INT', "Interrupted")
- Xpath 2097152 " X: 0
-endif
-
-if ExtraVim(msgfile)
- try
- Xpath 4194304 " X: 4194304
- let x = novar " error E121/E15; exception: E121
- catch /E15:/ " should not catch
- Xpath 8388608 " X: 0
- endtry
- Xpath 16777216 " X: 0
-endif
-
-Xpath 33554432 " X: 33554432
-if !MESSAGES('E121', "Undefined variable", 'E15', "Invalid expression")
- Xpath 67108864 " X: 0
-endif
-
-if ExtraVim(msgfile)
- try
- Xpath 134217728 " X: 134217728
-" unlet novar # " error E108/E488; exception: E488
- catch /E108:/ " should not catch
- Xpath 268435456 " X: 0
- endtry
- Xpath 536870912 " X: 0
-endif
-
-Xpath 1073741824 " X: 1073741824
-if !MESSAGES('E108', "No such variable", 'E488', "Trailing characters")
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
-endif
-
-call delete(msgfile)
-unlet msgfile
-
-Xcheck 1247112011
-
-" Leave MESSAGES() for the next tests.
-
-
-"-------------------------------------------------------------------------------
-" Test 53: Nesting errors: :endif/:else/:elseif {{{1
-"
-" For nesting errors of :if conditionals the correct error messages
-" should be given.
-"
-" This test reuses the function MESSAGES() from the previous test.
-" This functions checks the messages in g:msgfile.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let msgfile = tempname()
-
-if ExtraVim(msgfile)
-" endif
-endif
-if MESSAGES('E580', ":endif without :if")
- Xpath 1 " X: 1
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" endif
-" endwhile
-endif
-if MESSAGES('E580', ":endif without :if")
- Xpath 2 " X: 2
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" endif
-" endtry
-endif
-if MESSAGES('E580', ":endif without :if")
- Xpath 4 " X: 4
-endif
-
-if ExtraVim(msgfile)
-" try
-" endif
-" endtry
-endif
-if MESSAGES('E580', ":endif without :if")
- Xpath 8 " X: 8
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" endif
-" endtry
-endif
-if MESSAGES('E580', ":endif without :if")
- Xpath 16 " X: 16
-endif
-
-if ExtraVim(msgfile)
-" else
-endif
-if MESSAGES('E581', ":else without :if")
- Xpath 32 " X: 32
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" else
-" endwhile
-endif
-if MESSAGES('E581', ":else without :if")
- Xpath 64 " X: 64
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" else
-" endtry
-endif
-if MESSAGES('E581', ":else without :if")
- Xpath 128 " X: 128
-endif
-
-if ExtraVim(msgfile)
-" try
-" else
-" endtry
-endif
-if MESSAGES('E581', ":else without :if")
- Xpath 256 " X: 256
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" else
-" endtry
-endif
-if MESSAGES('E581', ":else without :if")
- Xpath 512 " X: 512
-endif
-
-if ExtraVim(msgfile)
-" elseif
-endif
-if MESSAGES('E582', ":elseif without :if")
- Xpath 1024 " X: 1024
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" elseif
-" endwhile
-endif
-if MESSAGES('E582', ":elseif without :if")
- Xpath 2048 " X: 2048
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" elseif
-" endtry
-endif
-if MESSAGES('E582', ":elseif without :if")
- Xpath 4096 " X: 4096
-endif
-
-if ExtraVim(msgfile)
-" try
-" elseif
-" endtry
-endif
-if MESSAGES('E582', ":elseif without :if")
- Xpath 8192 " X: 8192
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" elseif
-" endtry
-endif
-if MESSAGES('E582', ":elseif without :if")
- Xpath 16384 " X: 16384
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" else
-" else
-" endif
-endif
-if MESSAGES('E583', "multiple :else")
- Xpath 32768 " X: 32768
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" else
-" elseif 1
-" endif
-endif
-if MESSAGES('E584', ":elseif after :else")
- Xpath 65536 " X: 65536
-endif
-
-call delete(msgfile)
-unlet msgfile
-
-Xcheck 131071
-
-" Leave MESSAGES() for the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 54: Nesting errors: :while/:endwhile {{{1
-"
-" For nesting errors of :while conditionals the correct error messages
-" should be given.
-"
-" This test reuses the function MESSAGES() from the previous test.
-" This functions checks the messages in g:msgfile.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let msgfile = tempname()
-
-if ExtraVim(msgfile)
-" endwhile
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 1 " X: 1
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" endwhile
-" endif
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 2 " X: 2
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" if 1
-" endwhile
-endif
-if MESSAGES('E171', "Missing :endif")
- Xpath 4 " X: 4
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" endwhile
-" endtry
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 8 " X: 8
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" try
-" finally
-" endwhile
-endif
-if MESSAGES('E600', "Missing :endtry")
- Xpath 16 " X: 16
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" if 1
-" try
-" finally
-" endwhile
-endif
-if MESSAGES('E600', "Missing :endtry")
- Xpath 32 " X: 32
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" try
-" finally
-" if 1
-" endwhile
-endif
-if MESSAGES('E171', "Missing :endif")
- Xpath 64 " X: 64
-endif
-
-if ExtraVim(msgfile)
-" try
-" endwhile
-" endtry
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 128 " X: 128
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" try
-" endwhile
-" endtry
-" endwhile
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 256 " X: 256
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" endwhile
-" endtry
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 512 " X: 512
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" try
-" throw "a"
-" catch /a/
-" endwhile
-" endtry
-" endwhile
-endif
-if MESSAGES('E588', ":endwhile without :while")
- Xpath 1024 " X: 1024
-endif
-
-
-call delete(msgfile)
-unlet msgfile
-
-Xcheck 2047
-
-" Leave MESSAGES() for the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 55: Nesting errors: :continue/:break {{{1
-"
-" For nesting errors of :continue and :break commands the correct
-" error messages should be given.
-"
-" This test reuses the function MESSAGES() from the previous test.
-" This functions checks the messages in g:msgfile.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let msgfile = tempname()
-
-if ExtraVim(msgfile)
-" continue
-endif
-if MESSAGES('E586', ":continue without :while")
- Xpath 1 " X: 1
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" continue
-" endif
-endif
-if MESSAGES('E586', ":continue without :while")
- Xpath 2 " X: 2
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" continue
-" endtry
-endif
-if MESSAGES('E586', ":continue without :while")
- Xpath 4 " X: 4
-endif
-
-if ExtraVim(msgfile)
-" try
-" continue
-" endtry
-endif
-if MESSAGES('E586', ":continue without :while")
- Xpath 8 " X: 8
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" continue
-" endtry
-endif
-if MESSAGES('E586', ":continue without :while")
- Xpath 16 " X: 16
-endif
-
-if ExtraVim(msgfile)
-" break
-endif
-if MESSAGES('E587', ":break without :while")
- Xpath 32 " X: 32
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" break
-" endif
-endif
-if MESSAGES('E587', ":break without :while")
- Xpath 64 " X: 64
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" break
-" endtry
-endif
-if MESSAGES('E587', ":break without :while")
- Xpath 128 " X: 128
-endif
-
-if ExtraVim(msgfile)
-" try
-" break
-" endtry
-endif
-if MESSAGES('E587', ":break without :while")
- Xpath 256 " X: 256
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" break
-" endtry
-endif
-if MESSAGES('E587', ":break without :while")
- Xpath 512 " X: 512
-endif
-
-call delete(msgfile)
-unlet msgfile
-
-Xcheck 1023
-
-" Leave MESSAGES() for the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 56: Nesting errors: :endtry {{{1
-"
-" For nesting errors of :try conditionals the correct error messages
-" should be given.
-"
-" This test reuses the function MESSAGES() from the previous test.
-" This functions checks the messages in g:msgfile.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let msgfile = tempname()
-
-if ExtraVim(msgfile)
-" endtry
-endif
-if MESSAGES('E602', ":endtry without :try")
- Xpath 1 " X: 1
-endif
-
-if ExtraVim(msgfile)
-" if 1
-" endtry
-" endif
-endif
-if MESSAGES('E602', ":endtry without :try")
- Xpath 2 " X: 2
-endif
-
-if ExtraVim(msgfile)
-" while 1
-" endtry
-" endwhile
-endif
-if MESSAGES('E602', ":endtry without :try")
- Xpath 4 " X: 4
-endif
-
-if ExtraVim(msgfile)
-" try
-" if 1
-" endtry
-endif
-if MESSAGES('E171', "Missing :endif")
- Xpath 8 " X: 8
-endif
-
-if ExtraVim(msgfile)
-" try
-" while 1
-" endtry
-endif
-if MESSAGES('E170', "Missing :endwhile")
- Xpath 16 " X: 16
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" if 1
-" endtry
-endif
-if MESSAGES('E171', "Missing :endif")
- Xpath 32 " X: 32
-endif
-
-if ExtraVim(msgfile)
-" try
-" finally
-" while 1
-" endtry
-endif
-if MESSAGES('E170', "Missing :endwhile")
- Xpath 64 " X: 64
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" if 1
-" endtry
-endif
-if MESSAGES('E171', "Missing :endif")
- Xpath 128 " X: 128
-endif
-
-if ExtraVim(msgfile)
-" try
-" throw "a"
-" catch /a/
-" while 1
-" endtry
-endif
-if MESSAGES('E170', "Missing :endwhile")
- Xpath 256 " X: 256
-endif
-
-call delete(msgfile)
-unlet msgfile
-
-delfunction MESSAGES
-
-Xcheck 511
-
-
-"-------------------------------------------------------------------------------
-" Test 57: v:exception and v:throwpoint for user exceptions {{{1
-"
-" v:exception evaluates to the value of the exception that was caught
-" most recently and is not finished. (A caught exception is finished
-" when the next ":catch", ":finally", or ":endtry" is reached.)
-" v:throwpoint evaluates to the script/function name and line number
-" where that exception has been thrown.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! FuncException()
- let g:exception = v:exception
-endfunction
-
-function! FuncThrowpoint()
- let g:throwpoint = v:throwpoint
-endfunction
-
-let scriptException = MakeScript("FuncException")
-let scriptThrowPoint = MakeScript("FuncThrowpoint")
-
-command! CmdException let g:exception = v:exception
-command! CmdThrowpoint let g:throwpoint = v:throwpoint
-
-XloopINIT! 1 2
-
-function! CHECK(n, exception, throwname, throwline)
- XloopNEXT
- let error = 0
- if v:exception != a:exception
- Xout a:n.": v:exception is" v:exception "instead of" a:exception
- let error = 1
- endif
- if v:throwpoint !~ a:throwname
- let name = escape(a:throwname, '\')
- Xout a:n.": v:throwpoint (".v:throwpoint.") does not match" name
- let error = 1
- endif
- if v:throwpoint !~ a:throwline
- let line = escape(a:throwline, '\')
- Xout a:n.": v:throwpoint (".v:throwpoint.") does not match" line
- let error = 1
- endif
- if error
- Xloop 1 " X: 0
- endif
-endfunction
-
-function! T(arg, line)
- if a:line == 2
- throw a:arg " in line 2
- elseif a:line == 4
- throw a:arg " in line 4
- elseif a:line == 6
- throw a:arg " in line 6
- elseif a:line == 8
- throw a:arg " in line 8
- endif
-endfunction
-
-function! G(arg, line)
- call T(a:arg, a:line)
-endfunction
-
-function! F(arg, line)
- call G(a:arg, a:line)
-endfunction
-
-let scriptT = MakeScript("T")
-let scriptG = MakeScript("G", scriptT)
-let scriptF = MakeScript("F", scriptG)
-
-try
- Xpath 32768 " X: 32768
- call F("oops", 2)
-catch /.*/
- Xpath 65536 " X: 65536
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(1, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- exec "let exception = v:exception"
- exec "let throwpoint = v:throwpoint"
- call CHECK(2, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- CmdException
- CmdThrowpoint
- call CHECK(3, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- call FuncException()
- call FuncThrowpoint()
- call CHECK(4, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- exec "source" scriptException
- exec "source" scriptThrowPoint
- call CHECK(5, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- try
- Xpath 131072 " X: 131072
- call G("arrgh", 4)
- catch /.*/
- Xpath 262144 " X: 262144
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(6, "arrgh", '\<G\.\.T\>', '\<4\>')
- try
- Xpath 524288 " X: 524288
- let g:arg = "autsch"
- let g:line = 6
- exec "source" scriptF
- catch /.*/
- Xpath 1048576 " X: 1048576
- let exception = v:exception
- let throwpoint = v:throwpoint
- " Symbolic links in tempname()s are not resolved, whereas resolving
- " is done for v:throwpoint. Resolve the temporary file name for
- " scriptT, so that it can be matched against v:throwpoint.
- call CHECK(7, "autsch", resolve(scriptT), '\<6\>')
- finally
- Xpath 2097152 " X: 2097152
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(8, "arrgh", '\<G\.\.T\>', '\<4\>')
- try
- Xpath 4194304 " X: 4194304
- let g:arg = "brrrr"
- let g:line = 8
- exec "source" scriptG
- catch /.*/
- Xpath 8388608 " X: 8388608
- let exception = v:exception
- let throwpoint = v:throwpoint
- " Resolve scriptT for matching it against v:throwpoint.
- call CHECK(9, "brrrr", resolve(scriptT), '\<8\>')
- finally
- Xpath 16777216 " X: 16777216
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(10, "arrgh", '\<G\.\.T\>', '\<4\>')
- endtry
- Xpath 33554432 " X: 33554432
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(11, "arrgh", '\<G\.\.T\>', '\<4\>')
- endtry
- Xpath 67108864 " X: 67108864
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(12, "arrgh", '\<G\.\.T\>', '\<4\>')
- finally
- Xpath 134217728 " X: 134217728
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(13, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
- endtry
- Xpath 268435456 " X: 268435456
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(14, "oops", '\<F\.\.G\.\.T\>', '\<2\>')
-finally
- Xpath 536870912 " X: 536870912
- let exception = v:exception
- let throwpoint = v:throwpoint
- call CHECK(15, "", '^$', '^$')
-endtry
-
-Xpath 1073741824 " X: 1073741824
-
-unlet exception throwpoint
-delfunction FuncException
-delfunction FuncThrowpoint
-call delete(scriptException)
-call delete(scriptThrowPoint)
-unlet scriptException scriptThrowPoint
-delcommand CmdException
-delcommand CmdThrowpoint
-delfunction T
-delfunction G
-delfunction F
-call delete(scriptT)
-call delete(scriptG)
-call delete(scriptF)
-unlet scriptT scriptG scriptF
-
-Xcheck 2147450880
-
-
-"-------------------------------------------------------------------------------
-"
-" Test 58: v:exception and v:throwpoint for error/interrupt exceptions {{{1
-"
-" v:exception and v:throwpoint work also for error and interrupt
-" exceptions.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- function! T(line)
- if a:line == 2
- delfunction T " error (function in use) in line 2
- elseif a:line == 4
- let dummy = 0 " INTERRUPT1 - interrupt in line 4
- endif
- endfunction
-
- while 1
- try
- Xpath 1 " X: 1
- let caught = 0
- call T(2)
- catch /.*/
- let caught = 1
- if v:exception !~ 'Vim(delfunction):'
- Xpath 2 " X: 0
- endif
- if v:throwpoint !~ '\<T\>'
- Xpath 4 " X: 0
- endif
- if v:throwpoint !~ '\<2\>'
- Xpath 8 " X: 0
- endif
- finally
- Xpath 16 " X: 16
- if caught || $VIMNOERRTHROW
- Xpath 32 " X: 32
- endif
- if v:exception != ""
- Xpath 64 " X: 0
- endif
- if v:throwpoint != ""
- Xpath 128 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- Xpath 256 " X: 256
- if v:exception != ""
- Xpath 512 " X: 0
- endif
- if v:throwpoint != ""
- Xpath 1024 " X: 0
- endif
-
- while 1
- try
- Xpath 2048 " X: 2048
- let caught = 0
- call T(4)
- catch /.*/
- let caught = 1
- if v:exception != 'Vim:Interrupt'
- Xpath 4096 " X: 0
- endif
- if v:throwpoint !~ '\<T\>'
- Xpath 8192 " X: 0
- endif
- if v:throwpoint !~ '\<4\>'
- Xpath 16384 " X: 0
- endif
- finally
- Xpath 32768 " X: 32768
- if caught || $VIMNOINTTHROW
- Xpath 65536 " X: 65536
- endif
- if v:exception != ""
- Xpath 131072 " X: 0
- endif
- if v:throwpoint != ""
- Xpath 262144 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- Xpath 524288 " X: 524288
- if v:exception != ""
- Xpath 1048576 " X: 0
- endif
- if v:throwpoint != ""
- Xpath 2097152 " X: 0
- endif
-
-endif
-
-Xcheck 624945
-
-
-"-------------------------------------------------------------------------------
-"
-" Test 59: v:exception and v:throwpoint when discarding exceptions {{{1
-"
-" When a :catch clause is left by a ":break" etc or an error or
-" interrupt exception, v:exception and v:throwpoint are reset. They
-" are not affected by an exception that is discarded before being
-" caught.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- XloopINIT! 1 2
-
- let sfile = expand("<sfile>")
-
- function! LineNumber()
- return substitute(substitute(v:throwpoint, g:sfile, '', ""),
- \ '\D*\(\d*\).*', '\1', "")
- endfunction
-
- command! -nargs=1 SetLineNumber
- \ try | throw "line" | catch /.*/ | let <args> = LineNumber() | endtry
-
- " Check v:exception/v:throwpoint against second/fourth parameter if
- " specified, check for being empty else.
- function! CHECK(n, ...)
- XloopNEXT
- let exception = a:0 != 0 ? a:1 : "" " second parameter (optional)
- let emsg = a:0 != 0 ? a:2 : "" " third parameter (optional)
- let line = a:0 != 0 ? a:3 : 0 " fourth parameter (optional)
- let error = 0
- if emsg != ""
- " exception is the error number, emsg the English error message text
- if exception !~ '^E\d\+$'
- Xout "TODO: Add message number for:" emsg
- elseif v:lang == "C" || v:lang =~ '^[Ee]n'
- if exception == "E492" && emsg == "Not an editor command"
- let exception = '^Vim:' . exception . ': ' . emsg
- else
- let exception = '^Vim(\a\+):' . exception . ': ' . emsg
- endif
- else
- if exception == "E492"
- let exception = '^Vim:' . exception
- else
- let exception = '^Vim(\a\+):' . exception
- endif
- endif
- endif
- if exception == "" && v:exception != ""
- Xout a:n.": v:exception is set:" v:exception
- let error = 1
- elseif exception != "" && v:exception !~ exception
- Xout a:n.": v:exception (".v:exception.") does not match" exception
- let error = 1
- endif
- if line == 0 && v:throwpoint != ""
- Xout a:n.": v:throwpoint is set:" v:throwpoint
- let error = 1
- elseif line != 0 && v:throwpoint !~ '\<' . line . '\>'
- Xout a:n.": v:throwpoint (".v:throwpoint.") does not match" line
- let error = 1
- endif
- if !error
- Xloop 1 " X: 2097151
- endif
- endfunction
-
- while 1
- try
- throw "x1"
- catch /.*/
- break
- endtry
- endwhile
- call CHECK(1)
-
- while 1
- try
- throw "x2"
- catch /.*/
- break
- finally
- call CHECK(2)
- endtry
- break
- endwhile
- call CHECK(3)
-
- while 1
- try
- let errcaught = 0
- try
- try
- throw "x3"
- catch /.*/
- SetLineNumber line_before_error
- asdf
- endtry
- catch /.*/
- let errcaught = 1
- call CHECK(4, 'E492', "Not an editor command",
- \ line_before_error + 1)
- endtry
- finally
- if !errcaught && $VIMNOERRTHROW
- call CHECK(4)
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- call CHECK(5)
-
- Xpath 2097152 " X: 2097152
-
- while 1
- try
- let intcaught = 0
- try
- try
- throw "x4"
- catch /.*/
- SetLineNumber two_lines_before_interrupt
- "INTERRUPT
- let dummy = 0
- endtry
- catch /.*/
- let intcaught = 1
- call CHECK(6, "Vim:Interrupt", '',
- \ two_lines_before_interrupt + 2)
- endtry
- finally
- if !intcaught && $VIMNOINTTHROW
- call CHECK(6)
- endif
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
- call CHECK(7)
-
- Xpath 4194304 " X: 4194304
-
- while 1
- try
- let errcaught = 0
- try
- try
-" if 1
- SetLineNumber line_before_throw
- throw "x5"
- " missing endif
- catch /.*/
- Xpath 8388608 " X: 0
- endtry
- catch /.*/
- let errcaught = 1
- call CHECK(8, 'E171', "Missing :endif", line_before_throw + 3)
- endtry
- finally
- if !errcaught && $VIMNOERRTHROW
- call CHECK(8)
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- call CHECK(9)
-
- Xpath 16777216 " X: 16777216
-
- try
- while 1
- try
- throw "x6"
- finally
- break
- endtry
- break
- endwhile
- catch /.*/
- Xpath 33554432 " X: 0
- endtry
- call CHECK(10)
-
- try
- while 1
- try
- throw "x7"
- finally
- break
- endtry
- break
- endwhile
- catch /.*/
- Xpath 67108864 " X: 0
- finally
- call CHECK(11)
- endtry
- call CHECK(12)
-
- while 1
- try
- let errcaught = 0
- try
- try
- throw "x8"
- finally
- SetLineNumber line_before_error
- asdf
- endtry
- catch /.*/
- let errcaught = 1
- call CHECK(13, 'E492', "Not an editor command",
- \ line_before_error + 1)
- endtry
- finally
- if !errcaught && $VIMNOERRTHROW
- call CHECK(13)
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- call CHECK(14)
-
- Xpath 134217728 " X: 134217728
-
- while 1
- try
- let intcaught = 0
- try
- try
- throw "x9"
- finally
- SetLineNumber two_lines_before_interrupt
- "INTERRUPT
- endtry
- catch /.*/
- let intcaught = 1
- call CHECK(15, "Vim:Interrupt", '',
- \ two_lines_before_interrupt + 2)
- endtry
- finally
- if !intcaught && $VIMNOINTTHROW
- call CHECK(15)
- endif
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
- call CHECK(16)
-
- Xpath 268435456 " X: 268435456
-
- while 1
- try
- let errcaught = 0
- try
- try
-" if 1
- SetLineNumber line_before_throw
- throw "x10"
- " missing endif
- finally
- call CHECK(17)
- endtry
- catch /.*/
- let errcaught = 1
- call CHECK(18, 'E171', "Missing :endif", line_before_throw + 3)
- endtry
- finally
- if !errcaught && $VIMNOERRTHROW
- call CHECK(18)
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- call CHECK(19)
-
- Xpath 536870912 " X: 536870912
-
- while 1
- try
- let errcaught = 0
- try
- try
-" if 1
- SetLineNumber line_before_throw
- throw "x11"
- " missing endif
- endtry
- catch /.*/
- let errcaught = 1
- call CHECK(20, 'E171', "Missing :endif", line_before_throw + 3)
- endtry
- finally
- if !errcaught && $VIMNOERRTHROW
- call CHECK(20)
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- call CHECK(21)
-
- Xpath 1073741824 " X: 1073741824
-
-endif
-
-Xcheck 2038431743
-
-
-"-------------------------------------------------------------------------------
-"
-" Test 60: (Re)throwing v:exception; :echoerr. {{{1
-"
-" A user exception can be rethrown after catching by throwing
-" v:exception. An error or interrupt exception cannot be rethrown
-" because Vim exceptions cannot be faked. A Vim exception using the
-" value of v:exception can, however, be triggered by the :echoerr
-" command.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-try
- try
- Xpath 1 " X: 1
- throw "oops"
- catch /oops/
- Xpath 2 " X: 2
- throw v:exception " rethrow user exception
- catch /.*/
- Xpath 4 " X: 0
- endtry
-catch /^oops$/ " catches rethrown user exception
- Xpath 8 " X: 8
-catch /.*/
- Xpath 16 " X: 0
-endtry
-
-function! F()
- try
- let caught = 0
- try
- Xpath 32 " X: 32
- write /n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e
- Xpath 64 " X: 0
- Xout "did_emsg was reset before executing " .
- \ "BufWritePost autocommands."
- catch /^Vim(write):/
- let caught = 1
- throw v:exception " throw error: cannot fake Vim exception
- catch /.*/
- Xpath 128 " X: 0
- finally
- Xpath 256 " X: 256
- if !caught && !$VIMNOERRTHROW
- Xpath 512 " X: 0
- endif
- endtry
- catch /^Vim(throw):/ " catches throw error
- let caught = caught + 1
- catch /.*/
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- if caught != 2
- if !caught && !$VIMNOERRTHROW
- Xpath 4096 " X: 0
- elseif caught
- Xpath 8192 " X: 0
- endif
- return | " discard error for $VIMNOERRTHROW
- endif
- endtry
-endfunction
-
-call F()
-delfunction F
-
-function! G()
- try
- let caught = 0
- try
- Xpath 16384 " X: 16384
- asdf
- catch /^Vim/ " catch error exception
- let caught = 1
- " Trigger Vim error exception with value specified after :echoerr
- let value = substitute(v:exception, '^Vim\((.*)\)\=:', '', "")
- echoerr value
- catch /.*/
- Xpath 32768 " X: 0
- finally
- Xpath 65536 " X: 65536
- if !caught
- if !$VIMNOERRTHROW
- Xpath 131072 " X: 0
- else
- let value = "Error"
- echoerr value
- endif
- endif
- endtry
- catch /^Vim(echoerr):/
- let caught = caught + 1
- if v:exception !~ value
- Xpath 262144 " X: 0
- endif
- catch /.*/
- Xpath 524288 " X: 0
- finally
- Xpath 1048576 " X: 1048576
- if caught != 2
- if !caught && !$VIMNOERRTHROW
- Xpath 2097152 " X: 0
- elseif caught
- Xpath 4194304 " X: 0
- endif
- return | " discard error for $VIMNOERRTHROW
- endif
- endtry
-endfunction
-
-call G()
-delfunction G
-
-unlet! value caught
-
-if ExtraVim()
- try
- let errcaught = 0
- try
- Xpath 8388608 " X: 8388608
- let intcaught = 0
- "INTERRUPT
- catch /^Vim:/ " catch interrupt exception
- let intcaught = 1
- " Trigger Vim error exception with value specified after :echoerr
- echoerr substitute(v:exception, '^Vim\((.*)\)\=:', '', "")
- catch /.*/
- Xpath 16777216 " X: 0
- finally
- Xpath 33554432 " X: 33554432
- if !intcaught
- if !$VIMNOINTTHROW
- Xpath 67108864 " X: 0
- else
- echoerr "Interrupt"
- endif
- endif
- endtry
- catch /^Vim(echoerr):/
- let errcaught = 1
- if v:exception !~ "Interrupt"
- Xpath 134217728 " X: 0
- endif
- finally
- Xpath 268435456 " X: 268435456
- if !errcaught && !$VIMNOERRTHROW
- Xpath 536870912 " X: 0
- endif
- endtry
-endif
-
-Xcheck 311511339
-
-
-"-------------------------------------------------------------------------------
-" Test 61: Catching interrupt exceptions {{{1
-"
-" When an interrupt occurs inside a :try/:endtry region, an
-" interrupt exception is thrown and can be caught. Its value is
-" "Vim:Interrupt". If the interrupt occurs after an error or a :throw
-" but before a matching :catch is reached, all following :catches of
-" that try block are ignored, but the interrupt exception can be
-" caught by the next surrounding try conditional. An interrupt is
-" ignored when there is a previous interrupt that has not been caught
-" or causes a :finally clause to be executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- while 1
- try
- try
- Xpath 1 " X: 1
- let caught = 0
- "INTERRUPT
- Xpath 2 " X: 0
- catch /^Vim:Interrupt$/
- let caught = 1
- finally
- Xpath 4 " X: 4
- if caught || $VIMNOINTTHROW
- Xpath 8 " X: 8
- endif
- endtry
- catch /.*/
- Xpath 16 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- let caught = 0
- try
- Xpath 32 " X: 32
- asdf
- Xpath 64 " X: 0
- catch /do_not_catch/
- Xpath 128 " X: 0
- catch /.*/ "INTERRUPT - throw interrupt if !$VIMNOERRTHROW
- Xpath 256 " X: 0
- catch /.*/
- Xpath 512 " X: 0
- finally "INTERRUPT - throw interrupt if $VIMNOERRTHROW
- Xpath 1024 " X: 1024
- endtry
- catch /^Vim:Interrupt$/
- let caught = 1
- finally
- Xpath 2048 " X: 2048
- if caught || $VIMNOINTTHROW
- Xpath 4096 " X: 4096
- endif
- endtry
- catch /.*/
- Xpath 8192 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- let caught = 0
- try
- Xpath 16384 " X: 16384
- throw "x"
- Xpath 32768 " X: 0
- catch /do_not_catch/
- Xpath 65536 " X: 0
- catch /x/ "INTERRUPT
- Xpath 131072 " X: 0
- catch /.*/
- Xpath 262144 " X: 0
- endtry
- catch /^Vim:Interrupt$/
- let caught = 1
- finally
- Xpath 524288 " X: 524288
- if caught || $VIMNOINTTHROW
- Xpath 1048576 " X: 1048576
- endif
- endtry
- catch /.*/
- Xpath 2097152 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
-
- while 1
- try
- let caught = 0
- try
- Xpath 4194304 " X: 4194304
- "INTERRUPT
- Xpath 8388608 " X: 0
- catch /do_not_catch/ "INTERRUPT
- Xpath 16777216 " X: 0
- catch /^Vim:Interrupt$/
- let caught = 1
- finally
- Xpath 33554432 " X: 33554432
- if caught || $VIMNOINTTHROW
- Xpath 67108864 " X: 67108864
- endif
- endtry
- catch /.*/
- Xpath 134217728 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard interrupt for $VIMNOINTTHROW
- endtry
- endwhile
-
- Xpath 268435456 " X: 268435456
-
-endif
-
-Xcheck 374889517
-
-
-"-------------------------------------------------------------------------------
-" Test 62: Catching error exceptions {{{1
-"
-" An error inside a :try/:endtry region is converted to an exception
-" and can be caught. The error exception has a "Vim(cmdname):" prefix
-" where cmdname is the name of the failing command, or a "Vim:" prefix
-" if no command name is known. The "Vim" prefixes cannot be faked.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-while 1
- try
- try
- let caught = 0
- unlet novar
- catch /^Vim(unlet):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(unlet):', '', "")
- finally
- Xpath 1 " X: 1
- if !caught && !$VIMNOERRTHROW
- Xpath 2 " X: 0
- endif
- if !MSG('E108', "No such variable")
- Xpath 4 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 8 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let caught = 0
- throw novar " error in :throw
- catch /^Vim(throw):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(throw):', '', "")
- finally
- Xpath 16 " X: 16
- if !caught && !$VIMNOERRTHROW
- Xpath 32 " X: 0
- endif
- if caught ? !MSG('E121', "Undefined variable")
- \ : !MSG('E15', "Invalid expression")
- Xpath 64 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 128 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let caught = 0
- throw "Vim:faked" " error: cannot fake Vim exception
- catch /^Vim(throw):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(throw):', '', "")
- finally
- Xpath 256 " X: 256
- if !caught && !$VIMNOERRTHROW
- Xpath 512 " X: 0
- endif
- if !MSG('E608', "Cannot :throw exceptions with 'Vim' prefix")
- Xpath 1024 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 2048 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-function! F()
- while 1
- " Missing :endwhile
-endfunction
-
-while 1
- try
- try
- let caught = 0
- call F()
- catch /^Vim(endfunction):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(endfunction):', '', "")
- finally
- Xpath 4096 " X: 4096
- if !caught && !$VIMNOERRTHROW
- Xpath 8192 " X: 0
- endif
- if !MSG('E170', "Missing :endwhile")
- Xpath 16384 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 32768 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let caught = 0
- ExecAsScript F
- catch /^Vim:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim:', '', "")
- finally
- Xpath 65536 " X: 65536
- if !caught && !$VIMNOERRTHROW
- Xpath 131072 " X: 0
- endif
- if !MSG('E170', "Missing :endwhile")
- Xpath 262144 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 524288 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-function! G()
- call G()
-endfunction
-
-while 1
- try
- let mfd_save = &mfd
- set mfd=3
- try
- let caught = 0
- call G()
- catch /^Vim(call):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(call):', '', "")
- finally
- Xpath 1048576 " X: 1048576
- if !caught && !$VIMNOERRTHROW
- Xpath 2097152 " X: 0
- endif
- if !MSG('E132', "Function call depth is higher than 'maxfuncdepth'")
- Xpath 4194304 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 8388608 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- let &mfd = mfd_save
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-function! H()
- return H()
-endfunction
-
-while 1
- try
- let mfd_save = &mfd
- set mfd=3
- try
- let caught = 0
- call H()
- catch /^Vim(return):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(return):', '', "")
- finally
- Xpath 16777216 " X: 16777216
- if !caught && !$VIMNOERRTHROW
- Xpath 33554432 " X: 0
- endif
- if !MSG('E132', "Function call depth is higher than 'maxfuncdepth'")
- Xpath 67108864 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 134217728 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- let &mfd = mfd_save
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-unlet! caught mfd_save
-delfunction F
-delfunction G
-delfunction H
-Xpath 268435456 " X: 268435456
-
-Xcheck 286331153
-
-" Leave MSG() for the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 63: Suppressing error exceptions by :silent!. {{{1
-"
-" A :silent! command inside a :try/:endtry region suppresses the
-" conversion of errors to an exception and the immediate abortion on
-" error. When the commands executed by the :silent! themselves open
-" a new :try/:endtry region, conversion of errors to exception and
-" immediate abortion is switched on again - until the next :silent!
-" etc. The :silent! has the effect of setting v:errmsg to the error
-" message text (without displaying it) and continuing with the next
-" script line.
-"
-" When a command triggering autocommands is executed by :silent!
-" inside a :try/:endtry, the autocommand execution is not suppressed
-" on error.
-"
-" This test reuses the function MSG() from the previous test.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT! 1 4
-
-let taken = ""
-
-function! S(n) abort
- XloopNEXT
- let g:taken = g:taken . "E" . a:n
- let v:errmsg = ""
- exec "asdf" . a:n
-
- " Check that ":silent!" continues:
- Xloop 1
-
- " Check that ":silent!" sets "v:errmsg":
- if MSG('E492', "Not an editor command")
- Xloop 2
- endif
-endfunction
-
-function! Foo()
- while 1
- try
- try
- let caught = 0
- " This is not silent:
- call S(3) " X: 0 * 16
- catch /^Vim:/
- let caught = 1
- let errmsg3 = substitute(v:exception, '^Vim:', '', "")
- silent! call S(4) " X: 3 * 64
- finally
- if !caught
- let errmsg3 = v:errmsg
- " Do call S(4) here if not executed in :catch.
- silent! call S(4)
- endif
- Xpath 1048576 " X: 1048576
- if !caught && !$VIMNOERRTHROW
- Xpath 2097152 " X: 0
- endif
- let v:errmsg = errmsg3
- if !MSG('E492', "Not an editor command")
- Xpath 4194304 " X: 0
- endif
- silent! call S(5) " X: 3 * 256
- " Break out of try conditionals that cover ":silent!". This also
- " discards the aborting error when $VIMNOERRTHROW is non-zero.
- break
- endtry
- catch /.*/
- Xpath 8388608 " X: 0
- Xout v:exception "in" v:throwpoint
- endtry
- endwhile
- " This is a double ":silent!" (see caller).
- silent! call S(6) " X: 3 * 1024
-endfunction
-
-function! Bar()
- try
- silent! call S(2) " X: 3 * 4
- " X: 3 * 4096
- silent! execute "call Foo() | call S(7)"
- silent! call S(8) " X: 3 * 16384
- endtry " normal end of try cond that covers ":silent!"
- " This has a ":silent!" from the caller:
- call S(9) " X: 3 * 65536
-endfunction
-
-silent! call S(1) " X: 3 * 1
-silent! call Bar()
-silent! call S(10) " X: 3 * 262144
-
-let expected = "E1E2E3E4E5E6E7E8E9E10"
-if taken != expected
- Xpath 16777216 " X: 0
- Xout "'taken' is" taken "instead of" expected
-endif
-
-augroup TMP
- autocmd BufWritePost * Xpath 33554432 " X: 33554432
-augroup END
-
-Xpath 67108864 " X: 67108864
-write /i/m/p/o/s/s/i/b/l/e
-Xpath 134217728 " X: 134217728
-
-autocmd! TMP
-unlet! caught errmsg3 taken expected
-delfunction S
-delfunction Foo
-delfunction Bar
-delfunction MSG
-
-Xcheck 236978127
-
-
-"-------------------------------------------------------------------------------
-" Test 64: Error exceptions after error, interrupt or :throw {{{1
-"
-" When an error occurs after an interrupt or a :throw but before
-" a matching :catch is reached, all following :catches of that try
-" block are ignored, but the error exception can be caught by the next
-" surrounding try conditional. Any previous error exception is
-" discarded. An error is ignored when there is a previous error that
-" has not been caught.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- while 1
- try
- try
- Xpath 1 " X: 1
- let caught = 0
- while 1
-" if 1
- " Missing :endif
- endwhile " throw error exception
- catch /^Vim(/
- let caught = 1
- finally
- Xpath 2 " X: 2
- if caught || $VIMNOERRTHROW
- Xpath 4 " X: 4
- endif
- endtry
- catch /.*/
- Xpath 8 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- Xpath 16 " X: 16
- let caught = 0
- try
-" if 1
- " Missing :endif
- catch /.*/ " throw error exception
- Xpath 32 " X: 0
- catch /.*/
- Xpath 64 " X: 0
- endtry
- catch /^Vim(/
- let caught = 1
- finally
- Xpath 128 " X: 128
- if caught || $VIMNOERRTHROW
- Xpath 256 " X: 256
- endif
- endtry
- catch /.*/
- Xpath 512 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- let caught = 0
- try
- Xpath 1024 " X: 1024
- "INTERRUPT
- catch /do_not_catch/
- Xpath 2048 " X: 0
-" if 1
- " Missing :endif
- catch /.*/ " throw error exception
- Xpath 4096 " X: 0
- catch /.*/
- Xpath 8192 " X: 0
- endtry
- catch /^Vim(/
- let caught = 1
- finally
- Xpath 16384 " X: 16384
- if caught || $VIMNOERRTHROW
- Xpath 32768 " X: 32768
- endif
- endtry
- catch /.*/
- Xpath 65536 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- let caught = 0
- try
- Xpath 131072 " X: 131072
- throw "x"
- catch /do_not_catch/
- Xpath 262144 " X: 0
-" if 1
- " Missing :endif
- catch /x/ " throw error exception
- Xpath 524288 " X: 0
- catch /.*/
- Xpath 1048576 " X: 0
- endtry
- catch /^Vim(/
- let caught = 1
- finally
- Xpath 2097152 " X: 2097152
- if caught || $VIMNOERRTHROW
- Xpath 4194304 " X: 4194304
- endif
- endtry
- catch /.*/
- Xpath 8388608 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- try
- let caught = 0
- Xpath 16777216 " X: 16777216
-" endif " :endif without :if; throw error exception
-" if 1
- " Missing :endif
- catch /do_not_catch/ " ignore new error
- Xpath 33554432 " X: 0
- catch /^Vim(endif):/
- let caught = 1
- catch /^Vim(/
- Xpath 67108864 " X: 0
- finally
- Xpath 134217728 " X: 134217728
- if caught || $VIMNOERRTHROW
- Xpath 268435456 " X: 268435456
- endif
- endtry
- catch /.*/
- Xpath 536870912 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- Xpath 1073741824 " X: 1073741824
-
-endif
-
-Xcheck 1499645335
-
-
-"-------------------------------------------------------------------------------
-" Test 65: Errors in the /pattern/ argument of a :catch {{{1
-"
-" On an error in the /pattern/ argument of a :catch, the :catch does
-" not match. Any following :catches of the same :try/:endtry don't
-" match either. Finally clauses are executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-try
- try
- Xpath 1 " X: 1
- throw "oops"
- catch /^oops$/
- Xpath 2 " X: 2
- catch /\)/ " not checked; exception has already been caught
- Xpath 4 " X: 0
- endtry
- Xpath 8 " X: 8
-catch /.*/
- Xpath 16 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-function! F()
- try
- let caught = 0
- try
- try
- Xpath 32 " X: 32
- throw "ab"
- catch /abc/ " does not catch
- Xpath 64 " X: 0
- catch /\)/ " error; discards exception
- Xpath 128 " X: 0
- catch /.*/ " not checked
- Xpath 256 " X: 0
- finally
- Xpath 512 " X: 512
- endtry
- Xpath 1024 " X: 0
- catch /^ab$/ " checked, but original exception is discarded
- Xpath 2048 " X: 0
- catch /^Vim(catch):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(catch):', '', "")
- finally
- Xpath 4096 " X: 4096
- if !caught && !$VIMNOERRTHROW
- Xpath 8192 " X: 0
- endif
- if caught ? !MSG('E55', 'Unmatched \\)')
- \ : !MSG('E475', "Invalid argument")
- Xpath 16384 " X: 0
- endif
- if !caught
- return | " discard error
- endif
- endtry
- catch /.*/
- Xpath 32768 " X: 0
- Xout v:exception "in" v:throwpoint
- endtry
-endfunction
-
-call F()
-Xpath 65536 " X: 65536
-
-delfunction MSG
-delfunction F
-unlet! caught
-
-Xcheck 70187
-
-
-"-------------------------------------------------------------------------------
-" Test 66: Stop range :call on error, interrupt, or :throw {{{1
-"
-" When a function which is multiply called for a range since it
-" doesn't handle the range itself has an error in a command
-" dynamically enclosed by :try/:endtry or gets an interrupt or
-" executes a :throw, no more calls for the remaining lines in the
-" range are made. On an error in a command not dynamically enclosed
-" by :try/:endtry, the function is executed again for the remaining
-" lines in the range.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- let file = tempname()
- exec "edit" file
-
- insert
-line 1
-line 2
-line 3
-.
-
- XloopINIT! 1 2
-
- let taken = ""
- let expected = "G1EF1E(1)F1E(2)F1E(3)G2EF2E(1)G3IF3I(1)G4TF4T(1)G5AF5A(1)"
-
- function! F(reason, n) abort
- let g:taken = g:taken . "F" . a:n .
- \ substitute(a:reason, '\(\l\).*', '\u\1', "") .
- \ "(" . line(".") . ")"
-
- if a:reason == "error"
- asdf
- elseif a:reason == "interrupt"
- "INTERRUPT
- let dummy = 0
- elseif a:reason == "throw"
- throw "xyz"
- elseif a:reason == "aborting error"
- XloopNEXT
- if g:taken != g:expected
- Xloop 1 " X: 0
- Xout "'taken' is" g:taken "instead of" g:expected
- endif
- try
- bwipeout!
- call delete(file)
- asdf
- endtry
- endif
- endfunction
-
- function! G(reason, n)
- let g:taken = g:taken . "G" . a:n .
- \ substitute(a:reason, '\(\l\).*', '\u\1', "")
- 1,3call F(a:reason, a:n)
- endfunction
-
- Xpath 8 " X: 8
- call G("error", 1)
- try
- Xpath 16 " X: 16
- try
- call G("error", 2)
- Xpath 32 " X: 0
- finally
- Xpath 64 " X: 64
- try
- call G("interrupt", 3)
- Xpath 128 " X: 0
- finally
- Xpath 256 " X: 256
- try
- call G("throw", 4)
- Xpath 512 " X: 0
- endtry
- endtry
- endtry
- catch /xyz/
- Xpath 1024 " X: 1024
- catch /.*/
- Xpath 2048 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
- Xpath 4096 " X: 4096
- call G("aborting error", 5)
- Xpath 8192 " X: 0
- Xout "'taken' is" taken "instead of" expected
-
-endif
-
-Xcheck 5464
-
-
-"-------------------------------------------------------------------------------
-" Test 67: :throw across :call command {{{1
-"
-" On a call command, an exception might be thrown when evaluating the
-" function name, during evaluation of the arguments, or when the
-" function is being executed. The exception can be caught by the
-" caller.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! THROW(x, n)
- if a:n == 1
- Xpath 1 " X: 1
- elseif a:n == 2
- Xpath 2 " X: 2
- elseif a:n == 3
- Xpath 4 " X: 4
- endif
- throw a:x
-endfunction
-
-function! NAME(x, n)
- if a:n == 1
- Xpath 8 " X: 0
- elseif a:n == 2
- Xpath 16 " X: 16
- elseif a:n == 3
- Xpath 32 " X: 32
- elseif a:n == 4
- Xpath 64 " X: 64
- endif
- return a:x
-endfunction
-
-function! ARG(x, n)
- if a:n == 1
- Xpath 128 " X: 0
- elseif a:n == 2
- Xpath 256 " X: 0
- elseif a:n == 3
- Xpath 512 " X: 512
- elseif a:n == 4
- Xpath 1024 " X: 1024
- endif
- return a:x
-endfunction
-
-function! F(x, n)
- if a:n == 2
- Xpath 2048 " X: 0
- elseif a:n == 4
- Xpath 4096 " X: 4096
- endif
-endfunction
-
-while 1
- try
- let error = 0
- let v:errmsg = ""
-
- while 1
- try
- Xpath 8192 " X: 8192
- call {NAME(THROW("name", 1), 1)}(ARG(4711, 1), 1)
- Xpath 16384 " X: 0
- catch /^name$/
- Xpath 32768 " X: 32768
- catch /.*/
- let error = 1
- Xout "1:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "1:" v:errmsg
- endif
- if error
- Xpath 65536 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 131072 " X: 131072
- call {NAME("F", 2)}(ARG(THROW("arg", 2), 2), 2)
- Xpath 262144 " X: 0
- catch /^arg$/
- Xpath 524288 " X: 524288
- catch /.*/
- let error = 1
- Xout "2:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "2:" v:errmsg
- endif
- if error
- Xpath 1048576 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 2097152 " X: 2097152
- call {NAME("THROW", 3)}(ARG("call", 3), 3)
- Xpath 4194304 " X: 0
- catch /^call$/
- Xpath 8388608 " X: 8388608
- catch /^0$/ " default return value
- Xpath 16777216 " X: 0
- Xout "3:" v:throwpoint
- catch /.*/
- let error = 1
- Xout "3:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "3:" v:errmsg
- endif
- if error
- Xpath 33554432 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 67108864 " X: 67108864
- call {NAME("F", 4)}(ARG(4711, 4), 4)
- Xpath 134217728 " X: 134217728
- catch /.*/
- let error = 1
- Xout "4:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "4:" v:errmsg
- endif
- if error
- Xpath 268435456 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- catch /^0$/ " default return value
- Xpath 536870912 " X: 0
- Xout v:throwpoint
- catch /.*/
- let error = 1
- Xout v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout v:errmsg
- endif
- if error
- Xpath 1073741824 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-unlet error
-delfunction F
-
-Xcheck 212514423
-
-" Leave THROW(), NAME(), and ARG() for the next test.
-
-
-"-------------------------------------------------------------------------------
-" Test 68: :throw across function calls in expressions {{{1
-"
-" On a function call within an expression, an exception might be
-" thrown when evaluating the function name, during evaluation of the
-" arguments, or when the function is being executed. The exception
-" can be caught by the caller.
-"
-" This test reuses the functions THROW(), NAME(), and ARG() from the
-" previous test.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F(x, n)
- if a:n == 2
- Xpath 2048 " X: 0
- elseif a:n == 4
- Xpath 4096 " X: 4096
- endif
- return a:x
-endfunction
-
-unlet! var1 var2 var3 var4
-
-while 1
- try
- let error = 0
- let v:errmsg = ""
-
- while 1
- try
- Xpath 8192 " X: 8192
- let var1 = {NAME(THROW("name", 1), 1)}(ARG(4711, 1), 1)
- Xpath 16384 " X: 0
- catch /^name$/
- Xpath 32768 " X: 32768
- catch /.*/
- let error = 1
- Xout "1:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "1:" v:errmsg
- endif
- if error
- Xpath 65536 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 131072 " X: 131072
- let var2 = {NAME("F", 2)}(ARG(THROW("arg", 2), 2), 2)
- Xpath 262144 " X: 0
- catch /^arg$/
- Xpath 524288 " X: 524288
- catch /.*/
- let error = 1
- Xout "2:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "2:" v:errmsg
- endif
- if error
- Xpath 1048576 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 2097152 " X: 2097152
- let var3 = {NAME("THROW", 3)}(ARG("call", 3), 3)
- Xpath 4194304 " X: 0
- catch /^call$/
- Xpath 8388608 " X: 8388608
- catch /^0$/ " default return value
- Xpath 16777216 " X: 0
- Xout "3:" v:throwpoint
- catch /.*/
- let error = 1
- Xout "3:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "3:" v:errmsg
- endif
- if error
- Xpath 33554432 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- Xpath 67108864 " X: 67108864
- let var4 = {NAME("F", 4)}(ARG(4711, 4), 4)
- Xpath 134217728 " X: 134217728
- catch /.*/
- let error = 1
- Xout "4:" v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout "4:" v:errmsg
- endif
- if error
- Xpath 268435456 " X: 0
- endif
- let error = 0
- let v:errmsg = ""
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- catch /^0$/ " default return value
- Xpath 536870912 " X: 0
- Xout v:throwpoint
- catch /.*/
- let error = 1
- Xout v:exception "in" v:throwpoint
- finally
- if !error && $VIMNOERRTHROW && v:errmsg != ""
- let error = 1
- Xout v:errmsg
- endif
- if error
- Xpath 1073741824 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-if exists("var1") || exists("var2") || exists("var3") ||
- \ !exists("var4") || var4 != 4711
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- if exists("var1")
- Xout "var1 =" var1
- endif
- if exists("var2")
- Xout "var2 =" var2
- endif
- if exists("var3")
- Xout "var3 =" var3
- endif
- if !exists("var4")
- Xout "var4 unset"
- elseif var4 != 4711
- Xout "var4 =" var4
- endif
-endif
-
-unlet! error var1 var2 var3 var4
-delfunction THROW
-delfunction NAME
-delfunction ARG
-delfunction F
-
-Xcheck 212514423
-
-
-"-------------------------------------------------------------------------------
-" Test 69: :throw across :if, :elseif, :while {{{1
-"
-" On an :if, :elseif, or :while command, an exception might be thrown
-" during evaluation of the expression to test. The exception can be
-" caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT! 1 2
-
-function! THROW(x)
- XloopNEXT
- Xloop 1 " X: 1 + 2 + 4
- throw a:x
-endfunction
-
-try
-
- try
- Xpath 8 " X: 8
- if 4711 == THROW("if") + 111
- Xpath 16 " X: 0
- else
- Xpath 32 " X: 0
- endif
- Xpath 64 " X: 0
- catch /^if$/
- Xpath 128 " X: 128
- catch /.*/
- Xpath 256 " X: 0
- Xout "if:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 512 " X: 512
- if 4711 == 4 + 7 + 1 + 1
- Xpath 1024 " X: 0
- elseif 4711 == THROW("elseif") + 222
- Xpath 2048 " X: 0
- else
- Xpath 4096 " X: 0
- endif
- Xpath 8192 " X: 0
- catch /^elseif$/
- Xpath 16384 " X: 16384
- catch /.*/
- Xpath 32768 " X: 0
- Xout "elseif:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 65536 " X: 65536
- while 4711 == THROW("while") + 4711
- Xpath 131072 " X: 0
- break
- endwhile
- Xpath 262144 " X: 0
- catch /^while$/
- Xpath 524288 " X: 524288
- catch /.*/
- Xpath 1048576 " X: 0
- Xout "while:" v:exception "in" v:throwpoint
- endtry
-
-catch /^0$/ " default return value
- Xpath 2097152 " X: 0
- Xout v:throwpoint
-catch /.*/
- Xout v:exception "in" v:throwpoint
- Xpath 4194304 " X: 0
-endtry
-
-Xpath 8388608 " X: 8388608
-
-delfunction THROW
-
-Xcheck 8995471
-
-
-"-------------------------------------------------------------------------------
-" Test 70: :throw across :return or :throw {{{1
-"
-" On a :return or :throw command, an exception might be thrown during
-" evaluation of the expression to return or throw, respectively. The
-" exception can be caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
- let g:taken = g:taken . "T" . a:n
- throw a:x
-endfunction
-
-function! F(x, y, n)
- let g:taken = g:taken . "F" . a:n
- return a:x + THROW(a:y, a:n)
-endfunction
-
-function! G(x, y, n)
- let g:taken = g:taken . "G" . a:n
- throw a:x . THROW(a:y, a:n)
- return a:x
-endfunction
-
-try
- try
- Xpath 1 " X: 1
- call F(4711, "return", 1)
- Xpath 2 " X: 0
- catch /^return$/
- Xpath 4 " X: 4
- catch /.*/
- Xpath 8 " X: 0
- Xout "return:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 16 " X: 16
- let var = F(4712, "return-var", 2)
- Xpath 32 " X: 0
- catch /^return-var$/
- Xpath 64 " X: 64
- catch /.*/
- Xpath 128 " X: 0
- Xout "return-var:" v:exception "in" v:throwpoint
- finally
- unlet! var
- endtry
-
- try
- Xpath 256 " X: 256
- throw "except1" . THROW("throw1", 3)
- Xpath 512 " X: 0
- catch /^except1/
- Xpath 1024 " X: 0
- catch /^throw1$/
- Xpath 2048 " X: 2048
- catch /.*/
- Xpath 4096 " X: 0
- Xout "throw1:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 8192 " X: 8192
- call G("except2", "throw2", 4)
- Xpath 16384 " X: 0
- catch /^except2/
- Xpath 32768 " X: 0
- catch /^throw2$/
- Xpath 65536 " X: 65536
- catch /.*/
- Xpath 131072 " X: 0
- Xout "throw2:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 262144 " X: 262144
- let var = G("except3", "throw3", 5)
- Xpath 524288 " X: 0
- catch /^except3/
- Xpath 1048576 " X: 0
- catch /^throw3$/
- Xpath 2097152 " X: 2097152
- catch /.*/
- Xpath 4194304 " X: 0
- Xout "throw3:" v:exception "in" v:throwpoint
- finally
- unlet! var
- endtry
-
- let expected = "F1T1F2T2T3G4T4G5T5"
- if taken != expected
- Xpath 8388608 " X: 0
- Xout "'taken' is" taken "instead of" expected
- endif
-
-catch /^0$/ " default return value
- Xpath 16777216 " X: 0
- Xout v:throwpoint
-catch /.*/
- Xpath 33554432 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 67108864 " X: 67108864
-
-unlet taken expected
-delfunction THROW
-delfunction F
-delfunction G
-
-Xcheck 69544277
-
-
-"-------------------------------------------------------------------------------
-" Test 71: :throw across :echo variants and :execute {{{1
-"
-" On an :echo, :echon, :echomsg, :echoerr, or :execute command, an
-" exception might be thrown during evaluation of the arguments to
-" be displayed or executed as a command, respectively. Any following
-" arguments are not evaluated, then. The exception can be caught by
-" the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
- let g:taken = g:taken . "T" . a:n
- throw a:x
-endfunction
-
-function! F(n)
- let g:taken = g:taken . "F" . a:n
- return "F" . a:n
-endfunction
-
-try
- try
- Xpath 1 " X: 1
- echo "echo" . THROW("echo-except", 1) F(1)
- Xpath 2 " X: 0
- catch /^echo-except$/
- Xpath 4 " X: 4
- catch /.*/
- Xpath 8 " X: 0
- Xout "echo:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 16 " X: 16
- echon "echon" . THROW("echon-except", 2) F(2)
- Xpath 32 " X: 0
- catch /^echon-except$/
- Xpath 64 " X: 64
- catch /.*/
- Xpath 128 " X: 0
- Xout "echon:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 256 " X: 256
- echomsg "echomsg" . THROW("echomsg-except", 3) F(3)
- Xpath 512 " X: 0
- catch /^echomsg-except$/
- Xpath 1024 " X: 1024
- catch /.*/
- Xpath 2048 " X: 0
- Xout "echomsg:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 4096 " X: 4096
- echoerr "echoerr" . THROW("echoerr-except", 4) F(4)
- Xpath 8192 " X: 0
- catch /^echoerr-except$/
- Xpath 16384 " X: 16384
- catch /Vim/
- Xpath 32768 " X: 0
- catch /echoerr/
- Xpath 65536 " X: 0
- catch /.*/
- Xpath 131072 " X: 0
- Xout "echoerr:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 262144 " X: 262144
- execute "echo 'execute" . THROW("execute-except", 5) F(5) "'"
- Xpath 524288 " X: 0
- catch /^execute-except$/
- Xpath 1048576 " X: 1048576
- catch /.*/
- Xpath 2097152 " X: 0
- Xout "execute:" v:exception "in" v:throwpoint
- endtry
-
- let expected = "T1T2T3T4T5"
- if taken != expected
- Xpath 4194304 " X: 0
- Xout "'taken' is" taken "instead of" expected
- endif
-
-catch /^0$/ " default return value
- Xpath 8388608 " X: 0
- Xout v:throwpoint
-catch /.*/
- Xpath 16777216 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 33554432 " X: 33554432
-
-unlet taken expected
-delfunction THROW
-delfunction F
-
-Xcheck 34886997
-
-
-"-------------------------------------------------------------------------------
-" Test 72: :throw across :let or :unlet {{{1
-"
-" On a :let command, an exception might be thrown during evaluation
-" of the expression to assign. On an :let or :unlet command, the
-" evaluation of the name of the variable to be assigned or list or
-" deleted, respectively, may throw an exception. Any following
-" arguments are not evaluated, then. The exception can be caught by
-" the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let throwcount = 0
-
-function! THROW(x)
- let g:throwcount = g:throwcount + 1
- throw a:x
-endfunction
-
-try
- try
- let $VAR = "old_value"
- Xpath 1 " X: 1
- let $VAR = "let(" . THROW("var") . ")"
- Xpath 2 " X: 0
- catch /^var$/
- Xpath 4 " X: 4
- finally
- if $VAR != "old_value"
- Xpath 8 " X: 0
- endif
- endtry
-
- try
- let @a = "old_value"
- Xpath 16 " X: 16
- let @a = "let(" . THROW("reg") . ")"
- Xpath 32 " X: 0
- catch /^reg$/
- try
- Xpath 64 " X: 64
- let @A = "let(" . THROW("REG") . ")"
- Xpath 128 " X: 0
- catch /^REG$/
- Xpath 256 " X: 256
- endtry
- finally
- if @a != "old_value"
- Xpath 512 " X: 0
- endif
- if @A != "old_value"
- Xpath 1024 " X: 0
- endif
- endtry
-
- try
- let saved_gpath = &g:path
- let saved_lpath = &l:path
- Xpath 2048 " X: 2048
- let &path = "let(" . THROW("opt") . ")"
- Xpath 4096 " X: 0
- catch /^opt$/
- try
- Xpath 8192 " X: 8192
- let &g:path = "let(" . THROW("gopt") . ")"
- Xpath 16384 " X: 0
- catch /^gopt$/
- try
- Xpath 32768 " X: 32768
- let &l:path = "let(" . THROW("lopt") . ")"
- Xpath 65536 " X: 0
- catch /^lopt$/
- Xpath 131072 " X: 131072
- endtry
- endtry
- finally
- if &g:path != saved_gpath || &l:path != saved_lpath
- Xpath 262144 " X: 0
- endif
- let &g:path = saved_gpath
- let &l:path = saved_lpath
- endtry
-
- unlet! var1 var2 var3
-
- try
- Xpath 524288 " X: 524288
- let var1 = "let(" . THROW("var1") . ")"
- Xpath 1048576 " X: 0
- catch /^var1$/
- Xpath 2097152 " X: 2097152
- finally
- if exists("var1")
- Xpath 4194304 " X: 0
- endif
- endtry
-
- try
- let var2 = "old_value"
- Xpath 8388608 " X: 8388608
- let var2 = "let(" . THROW("var2"). ")"
- Xpath 16777216 " X: 0
- catch /^var2$/
- Xpath 33554432 " X: 33554432
- finally
- if var2 != "old_value"
- Xpath 67108864 " X: 0
- endif
- endtry
-
- try
- Xpath 134217728 " X: 134217728
- let var{THROW("var3")} = 4711
- Xpath 268435456 " X: 0
- catch /^var3$/
- Xpath 536870912 " X: 536870912
- endtry
-
- let addpath = ""
-
- function ADDPATH(p)
- let g:addpath = g:addpath . a:p
- endfunction
-
- try
- call ADDPATH("T1")
- let var{THROW("var4")} var{ADDPATH("T2")} | call ADDPATH("T3")
- call ADDPATH("T4")
- catch /^var4$/
- call ADDPATH("T5")
- endtry
-
- try
- call ADDPATH("T6")
- unlet var{THROW("var5")} var{ADDPATH("T7")} | call ADDPATH("T8")
- call ADDPATH("T9")
- catch /^var5$/
- call ADDPATH("T10")
- endtry
-
- if addpath != "T1T5T6T10" || throwcount != 11
- throw "addpath: " . addpath . ", throwcount: " . throwcount
- endif
-
- Xpath 1073741824 " X: 1073741824
-
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-unlet! var1 var2 var3 addpath throwcount
-delfunction THROW
-
-Xcheck 1789569365
-
-
-"-------------------------------------------------------------------------------
-" Test 73: :throw across :function, :delfunction {{{1
-"
-" The :function and :delfunction commands may cause an expression
-" specified in braces to be evaluated. During evaluation, an
-" exception might be thrown. The exception can be caught by the
-" script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
- let g:taken = g:taken . "T" . a:n
- throw a:x
-endfunction
-
-function! EXPR(x, n)
- let g:taken = g:taken . "E" . a:n
- if a:n % 2 == 0
- call THROW(a:x, a:n)
- endif
- return 2 - a:n % 2
-endfunction
-
-try
- try
- " Define function.
- Xpath 1 " X: 1
- function! F0()
- endfunction
- Xpath 2 " X: 2
- function! F{EXPR("function-def-ok", 1)}()
- endfunction
- Xpath 4 " X: 4
- function! F{EXPR("function-def", 2)}()
- endfunction
- Xpath 8 " X: 0
- catch /^function-def-ok$/
- Xpath 16 " X: 0
- catch /^function-def$/
- Xpath 32 " X: 32
- catch /.*/
- Xpath 64 " X: 0
- Xout "def:" v:exception "in" v:throwpoint
- endtry
-
- try
- " List function.
- Xpath 128 " X: 128
- function F0
- Xpath 256 " X: 256
- function F{EXPR("function-lst-ok", 3)}
- Xpath 512 " X: 512
- function F{EXPR("function-lst", 4)}
- Xpath 1024 " X: 0
- catch /^function-lst-ok$/
- Xpath 2048 " X: 0
- catch /^function-lst$/
- Xpath 4096 " X: 4096
- catch /.*/
- Xpath 8192 " X: 0
- Xout "lst:" v:exception "in" v:throwpoint
- endtry
-
- try
- " Delete function
- Xpath 16384 " X: 16384
- delfunction F0
- Xpath 32768 " X: 32768
- delfunction F{EXPR("function-del-ok", 5)}
- Xpath 65536 " X: 65536
- delfunction F{EXPR("function-del", 6)}
- Xpath 131072 " X: 0
- catch /^function-del-ok$/
- Xpath 262144 " X: 0
- catch /^function-del$/
- Xpath 524288 " X: 524288
- catch /.*/
- Xpath 1048576 " X: 0
- Xout "del:" v:exception "in" v:throwpoint
- endtry
-
- let expected = "E1E2T2E3E4T4E5E6T6"
- if taken != expected
- Xpath 2097152 " X: 0
- Xout "'taken' is" taken "instead of" expected
- endif
-
-catch /.*/
- Xpath 4194304 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xpath 8388608 " X: 8388608
-
-unlet taken expected
-delfunction THROW
-delfunction EXPR
-
-Xcheck 9032615
-
-
-"-------------------------------------------------------------------------------
-" Test 74: :throw across builtin functions and commands {{{1
-"
-" Some functions like exists(), searchpair() take expression
-" arguments, other functions or commands like substitute() or
-" :substitute cause an expression (specified in the regular
-" expression) to be evaluated. During evaluation an exception
-" might be thrown. The exception can be caught by the script.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-let taken = ""
-
-function! THROW(x, n)
- let g:taken = g:taken . "T" . a:n
- throw a:x
-endfunction
-
-function! EXPR(x, n)
- let g:taken = g:taken . "E" . a:n
- call THROW(a:x . a:n, a:n)
- return "EXPR"
-endfunction
-
-function! SKIP(x, n)
- let g:taken = g:taken . "S" . a:n . "(" . line(".")
- let theline = getline(".")
- if theline =~ "skip"
- let g:taken = g:taken . "s)"
- return 1
- elseif theline =~ "throw"
- let g:taken = g:taken . "t)"
- call THROW(a:x . a:n, a:n)
- else
- let g:taken = g:taken . ")"
- return 0
- endif
-endfunction
-
-function! SUBST(x, n)
- let g:taken = g:taken . "U" . a:n . "(" . line(".")
- let theline = getline(".")
- if theline =~ "not" " SUBST() should not be called for this line
- let g:taken = g:taken . "n)"
- call THROW(a:x . a:n, a:n)
- elseif theline =~ "throw"
- let g:taken = g:taken . "t)"
- call THROW(a:x . a:n, a:n)
- else
- let g:taken = g:taken . ")"
- return "replaced"
- endif
-endfunction
-
-try
- try
- Xpath 1 " X: 1
- let result = exists('*{EXPR("exists", 1)}')
- Xpath 2 " X: 0
- catch /^exists1$/
- Xpath 4 " X: 4
- try
- let result = exists('{EXPR("exists", 2)}')
- Xpath 8 " X: 0
- catch /^exists2$/
- Xpath 16 " X: 16
- catch /.*/
- Xpath 32 " X: 0
- Xout "exists2:" v:exception "in" v:throwpoint
- endtry
- catch /.*/
- Xpath 64 " X: 0
- Xout "exists1:" v:exception "in" v:throwpoint
- endtry
-
- try
- let file = tempname()
- exec "edit" file
- insert
-begin
- xx
-middle 3
- xx
-middle 5 skip
- xx
-middle 7 throw
- xx
-end
-.
- normal! gg
- Xpath 128 " X: 128
- let result =
- \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 3)')
- Xpath 256 " X: 256
- let result =
- \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 4)')
- Xpath 512 " X: 0
- let result =
- \ searchpair("begin", "middle", "end", '', 'SKIP("searchpair", 5)')
- Xpath 1024 " X: 0
- catch /^searchpair[35]$/
- Xpath 2048 " X: 0
- catch /^searchpair4$/
- Xpath 4096 " X: 4096
- catch /.*/
- Xpath 8192 " X: 0
- Xout "searchpair:" v:exception "in" v:throwpoint
- finally
- bwipeout!
- call delete(file)
- endtry
-
- try
- let file = tempname()
- exec "edit" file
- insert
-subst 1
-subst 2
-not
-subst 4
-subst throw
-subst 6
-.
- normal! gg
- Xpath 16384 " X: 16384
- 1,2substitute/subst/\=SUBST("substitute", 6)/
- try
- Xpath 32768 " X: 32768
- try
- let v:errmsg = ""
- 3substitute/subst/\=SUBST("substitute", 7)/
- finally
- if v:errmsg != ""
- " If exceptions are not thrown on errors, fake the error
- " exception in order to get the same execution path.
- throw "faked Vim(substitute)"
- endif
- endtry
- catch /Vim(substitute)/ " Pattern not found ('e' flag missing)
- Xpath 65536 " X: 65536
- 3substitute/subst/\=SUBST("substitute", 8)/e
- Xpath 131072 " X: 131072
- endtry
- Xpath 262144 " X: 262144
- 4,6substitute/subst/\=SUBST("substitute", 9)/
- Xpath 524288 " X: 0
- catch /^substitute[678]/
- Xpath 1048576 " X: 0
- catch /^substitute9/
- Xpath 2097152 " X: 2097152
- finally
- bwipeout!
- call delete(file)
- endtry
-
- try
- Xpath 4194304 " X: 4194304
- let var = substitute("sub", "sub", '\=THROW("substitute()y", 10)', '')
- Xpath 8388608 " X: 0
- catch /substitute()y/
- Xpath 16777216 " X: 16777216
- catch /.*/
- Xpath 33554432 " X: 0
- Xout "substitute()y:" v:exception "in" v:throwpoint
- endtry
-
- try
- Xpath 67108864 " X: 67108864
- let var = substitute("not", "sub", '\=THROW("substitute()n", 11)', '')
- Xpath 134217728 " X: 134217728
- catch /substitute()n/
- Xpath 268435456 " X: 0
- catch /.*/
- Xpath 536870912 " X: 0
- Xout "substitute()n:" v:exception "in" v:throwpoint
- endtry
-
- let expected = "E1T1E2T2S3(3)S4(5s)S4(7t)T4U6(1)U6(2)U9(4)U9(5t)T9T10"
- if taken != expected
- Xpath 1073741824 " X: 0
- Xout "'taken' is" taken "instead of" expected
- endif
-
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-unlet result var taken expected
-delfunction THROW
-delfunction EXPR
-delfunction SKIP
-delfunction SUBST
-
-Xcheck 224907669
-
-
-"-------------------------------------------------------------------------------
-" Test 75: Errors in builtin functions. {{{1
-"
-" On an error in a builtin function called inside a :try/:endtry
-" region, the evaluation of the expression calling that function and
-" the command containing that expression are abandoned. The error can
-" be caught as an exception.
-"
-" A simple :call of the builtin function is a trivial case. If the
-" builtin function is called in the argument list of another function,
-" no further arguments are evaluated, and the other function is not
-" executed. If the builtin function is called from the argument of
-" a :return command, the :return command is not executed. If the
-" builtin function is called from the argument of a :throw command,
-" the :throw command is not executed. The evaluation of the
-" expression calling the builtin function is abandoned.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! F1(arg1)
- Xpath 1 " X: 0
-endfunction
-
-function! F2(arg1, arg2)
- Xpath 2 " X: 0
-endfunction
-
-function! G()
- Xpath 4 " X: 0
-endfunction
-
-function! H()
- Xpath 8 " X: 0
-endfunction
-
-function! R()
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 16 " X: 16
- return append(1, "s")
- catch /E21/
- let caught = 1
- catch /.*/
- Xpath 32 " X: 0
- finally
- Xpath 64 " X: 64
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 128 " X: 128
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
- Xpath 256 " X: 256
-endfunction
-
-try
- set noma " let append() fail with "E21"
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 512 " X: 512
- call append(1, "s")
- catch /E21/
- let caught = 1
- catch /.*/
- Xpath 1024 " X: 0
- finally
- Xpath 2048 " X: 2048
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 4096 " X: 4096
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 8192 " X: 8192
- call F1('x' . append(1, "s"))
- catch /E21/
- let caught = 1
- catch /.*/
- Xpath 16384 " X: 0
- finally
- Xpath 32768 " X: 32768
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 65536 " X: 65536
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 131072 " X: 131072
- call F2('x' . append(1, "s"), G())
- catch /E21/
- let caught = 1
- catch /.*/
- Xpath 262144 " X: 0
- finally
- Xpath 524288 " X: 524288
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 1048576 " X: 1048576
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- call R()
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 2097152 " X: 2097152
- throw "T" . append(1, "s")
- catch /E21/
- let caught = 1
- catch /^T.*/
- Xpath 4194304 " X: 0
- catch /.*/
- Xpath 8388608 " X: 0
- finally
- Xpath 16777216 " X: 16777216
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 33554432 " X: 33554432
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-
- while 1
- try
- let caught = 0
- let v:errmsg = ""
- Xpath 67108864 " X: 67108864
- let x = "a"
- let x = x . "b" . append(1, "s") . H()
- catch /E21/
- let caught = 1
- catch /.*/
- Xpath 134217728 " X: 0
- finally
- Xpath 268435456 " X: 268435456
- if caught || $VIMNOERRTHROW && v:errmsg =~ 'E21'
- Xpath 536870912 " X: 536870912
- endif
- if x == "a"
- Xpath 1073741824 " X: 1073741824
- endif
- break " discard error for $VIMNOERRTHROW
- endtry
- endwhile
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout v:exception "in" v:throwpoint
-finally
- set ma&
-endtry
-
-unlet! caught x
-delfunction F1
-delfunction F2
-delfunction G
-delfunction H
-delfunction R
-
-Xcheck 2000403408
-
-
-"-------------------------------------------------------------------------------
-" Test 76: Errors, interrupts, :throw during expression evaluation {{{1
-"
-" When a function call made during expression evaluation is aborted
-" due to an error inside a :try/:endtry region or due to an interrupt
-" or a :throw, the expression evaluation is aborted as well. No
-" message is displayed for the cancelled expression evaluation. On an
-" error not inside :try/:endtry, the expression evaluation continues.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- let taken = ""
-
- function! ERR(n)
- let g:taken = g:taken . "E" . a:n
- asdf
- endfunction
-
- function! ERRabort(n) abort
- let g:taken = g:taken . "A" . a:n
- asdf
- endfunction " returns -1; may cause follow-up msg for illegal var/func name
-
- function! WRAP(n, arg)
- let g:taken = g:taken . "W" . a:n
- let g:saved_errmsg = v:errmsg
- return arg
- endfunction
-
- function! INT(n)
- let g:taken = g:taken . "I" . a:n
- "INTERRUPT9
- let dummy = 0
- endfunction
-
- function! THR(n)
- let g:taken = g:taken . "T" . a:n
- throw "should not be caught"
- endfunction
-
- function! CONT(n)
- let g:taken = g:taken . "C" . a:n
- endfunction
-
- function! MSG(n)
- let g:taken = g:taken . "M" . a:n
- let errmsg = (a:n >= 37 && a:n <= 44) ? g:saved_errmsg : v:errmsg
- let msgptn = (a:n >= 10 && a:n <= 27) ? "^$" : "asdf"
- if errmsg !~ msgptn
- let g:taken = g:taken . "x"
- Xout "Expr" a:n.": Unexpected message:" v:errmsg
- endif
- let v:errmsg = ""
- let g:saved_errmsg = ""
- endfunction
-
- let v:errmsg = ""
-
- try
- let t = 1
- XloopINIT 1 2
- while t <= 9
- Xloop 1 " X: 511
- try
- if t == 1
- let v{ERR(t) + CONT(t)} = 0
- elseif t == 2
- let v{ERR(t) + CONT(t)}
- elseif t == 3
- let var = exists('v{ERR(t) + CONT(t)}')
- elseif t == 4
- unlet v{ERR(t) + CONT(t)}
- elseif t == 5
- function F{ERR(t) + CONT(t)}()
- endfunction
- elseif t == 6
- function F{ERR(t) + CONT(t)}
- elseif t == 7
- let var = exists('*F{ERR(t) + CONT(t)}')
- elseif t == 8
- delfunction F{ERR(t) + CONT(t)}
- elseif t == 9
- let var = ERR(t) + CONT(t)
- endif
- catch /asdf/
- " v:errmsg is not set when the error message is converted to an
- " exception. Set it to the original error message.
- let v:errmsg = substitute(v:exception, '^Vim:', '', "")
- catch /^Vim\((\a\+)\)\=:/
- " An error exception has been thrown after the original error.
- let v:errmsg = ""
- finally
- call MSG(t)
- let t = t + 1
- XloopNEXT
- continue " discard an aborting error
- endtry
- endwhile
- catch /.*/
- Xpath 512 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
-
- try
- let t = 10
- XloopINIT 1024 2
- while t <= 18
- Xloop 1 " X: 1024 * 511
- try
- if t == 10
- let v{INT(t) + CONT(t)} = 0
- elseif t == 11
- let v{INT(t) + CONT(t)}
- elseif t == 12
- let var = exists('v{INT(t) + CONT(t)}')
- elseif t == 13
- unlet v{INT(t) + CONT(t)}
- elseif t == 14
- function F{INT(t) + CONT(t)}()
- endfunction
- elseif t == 15
- function F{INT(t) + CONT(t)}
- elseif t == 16
- let var = exists('*F{INT(t) + CONT(t)}')
- elseif t == 17
- delfunction F{INT(t) + CONT(t)}
- elseif t == 18
- let var = INT(t) + CONT(t)
- endif
- catch /^Vim\((\a\+)\)\=:\(Interrupt\)\@!/
- " An error exception has been triggered after the interrupt.
- let v:errmsg = substitute(v:exception,
- \ '^Vim\((\a\+)\)\=:', '', "")
- finally
- call MSG(t)
- let t = t + 1
- XloopNEXT
- continue " discard interrupt
- endtry
- endwhile
- catch /.*/
- Xpath 524288 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
-
- try
- let t = 19
- XloopINIT 1048576 2
- while t <= 27
- Xloop 1 " X: 1048576 * 511
- try
- if t == 19
- let v{THR(t) + CONT(t)} = 0
- elseif t == 20
- let v{THR(t) + CONT(t)}
- elseif t == 21
- let var = exists('v{THR(t) + CONT(t)}')
- elseif t == 22
- unlet v{THR(t) + CONT(t)}
- elseif t == 23
- function F{THR(t) + CONT(t)}()
- endfunction
- elseif t == 24
- function F{THR(t) + CONT(t)}
- elseif t == 25
- let var = exists('*F{THR(t) + CONT(t)}')
- elseif t == 26
- delfunction F{THR(t) + CONT(t)}
- elseif t == 27
- let var = THR(t) + CONT(t)
- endif
- catch /^Vim\((\a\+)\)\=:/
- " An error exception has been triggered after the :throw.
- let v:errmsg = substitute(v:exception,
- \ '^Vim\((\a\+)\)\=:', '', "")
- finally
- call MSG(t)
- let t = t + 1
- XloopNEXT
- continue " discard exception
- endtry
- endwhile
- catch /.*/
- Xpath 536870912 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
-
- let v{ERR(28) + CONT(28)} = 0
- call MSG(28)
- let v{ERR(29) + CONT(29)}
- call MSG(29)
- let var = exists('v{ERR(30) + CONT(30)}')
- call MSG(30)
- unlet v{ERR(31) + CONT(31)}
- call MSG(31)
- function F{ERR(32) + CONT(32)}()
- endfunction
- call MSG(32)
- function F{ERR(33) + CONT(33)}
- call MSG(33)
- let var = exists('*F{ERR(34) + CONT(34)}')
- call MSG(34)
- delfunction F{ERR(35) + CONT(35)}
- call MSG(35)
- let var = ERR(36) + CONT(36)
- call MSG(36)
-
- let saved_errmsg = ""
-
- let v{WRAP(37, ERRabort(37)) + CONT(37)} = 0
- call MSG(37)
- let v{WRAP(38, ERRabort(38)) + CONT(38)}
- call MSG(38)
- let var = exists('v{WRAP(39, ERRabort(39)) + CONT(39)}')
- call MSG(39)
- unlet v{WRAP(40, ERRabort(40)) + CONT(40)}
- call MSG(40)
- function F{WRAP(41, ERRabort(41)) + CONT(41)}()
- endfunction
- call MSG(41)
- function F{WRAP(42, ERRabort(42)) + CONT(42)}
- call MSG(42)
- let var = exists('*F{WRAP(43, ERRabort(43)) + CONT(43)}')
- call MSG(43)
- delfunction F{WRAP(44, ERRabort(44)) + CONT(44)}
- call MSG(44)
- let var = ERRabort(45) + CONT(45)
- call MSG(45)
-
- Xpath 1073741824 " X: 1073741824
-
- let expected = ""
- \ . "E1M1E2M2E3M3E4M4E5M5E6M6E7M7E8M8E9M9"
- \ . "I10M10I11M11I12M12I13M13I14M14I15M15I16M16I17M17I18M18"
- \ . "T19M19T20M20T21M21T22M22T23M23T24M24T25M25T26M26T27M27"
- \ . "E28C28M28E29C29M29E30C30M30E31C31M31E32C32M32E33C33M33"
- \ . "E34C34M34E35C35M35E36C36M36"
- \ . "A37W37C37M37A38W38C38M38A39W39C39M39A40W40C40M40A41W41C41M41"
- \ . "A42W42C42M42A43W43C43M43A44W44C44M44A45C45M45"
-
- if taken != expected
- " The Xpath command does not accept 2^31 (negative); display explicitly:
- exec "!echo 2147483648 >>" . g:ExtraVimResult
- " X: 0
- Xout "'taken' is" taken "instead of" expected
- if substitute(taken,
- \ '\(.*\)E3C3M3x\(.*\)E30C30M30x\(.*\)A39C39M39x\(.*\)',
- \ '\1E3M3\2E30C30M30\3A39C39M39\4',
- \ "") == expected
- Xout "Is ++emsg_skip for var with expr_start non-NULL"
- \ "in f_exists ok?"
- endif
- endif
-
- unlet! v var saved_errmsg taken expected
- call delete(WA_t5)
- call delete(WA_t14)
- call delete(WA_t23)
- unlet! WA_t5 WA_t14 WA_t23
- delfunction WA_t5
- delfunction WA_t14
- delfunction WA_t23
-
-endif
-
-Xcheck 1610087935
-
-
-"-------------------------------------------------------------------------------
-" Test 77: Errors, interrupts, :throw in name{brace-expression} {{{1
-"
-" When a function call made during evaluation of an expression in
-" braces as part of a function name after ":function" is aborted due
-" to an error inside a :try/:endtry region or due to an interrupt or
-" a :throw, the expression evaluation is aborted as well, and the
-" function definition is ignored, skipping all commands to the
-" ":endfunction". On an error not inside :try/:endtry, the expression
-" evaluation continues and the function gets defined, and can be
-" called and deleted.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT 1 4
-
-function! ERR() abort
- Xloop 1 " X: 1 + 4 + 16 + 64
- asdf
-endfunction " returns -1
-
-function! OK()
- Xloop 2 " X: 2 * (1 + 4 + 16)
- let v:errmsg = ""
- return 0
-endfunction
-
-let v:errmsg = ""
-
-Xpath 4096 " X: 4096
-function! F{1 + ERR() + OK()}(arg)
- " F0 should be defined.
- if exists("a:arg") && a:arg == "calling"
- Xpath 8192 " X: 8192
- else
- Xpath 16384 " X: 0
- endif
-endfunction
-if v:errmsg != ""
- Xpath 32768 " X: 0
-endif
-XloopNEXT
-
-Xpath 65536 " X: 65536
-call F{1 + ERR() + OK()}("calling")
-if v:errmsg != ""
- Xpath 131072 " X: 0
-endif
-XloopNEXT
-
-Xpath 262144 " X: 262144
-delfunction F{1 + ERR() + OK()}
-if v:errmsg != ""
- Xpath 524288 " X: 0
-endif
-XloopNEXT
-
-try
- while 1
- let caught = 0
- try
- Xpath 1048576 " X: 1048576
- function! G{1 + ERR() + OK()}(arg)
- " G0 should not be defined, and the function body should be
- " skipped.
- if exists("a:arg") && a:arg == "calling"
- Xpath 2097152 " X: 0
- else
- Xpath 4194304 " X: 0
- endif
- " Use an unmatched ":finally" to check whether the body is
- " skipped when an error occurs in ERR(). This works whether or
- " not the exception is converted to an exception.
- finally
- Xpath 8388608 " X: 0
- Xout "Body of G{1 + ERR() + OK()}() not skipped"
- " Discard the aborting error or exception, and break the
- " while loop.
- break
- " End the try conditional and start a new one to avoid
- " ":catch after :finally" errors.
- endtry
- try
- Xpath 16777216 " X: 0
- endfunction
-
- " When the function was not defined, this won't be reached - whether
- " the body was skipped or not. When the function was defined, it
- " can be called and deleted here.
- Xpath 33554432 " X: 0
- Xout "G0() has been defined"
- XloopNEXT
- try
- call G{1 + ERR() + OK()}("calling")
- catch /.*/
- Xpath 67108864 " X: 0
- endtry
- Xpath 134217728 " X: 0
- XloopNEXT
- try
- delfunction G{1 + ERR() + OK()}
- catch /.*/
- Xpath 268435456 " X: 0
- endtry
- catch /asdf/
- " Jumped to when the function is not defined and the body is
- " skipped.
- let caught = 1
- catch /.*/
- Xpath 536870912 " X: 0
- finally
- if !caught && !$VIMNOERRTHROW
- Xpath 1073741824 " X: 0
- endif
- break " discard error for $VIMNOERRTHROW
- endtry " jumped to when the body is not skipped
- endwhile
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout "Body of G{1 + ERR() + OK()}() not skipped, exception caught"
- Xout v:exception "in" v:throwpoint
-endtry
-
-Xcheck 1388671
-
-
-"-------------------------------------------------------------------------------
-" Test 78: Messages on parsing errors in expression evaluation {{{1
-"
-" When an expression evaluation detects a parsing error, an error
-" message is given and converted to an exception, and the expression
-" evaluation is aborted.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- let taken = ""
-
- function! F(n)
- let g:taken = g:taken . "F" . a:n
- endfunction
-
- function! MSG(n, enr, emsg)
- let g:taken = g:taken . "M" . a:n
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- if v:errmsg == ""
- Xout "Expr" a:n.": Message missing."
- let g:taken = g:taken . "x"
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Expr" a:n.": Unexpected message:" v:errmsg
- Xout "Expected: " . a:enr . ': ' . a:emsg
- let g:taken = g:taken . "X"
- endif
- endif
- endfunction
-
- function! CONT(n)
- let g:taken = g:taken . "C" . a:n
- endfunction
-
- let v:errmsg = ""
- XloopINIT 1 2
-
- try
- let t = 1
- while t <= 14
- let g:taken = g:taken . "T" . t
- let v:errmsg = ""
- try
- let caught = 0
- if t == 1
- let v{novar + CONT(t)} = 0
- elseif t == 2
- let v{novar + CONT(t)}
- elseif t == 3
- let var = exists('v{novar + CONT(t)}')
- elseif t == 4
- unlet v{novar + CONT(t)}
- elseif t == 5
- function F{novar + CONT(t)}()
- endfunction
- elseif t == 6
- function F{novar + CONT(t)}
- elseif t == 7
- let var = exists('*F{novar + CONT(t)}')
- elseif t == 8
- delfunction F{novar + CONT(t)}
- elseif t == 9
- echo novar + CONT(t)
- elseif t == 10
- echo v{novar + CONT(t)}
- elseif t == 11
- echo F{novar + CONT(t)}
- elseif t == 12
- let var = novar + CONT(t)
- elseif t == 13
- let var = v{novar + CONT(t)}
- elseif t == 14
- let var = F{novar + CONT(t)}()
- endif
- catch /^Vim\((\a\+)\)\=:/
- " v:errmsg is not set when the error message is converted to an
- " exception. Set it to the original error message.
- let v:errmsg = substitute(v:exception,
- \ '^Vim\((\a\+)\)\=:', '', "")
- let caught = 1
- finally
- if t <= 8 && t != 3 && t != 7
- call MSG(t, 'E475', 'Invalid argument\>')
- else
- if !caught " no error exceptions ($VIMNOERRTHROW set)
- call MSG(t, 'E15', "Invalid expression")
- else
- call MSG(t, 'E121', "Undefined variable")
- endif
- endif
- let t = t + 1
- XloopNEXT
- continue " discard an aborting error
- endtry
- endwhile
- catch /.*/
- Xloop 1 " X: 0
- Xout t.":" v:exception "in" ExtraVimThrowpoint()
- endtry
-
- function! T(n, expr, enr, emsg)
- try
- let g:taken = g:taken . "T" . a:n
- let v:errmsg = ""
- try
- let caught = 0
- execute "let var = " . a:expr
- catch /^Vim\((\a\+)\)\=:/
- " v:errmsg is not set when the error message is converted to an
- " exception. Set it to the original error message.
- let v:errmsg = substitute(v:exception,
- \ '^Vim\((\a\+)\)\=:', '', "")
- let caught = 1
- finally
- if !caught " no error exceptions ($VIMNOERRTHROW set)
- call MSG(a:n, 'E15', "Invalid expression")
- else
- call MSG(a:n, a:enr, a:emsg)
- endif
- XloopNEXT
- " Discard an aborting error:
- return
- endtry
- catch /.*/
- Xloop 1 " X: 0
- Xout a:n.":" v:exception "in" ExtraVimThrowpoint()
- endtry
- endfunction
-
- call T(15, 'Nofunc() + CONT(15)', 'E117', "Unknown function")
- call T(16, 'F(1 2 + CONT(16))', 'E116', "Invalid arguments")
- call T(17, 'F(1, 2) + CONT(17)', 'E118', "Too many arguments")
- call T(18, 'F() + CONT(18)', 'E119', "Not enough arguments")
- call T(19, '{(1} + CONT(19)', 'E110', "Missing ')'")
- call T(20, '("abc"[1) + CONT(20)', 'E111', "Missing ']'")
- call T(21, '(1 +) + CONT(21)', 'E15', "Invalid expression")
- call T(22, '1 2 + CONT(22)', 'E15', "Invalid expression")
- call T(23, '(1 ? 2) + CONT(23)', 'E109', "Missing ':' after '?'")
- call T(24, '("abc) + CONT(24)', 'E114', "Missing quote")
- call T(25, "('abc) + CONT(25)", 'E115', "Missing quote")
- call T(26, '& + CONT(26)', 'E112', "Option name missing")
- call T(27, '&asdf + CONT(27)', 'E113', "Unknown option")
-
- Xpath 134217728 " X: 134217728
-
- let expected = ""
- \ . "T1M1T2M2T3M3T4M4T5M5T6M6T7M7T8M8T9M9T10M10T11M11T12M12T13M13T14M14"
- \ . "T15M15T16M16T17M17T18M18T19M19T20M20T21M21T22M22T23M23T24M24T25M25"
- \ . "T26M26T27M27"
-
- if taken != expected
- Xpath 268435456 " X: 0
- Xout "'taken' is" taken "instead of" expected
- if substitute(taken, '\(.*\)T3M3x\(.*\)', '\1T3M3\2', "") == expected
- Xout "Is ++emsg_skip for var with expr_start non-NULL"
- \ "in f_exists ok?"
- endif
- endif
-
- unlet! var caught taken expected
- call delete(WA_t5)
- unlet! WA_t5
- delfunction WA_t5
-
-endif
-
-Xcheck 134217728
-
-
-"-------------------------------------------------------------------------------
-" Test 79: Throwing one of several errors for the same command {{{1
-"
-" When several errors appear in a row (for instance during expression
-" evaluation), the first as the most specific one is used when
-" throwing an error exception. If, however, a syntax error is
-" detected afterwards, this one is used for the error exception.
-" On a syntax error, the next command is not executed, on a normal
-" error, however, it is (relevant only in a function without the
-" "abort" flag). v:errmsg is not set.
-"
-" If throwing error exceptions is configured off, v:errmsg is always
-" set to the latest error message, that is, to the more general
-" message or the syntax error, respectively.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-XloopINIT 1 2
-
-function! NEXT(cmd)
- exec a:cmd . " | Xloop 1"
-endfunction
-
-call NEXT('echo novar') " X: 1 * 1 (checks nextcmd)
-XloopNEXT
-call NEXT('let novar #') " X: 0 * 2 (skips nextcmd)
-XloopNEXT
-call NEXT('unlet novar #') " X: 0 * 4 (skips nextcmd)
-XloopNEXT
-call NEXT('let {novar}') " X: 0 * 8 (skips nextcmd)
-XloopNEXT
-call NEXT('unlet{ novar}') " X: 0 * 16 (skips nextcmd)
-
-function! EXEC(cmd)
- exec a:cmd
-endfunction
-
-function! MATCH(expected, msg, enr, emsg)
- let msg = a:msg
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let msg = ":" . msg
- endif
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if msg !~ '^'.a:enr.':' || (english && msg !~ a:emsg)
- let match = 0
- if a:expected " no match although expected
- if a:msg == ""
- Xout "Message missing."
- else
- let msg = escape(msg, '"')
- Xout "Unexpected message:" msg
- Xout "Expected:" a:enr . ": " . a:emsg
- endif
- endif
- else
- let match = 1
- if !a:expected " match although not expected
- let msg = escape(msg, '"')
- Xout "Unexpected message:" msg
- Xout "Expected none."
- endif
- endif
- return match
-endfunction
-
-try
-
- while 1 " dummy loop
- try
- let v:errmsg = ""
- let caught = 0
- let thrmsg = ""
- call EXEC('echo novar') " normal error
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let thrmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xpath 32 " X: 32
- if !caught
- if !$VIMNOERRTHROW
- Xpath 64 " X: 0
- endif
- elseif !MATCH(1, thrmsg, 'E121', "Undefined variable")
- \ || v:errmsg != ""
- Xpath 128 " X: 0
- endif
- if !caught && !MATCH(1, v:errmsg, 'E15', "Invalid expression")
- Xpath 256 " X: 0
- endif
- break " discard error if $VIMNOERRTHROW == 1
- endtry
- endwhile
-
- Xpath 512 " X: 512
- let cmd = "let"
- XloopINIT 1024 32
- while cmd != ""
- try
- let v:errmsg = ""
- let caught = 0
- let thrmsg = ""
- call EXEC(cmd . ' novar #') " normal plus syntax error
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let thrmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xloop 1 " X: 1024 * (1 + 32)
- if !caught
- if !$VIMNOERRTHROW
- Xloop 2 " X: 0
- endif
- else
- if cmd == "let"
- let match = MATCH(0, thrmsg, 'E121', "Undefined variable")
- elseif cmd == "unlet"
- let match = MATCH(0, thrmsg, 'E108', "No such variable")
- endif
- if match " normal error
- Xloop 4 " X: 0
- endif
- if !MATCH(1, thrmsg, 'E488', "Trailing characters")
- \|| v:errmsg != ""
- " syntax error
- Xloop 8 " X: 0
- endif
- endif
- if !caught && !MATCH(1, v:errmsg, 'E488', "Trailing characters")
- " last error
- Xloop 16 " X: 0
- endif
- if cmd == "let"
- let cmd = "unlet"
- else
- let cmd = ""
- endif
- XloopNEXT
- continue " discard error if $VIMNOERRTHROW == 1
- endtry
- endwhile
-
- Xpath 1048576 " X: 1048576
- let cmd = "let"
- XloopINIT 2097152 32
- while cmd != ""
- try
- let v:errmsg = ""
- let caught = 0
- let thrmsg = ""
- call EXEC(cmd . ' {novar}') " normal plus syntax error
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let thrmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xloop 1 " X: 2097152 * (1 + 32)
- if !caught
- if !$VIMNOERRTHROW
- Xloop 2 " X: 0
- endif
- else
- if MATCH(0, thrmsg, 'E121', "Undefined variable") " normal error
- Xloop 4 " X: 0
- endif
- if !MATCH(1, thrmsg, 'E475', 'Invalid argument\>')
- \ || v:errmsg != "" " syntax error
- Xloop 8 " X: 0
- endif
- endif
- if !caught && !MATCH(1, v:errmsg, 'E475', 'Invalid argument\>')
- " last error
- Xloop 16 " X: 0
- endif
- if cmd == "let"
- let cmd = "unlet"
- else
- let cmd = ""
- endif
- XloopNEXT
- continue " discard error if $VIMNOERRTHROW == 1
- endtry
- endwhile
-
-catch /.*/
- " The Xpath command does not accept 2^31 (negative); add explicitly:
- let Xpath = Xpath + 2147483648 " X: 0
- Xout v:exception "in" v:throwpoint
-endtry
-
-unlet! next_command thrmsg match
-delfunction NEXT
-delfunction EXEC
-delfunction MATCH
-
-Xcheck 70288929
-
-
-"-------------------------------------------------------------------------------
-" Test 80: Syntax error in expression for illegal :elseif {{{1
-"
-" If there is a syntax error in the expression after an illegal
-" :elseif, an error message is given (or an error exception thrown)
-" for the illegal :elseif rather than the expression error.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-let v:errmsg = ""
-if 0
-else
-elseif 1 ||| 2
-endif
-Xpath 1 " X: 1
-if !MSG('E584', ":elseif after :else")
- Xpath 2 " X: 0
-endif
-
-let v:errmsg = ""
-if 1
-else
-elseif 1 ||| 2
-endif
-Xpath 4 " X: 4
-if !MSG('E584', ":elseif after :else")
- Xpath 8 " X: 0
-endif
-
-let v:errmsg = ""
-elseif 1 ||| 2
-Xpath 16 " X: 16
-if !MSG('E582', ":elseif without :if")
- Xpath 32 " X: 0
-endif
-
-let v:errmsg = ""
-while 1
- elseif 1 ||| 2
-endwhile
-Xpath 64 " X: 64
-if !MSG('E582', ":elseif without :if")
- Xpath 128 " X: 0
-endif
-
-while 1
- try
- try
- let v:errmsg = ""
- let caught = 0
- if 0
- else
- elseif 1 ||| 2
- endif
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xpath 256 " X: 256
- if !caught && !$VIMNOERRTHROW
- Xpath 512 " X: 0
- endif
- if !MSG('E584', ":elseif after :else")
- Xpath 1024 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 2048 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let v:errmsg = ""
- let caught = 0
- if 1
- else
- elseif 1 ||| 2
- endif
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xpath 4096 " X: 4096
- if !caught && !$VIMNOERRTHROW
- Xpath 8192 " X: 0
- endif
- if !MSG('E584', ":elseif after :else")
- Xpath 16384 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 32768 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let v:errmsg = ""
- let caught = 0
- elseif 1 ||| 2
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xpath 65536 " X: 65536
- if !caught && !$VIMNOERRTHROW
- Xpath 131072 " X: 0
- endif
- if !MSG('E582', ":elseif without :if")
- Xpath 262144 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 524288 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let v:errmsg = ""
- let caught = 0
- while 1
- elseif 1 ||| 2
- endwhile
- catch /^Vim\((\a\+)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((\a\+)\)\=:', '', "")
- finally
- Xpath 1048576 " X: 1048576
- if !caught && !$VIMNOERRTHROW
- Xpath 2097152 " X: 0
- endif
- if !MSG('E582', ":elseif without :if")
- Xpath 4194304 " X: 0
- endif
- endtry
- catch /.*/
- Xpath 8388608 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-Xpath 16777216 " X: 16777216
-
-unlet! caught
-delfunction MSG
-
-Xcheck 17895765
-
-
-"-------------------------------------------------------------------------------
-" Test 81: Discarding exceptions after an error or interrupt {{{1
-"
-" When an exception is thrown from inside a :try conditional without
-" :catch and :finally clauses and an error or interrupt occurs before
-" the :endtry is reached, the exception is discarded.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- try
- Xpath 1 " X: 1
- try
- Xpath 2 " X: 2
- throw "arrgh"
- Xpath 4 " X: 0
-" if 1
- Xpath 8 " X: 0
- " error after :throw: missing :endif
- endtry
- Xpath 16 " X: 0
- catch /arrgh/
- Xpath 32 " X: 0
- endtry
- Xpath 64 " X: 0
-endif
-
-if ExtraVim()
- try
- Xpath 128 " X: 128
- try
- Xpath 256 " X: 256
- throw "arrgh"
- Xpath 512 " X: 0
- endtry " INTERRUPT
- Xpath 1024 " X: 0
- catch /arrgh/
- Xpath 2048 " X: 0
- endtry
- Xpath 4096 " X: 0
-endif
-
-Xcheck 387
-
-
-"-------------------------------------------------------------------------------
-" Test 82: Ignoring :catch clauses after an error or interrupt {{{1
-"
-" When an exception is thrown and an error or interrupt occurs before
-" the matching :catch clause is reached, the exception is discarded
-" and the :catch clause is ignored (also for the error or interrupt
-" exception being thrown then).
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- try
- try
- Xpath 1 " X: 1
- throw "arrgh"
- Xpath 2 " X: 0
-" if 1
- Xpath 4 " X: 0
- " error after :throw: missing :endif
- catch /.*/
- Xpath 8 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- catch /.*/
- Xpath 16 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
- Xpath 32 " X: 0
- catch /arrgh/
- Xpath 64 " X: 0
- endtry
- Xpath 128 " X: 0
-endif
-
-if ExtraVim()
- function! E()
- try
- try
- Xpath 256 " X: 256
- throw "arrgh"
- Xpath 512 " X: 0
-" if 1
- Xpath 1024 " X: 0
- " error after :throw: missing :endif
- catch /.*/
- Xpath 2048 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- catch /.*/
- Xpath 4096 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
- Xpath 8192 " X: 0
- catch /arrgh/
- Xpath 16384 " X: 0
- endtry
- endfunction
-
- call E()
- Xpath 32768 " X: 0
-endif
-
-if ExtraVim()
- try
- try
- Xpath 65536 " X: 65536
- throw "arrgh"
- Xpath 131072 " X: 0
- catch /.*/ "INTERRUPT
- Xpath 262144 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- catch /.*/
- Xpath 524288 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
- Xpath 1048576 " X: 0
- catch /arrgh/
- Xpath 2097152 " X: 0
- endtry
- Xpath 4194304 " X: 0
-endif
-
-if ExtraVim()
- function I()
- try
- try
- Xpath 8388608 " X: 8388608
- throw "arrgh"
- Xpath 16777216 " X: 0
- catch /.*/ "INTERRUPT
- Xpath 33554432 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- catch /.*/
- Xpath 67108864 " X: 0
- Xout v:exception "in" ExtraVimThrowpoint()
- endtry
- Xpath 134217728 " X: 0
- catch /arrgh/
- Xpath 268435456 " X: 0
- endtry
- endfunction
-
- call I()
- Xpath 536870912 " X: 0
-endif
-
-Xcheck 8454401
-
-
-"-------------------------------------------------------------------------------
-" Test 83: Executing :finally clauses after an error or interrupt {{{1
-"
-" When an exception is thrown and an error or interrupt occurs before
-" the :finally of the innermost :try is reached, the exception is
-" discarded and the :finally clause is executed.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
- try
- Xpath 1 " X: 1
- try
- Xpath 2 " X: 2
- throw "arrgh"
- Xpath 4 " X: 0
-" if 1
- Xpath 8 " X: 0
- " error after :throw: missing :endif
- finally
- Xpath 16 " X: 16
- endtry
- Xpath 32 " X: 0
- catch /arrgh/
- Xpath 64 " X: 0
- endtry
- Xpath 128 " X: 0
-endif
-
-if ExtraVim()
- try
- Xpath 256 " X: 256
- try
- Xpath 512 " X: 512
- throw "arrgh"
- Xpath 1024 " X: 0
- finally "INTERRUPT
- Xpath 2048 " X: 2048
- endtry
- Xpath 4096 " X: 0
- catch /arrgh/
- Xpath 8192 " X: 0
- endtry
- Xpath 16384 " X: 0
-endif
-
-Xcheck 2835
-
-
-"-------------------------------------------------------------------------------
-" Test 84: Exceptions in autocommand sequences. {{{1
-"
-" When an exception occurs in a sequence of autocommands for
-" a specific event, the rest of the sequence is not executed. The
-" command that triggered the autocommand execution aborts, and the
-" exception is propagated to the caller.
-"
-" For the FuncUndefined event under a function call expression or
-" :call command, the function is not executed, even when it has
-" been defined by the autocommands before the exception occurred.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- function! INT()
- "INTERRUPT
- let dummy = 0
- endfunction
-
- aug TMP
- autocmd!
-
- autocmd User x1 Xpath 1 " X: 1
- autocmd User x1 throw "x1"
- autocmd User x1 Xpath 2 " X: 0
-
- autocmd User x2 Xpath 4 " X: 4
- autocmd User x2 asdf
- autocmd User x2 Xpath 8 " X: 0
-
- autocmd User x3 Xpath 16 " X: 16
- autocmd User x3 call INT()
- autocmd User x3 Xpath 32 " X: 0
-
- autocmd FuncUndefined U1 function! U1()
- autocmd FuncUndefined U1 Xpath 64 " X: 0
- autocmd FuncUndefined U1 endfunction
- autocmd FuncUndefined U1 Xpath 128 " X: 128
- autocmd FuncUndefined U1 throw "U1"
- autocmd FuncUndefined U1 Xpath 256 " X: 0
-
- autocmd FuncUndefined U2 function! U2()
- autocmd FuncUndefined U2 Xpath 512 " X: 0
- autocmd FuncUndefined U2 endfunction
- autocmd FuncUndefined U2 Xpath 1024 " X: 1024
- autocmd FuncUndefined U2 ASDF
- autocmd FuncUndefined U2 Xpath 2048 " X: 0
-
- autocmd FuncUndefined U3 function! U3()
- autocmd FuncUndefined U3 Xpath 4096 " X: 0
- autocmd FuncUndefined U3 endfunction
- autocmd FuncUndefined U3 Xpath 8192 " X: 8192
- autocmd FuncUndefined U3 call INT()
- autocmd FuncUndefined U3 Xpath 16384 " X: 0
- aug END
-
- try
- try
- Xpath 32768 " X: 32768
- doautocmd User x1
- catch /x1/
- Xpath 65536 " X: 65536
- endtry
-
- while 1
- try
- Xpath 131072 " X: 131072
- let caught = 0
- doautocmd User x2
- catch /asdf/
- let caught = 1
- finally
- Xpath 262144 " X: 262144
- if !caught && !$VIMNOERRTHROW
- Xpath 524288 " X: 0
- " Propagate uncaught error exception,
- else
- " ... but break loop for caught error exception,
- " or discard error and break loop if $VIMNOERRTHROW
- break
- endif
- endtry
- endwhile
-
- while 1
- try
- Xpath 1048576 " X: 1048576
- let caught = 0
- doautocmd User x3
- catch /Vim:Interrupt/
- let caught = 1
- finally
- Xpath 2097152 " X: 2097152
- if !caught && !$VIMNOINTTHROW
- Xpath 4194304 " X: 0
- " Propagate uncaught interrupt exception,
- else
- " ... but break loop for caught interrupt exception,
- " or discard interrupt and break loop if $VIMNOINTTHROW
- break
- endif
- endtry
- endwhile
-
- if exists("*U1") | delfunction U1 | endif
- if exists("*U2") | delfunction U2 | endif
- if exists("*U3") | delfunction U3 | endif
-
- try
- Xpath 8388608 " X: 8388608
- call U1()
- catch /U1/
- Xpath 16777216 " X: 16777216
- endtry
-
- while 1
- try
- Xpath 33554432 " X: 33554432
- let caught = 0
- call U2()
- catch /ASDF/
- let caught = 1
- finally
- Xpath 67108864 " X: 67108864
- if !caught && !$VIMNOERRTHROW
- Xpath 134217728 " X: 0
- " Propagate uncaught error exception,
- else
- " ... but break loop for caught error exception,
- " or discard error and break loop if $VIMNOERRTHROW
- break
- endif
- endtry
- endwhile
-
- while 1
- try
- Xpath 268435456 " X: 268435456
- let caught = 0
- call U3()
- catch /Vim:Interrupt/
- let caught = 1
- finally
- Xpath 536870912 " X: 536870912
- if !caught && !$VIMNOINTTHROW
- Xpath 1073741824 " X: 0
- " Propagate uncaught interrupt exception,
- else
- " ... but break loop for caught interrupt exception,
- " or discard interrupt and break loop if $VIMNOINTTHROW
- break
- endif
- endtry
- endwhile
- catch /.*/
- " The Xpath command does not accept 2^31 (negative); display explicitly:
- exec "!echo 2147483648 >>" . g:ExtraVimResult
- Xout "Caught" v:exception "in" v:throwpoint
- endtry
-
- unlet caught
- delfunction INT
- delfunction U1
- delfunction U2
- delfunction U3
- au! TMP
- aug! TMP
-endif
-
-Xcheck 934782101
-
-
-"-------------------------------------------------------------------------------
-" Test 85: Error exceptions in autocommands for I/O command events {{{1
-"
-" When an I/O command is inside :try/:endtry, autocommands to be
-" executed after it should be skipped on an error (exception) in the
-" command itself or in autocommands to be executed before the command.
-" In the latter case, the I/O command should not be executed either.
-" Example 1: BufWritePre, :write, BufWritePost
-" Example 2: FileReadPre, :read, FileReadPost.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-function! MSG(enr, emsg)
- let english = v:lang == "C" || v:lang =~ '^[Ee]n'
- if a:enr == ""
- Xout "TODO: Add message number for:" a:emsg
- let v:errmsg = ":" . v:errmsg
- endif
- let match = 1
- if v:errmsg !~ '^'.a:enr.':' || (english && v:errmsg !~ a:emsg)
- let match = 0
- if v:errmsg == ""
- Xout "Message missing."
- else
- let v:errmsg = escape(v:errmsg, '"')
- Xout "Unexpected message:" v:errmsg
- endif
- endif
- return match
-endfunction
-
-" Remove the autocommands for the events specified as arguments in all used
-" autogroups.
-function! Delete_autocommands(...)
- let augfile = tempname()
- while 1
- try
- exec "redir >" . augfile
- aug
- redir END
- exec "edit" augfile
- g/^$/d
- norm G$
- let wrap = "w"
- while search('\%( \|^\)\@<=.\{-}\%( \)\@=', wrap) > 0
- let wrap = "W"
- exec "norm y/ \n"
- let argno = 1
- while argno <= a:0
- exec "au!" escape(@", " ") a:{argno}
- let argno = argno + 1
- endwhile
- endwhile
- catch /.*/
- finally
- bwipeout!
- call delete(augfile)
- break " discard errors for $VIMNOERRTHROW
- endtry
- endwhile
-endfunction
-
-call Delete_autocommands("BufWritePre", "BufWritePost")
-
-while 1
- try
- try
- let post = 0
- aug TMP
- au! BufWritePost * let post = 1
- aug END
- let caught = 0
- write /n/o/n/e/x/i/s/t/e/n/t
- catch /^Vim(write):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(write):', '', "")
- finally
- Xpath 1 " X: 1
- if !caught && !$VIMNOERRTHROW
- Xpath 2 " X: 0
- endif
- let v:errmsg = substitute(v:errmsg, '^"/n/o/n/e/x/i/s/t/e/n/t" ',
- \ '', "")
- if !MSG('E212', "Can't open file for writing")
- Xpath 4 " X: 0
- endif
- if post
- Xpath 8 " X: 0
- Xout "BufWritePost commands executed after write error"
- endif
- au! TMP
- aug! TMP
- endtry
- catch /.*/
- Xpath 16 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- try
- let post = 0
- aug TMP
- au! BufWritePre * asdf
- au! BufWritePost * let post = 1
- aug END
- let tmpfile = tempname()
- let caught = 0
- exec "write" tmpfile
- catch /^Vim\((write)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((write)\)\=:', '', "")
- finally
- Xpath 32 " X: 32
- if !caught && !$VIMNOERRTHROW
- Xpath 64 " X: 0
- endif
- let v:errmsg = substitute(v:errmsg, '^"'.tmpfile.'" ', '', "")
- if !MSG('E492', "Not an editor command")
- Xpath 128 " X: 0
- endif
- if filereadable(tmpfile)
- Xpath 256 " X: 0
- Xout ":write command not suppressed after BufWritePre error"
- endif
- if post
- Xpath 512 " X: 0
- Xout "BufWritePost commands executed after BufWritePre error"
- endif
- au! TMP
- aug! TMP
- endtry
- catch /.*/
- Xpath 1024 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-call delete(tmpfile)
-
-call Delete_autocommands("BufWritePre", "BufWritePost",
- \ "BufReadPre", "BufReadPost", "FileReadPre", "FileReadPost")
-
-while 1
- try
- try
- let post = 0
- aug TMP
- au! FileReadPost * let post = 1
- aug END
- let caught = 0
- read /n/o/n/e/x/i/s/t/e/n/t
- catch /^Vim(read):/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim(read):', '', "")
- finally
- Xpath 2048 " X: 2048
- if !caught && !$VIMNOERRTHROW
- Xpath 4096 " X: 0
- endif
- let v:errmsg = substitute(v:errmsg, ' /n/o/n/e/x/i/s/t/e/n/t$',
- \ '', "")
- if !MSG('E484', "Can't open file")
- Xpath 8192 " X: 0
- endif
- if post
- Xpath 16384 " X: 0
- Xout "FileReadPost commands executed after write error"
- endif
- au! TMP
- aug! TMP
- endtry
- catch /.*/
- Xpath 32768 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-while 1
- try
- let infile = tempname()
- let tmpfile = tempname()
- exec "!echo XYZ >" . infile
- exec "edit" tmpfile
- try
- Xpath 65536 " X: 65536
- try
- let post = 0
- aug TMP
- au! FileReadPre * asdf
- au! FileReadPost * let post = 1
- aug END
- let caught = 0
- exec "0read" infile
- catch /^Vim\((read)\)\=:/
- let caught = 1
- let v:errmsg = substitute(v:exception, '^Vim\((read)\)\=:', '',
- \ "")
- finally
- Xpath 131072 " X: 131072
- if !caught && !$VIMNOERRTHROW
- Xpath 262144 " X: 0
- endif
- let v:errmsg = substitute(v:errmsg, ' '.infile.'$', '', "")
- if !MSG('E492', "Not an editor command")
- Xpath 524288 " X: 0
- endif
- if getline("1") == "XYZ"
- Xpath 1048576 " X: 0
- Xout ":read command not suppressed after FileReadPre error"
- endif
- if post
- Xpath 2097152 " X: 0
- Xout "FileReadPost commands executed after " .
- \ "FileReadPre error"
- endif
- au! TMP
- aug! TMP
- endtry
- finally
- bwipeout!
- endtry
- catch /.*/
- Xpath 4194304 " X: 0
- Xout v:exception "in" v:throwpoint
- finally
- break " discard error for $VIMNOERRTHROW
- endtry
-endwhile
-
-call delete(infile)
-call delete(tmpfile)
-unlet! caught post infile tmpfile
-delfunction MSG
-delfunction Delete_autocommands
-
-Xcheck 198689
-
-"-------------------------------------------------------------------------------
-" Test 86: setloclist crash {{{1
-"
-" Executing a setloclist() on BufUnload shouldn't crash Vim
-"-------------------------------------------------------------------------------
-
-func F
- au BufUnload * :call setloclist(0, [{'bufnr':1, 'lnum':1, 'col':1, 'text': 'tango down'}])
-
- :lvimgrep /.*/ *.mak
-endfunc
-
-XpathINIT
-
-ExecAsScript F
-
-delfunction F
-Xout "No Crash for vimgrep on BufUnload"
-Xcheck 0
-
-"-------------------------------------------------------------------------------
-" Test 87 using (expr) ? funcref : funcref {{{1
-"
-" Vim needs to correctly parse the funcref and even when it does
-" not execute the funcref, it needs to consume the trailing ()
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-func Add2(x1, x2)
- return a:x1 + a:x2
-endfu
-
-func GetStr()
- return "abcdefghijklmnopqrstuvwxyp"
-endfu
-
-echo function('Add2')(2,3)
-
-Xout 1 ? function('Add2')(1,2) : function('Add2')(2,3)
-Xout 0 ? function('Add2')(1,2) : function('Add2')(2,3)
-" Make sure, GetStr() still works.
-Xout GetStr()[0:10]
-
-
-delfunction GetStr
-delfunction Add2
-Xout "Successfully executed funcref Add2"
-
-Xcheck 0
-
-"-------------------------------------------------------------------------------
-" Test 88: $VIMNOERRTHROW and $VIMNOINTTHROW support {{{1
-"
-" It is possible to configure Vim for throwing exceptions on error
-" or interrupt, controlled by variables $VIMNOERRTHROW and
-" $VIMNOINTTHROW. This is just for increasing the number of tests.
-" All tests here should run for all four combinations of setting
-" these variables to 0 or 1. The variables are intended for the
-" development phase only. In the final release, Vim should be
-" configured to always use error and interrupt exceptions.
-"
-" The test result is "OK",
-"
-" - if the $VIMNOERRTHROW and the $VIMNOINTTHROW control are not
-" configured and exceptions are thrown on error and on
-" interrupt.
-"
-" - if the $VIMNOERRTHROW or the $VIMNOINTTHROW control is
-" configured and works as intended.
-"
-" What actually happens, is shown in the test output.
-"
-" Otherwise, the test result is "FAIL", and the test output describes
-" the problem.
-"
-" IMPORTANT: This must be the last test because it sets $VIMNOERRTHROW and
-" $VIMNOINTTHROW.
-"-------------------------------------------------------------------------------
-
-XpathINIT
-
-if ExtraVim()
-
- function! ThrowOnError()
- XloopNEXT
- let caught = 0
- try
- Xloop 1 " X: 1 + 8 + 64
- asdf
- catch /.*/
- let caught = 1 " error exception caught
- finally
- Xloop 2 " X: 2 + 16 + 128
- return caught " discard aborting error
- endtry
- Xloop 4 " X: 0
- endfunction
-
- let quits_skipped = 0
-
- function! ThrowOnInterrupt()
- XloopNEXT
- let caught = 0
- try
- Xloop 1 " X: (1 + 8 + 64) * 512
- "INTERRUPT3
- let dummy = 0
- let g:quits_skipped = g:quits_skipped + 1
- catch /.*/
- let caught = 1 " interrupt exception caught
- finally
- Xloop 2 " X: (2 + 16 + 128) * 512
- return caught " discard interrupt
- endtry
- Xloop 4 " X: 0
- endfunction
-
- function! CheckThrow(Type)
- execute 'return ThrowOn' . a:Type . '()'
- endfunction
-
- function! CheckConfiguration(type) " type is "error" or "interrupt"
-
- let type = a:type
- let Type = substitute(type, '.*', '\u&', "")
- let VAR = '$VIMNO' . substitute(type, '\(...\).*', '\U\1', "") . 'THROW'
-
- if type == "error"
- XloopINIT! 1 8
- elseif type == "interrupt"
- XloopINIT! 512 8
- endif
-
- exec 'let requested_for_tests = exists(VAR) && ' . VAR . ' == 0'
- exec 'let suppressed_for_tests = ' . VAR . ' != 0'
- let used_in_tests = CheckThrow(Type)
-
- exec 'let ' . VAR . ' = 0'
- let request_works = CheckThrow(Type)
-
- exec 'let ' . VAR . ' = 1'
- let suppress_works = !CheckThrow(Type)
-
- if type == "error"
- XloopINIT! 262144 8
- elseif type == "interrupt"
- XloopINIT! 2097152 8
-
- if g:quits_skipped != 0
- Xloop 1 " X: 0*2097152
- Xout "Test environment error. Interrupt breakpoints skipped: "
- \ . g:quits_skipped . ".\n"
- \ . "Cannot check whether interrupt exceptions are thrown."
- return
- endif
- endif
-
- let failure =
- \ !suppressed_for_tests && !used_in_tests
- \ || !request_works
-
- let contradiction =
- \ used_in_tests
- \ ? suppressed_for_tests && !request_works
- \ : !suppressed_for_tests
-
- if failure
- " Failure in configuration.
- Xloop 2 " X: 0 * 2* (262144 + 2097152)
- elseif contradiction
- " Failure in test logic. Should not happen.
- Xloop 4 " X: 0 * 4 * (262144 + 2097152)
- endif
-
- let var_control_configured =
- \ request_works != used_in_tests
- \ || suppress_works == used_in_tests
-
- let var_control_not_configured =
- \ requested_for_tests || suppressed_for_tests
- \ ? request_works && !suppress_works
- \ : request_works == used_in_tests
- \ && suppress_works != used_in_tests
-
- let with = used_in_tests ? "with" : "without"
-
- let set = suppressed_for_tests ? "non-zero" :
- \ requested_for_tests ? "0" : "unset"
-
- let although = contradiction && !var_control_not_configured
- \ ? ",\nalthough "
- \ : ".\n"
-
- let output = "All tests were run " . with . " throwing exceptions on "
- \ . type . although
-
- if !var_control_not_configured
- let output = output . VAR . " was " . set . "."
-
- if !request_works && !requested_for_tests
- let output = output .
- \ "\n" . Type . " exceptions are not thrown when " . VAR .
- \ " is\nset to 0."
- endif
-
- if !suppress_works && (!used_in_tests ||
- \ !request_works &&
- \ !requested_for_tests && !suppressed_for_tests)
- let output = output .
- \ "\n" . Type . " exceptions are thrown when " . VAR .
- \ " is set to 1."
- endif
-
- if !failure && var_control_configured
- let output = output .
- \ "\nRun tests also with " . substitute(VAR, '^\$', '', "")
- \ . "=" . used_in_tests . "."
- \ . "\nThis is for testing in the development phase only."
- \ . " Remove the \n"
- \ . VAR . " control in the final release."
- endif
- else
- let output = output .
- \ "The " . VAR . " control is not configured."
- endif
-
- Xout output
- endfunction
-
- call CheckConfiguration("error")
- Xpath 16777216 " X: 16777216
- call CheckConfiguration("interrupt")
- Xpath 33554432 " X: 33554432
-endif
-
-Xcheck 50443995
-
-" IMPORTANT: No test should be added after this test because it changes
-" $VIMNOERRTHROW and $VIMNOINTTHROW.
-
-
-"-------------------------------------------------------------------------------
-" Modelines {{{1
-" vim: ts=8 sw=4 tw=80 fdm=marker
-" vim: fdt=substitute(substitute(foldtext(),\ '\\%(^+--\\)\\@<=\\(\\s*\\)\\(.\\{-}\\)\:\ \\%(\"\ \\)\\=\\(Test\ \\d*\\)\:\\s*',\ '\\3\ (\\2)\:\ \\1',\ \"\"),\ '\\(Test\\s*\\)\\(\\d\\)\\D\\@=',\ '\\1\ \\2',\ "")
-"-------------------------------------------------------------------------------
diff --git a/src/testdir/test5.in b/src/testdir/test5.in
deleted file mode 100644
index e19e20d59b..0000000000
--- a/src/testdir/test5.in
+++ /dev/null
@@ -1,29 +0,0 @@
-Test for autocommand that deletes the current buffer on BufLeave event.
-Also test deleting the last buffer, should give a new, empty buffer.
-
-STARTTEST
-:so small.vim
-:au BufLeave Xxx bwipe
-/start of
-:.,/end of/w! Xxx " write test file Xxx
-:sp Xxx " split to Xxx
-:bwipe " delete buffer Xxx, now we're back here
-G?this is a
-othis is some more text
-: " Append some text to this file
-:?start?,$w! test.out " Write current file contents
-:bwipe test.out " delete alternate buffer
-:au bufleave test5.in bwipe
-:bwipe! " delete current buffer, get an empty one
-ithis is another test line:w >>test.out
-: " append an extra line to the output file
-:qa!
-ENDTEST
-
-start of test file Xxx
-vim: set noai :
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test5.ok b/src/testdir/test5.ok
deleted file mode 100644
index 6743060794..0000000000
--- a/src/testdir/test5.ok
+++ /dev/null
@@ -1,9 +0,0 @@
-start of test file Xxx
-vim: set noai :
- this is a test
- this is a test
- this is a test
- this is a test
-this is some more text
-end of test file Xxx
-this is another test line
diff --git a/src/testdir/test50.in b/src/testdir/test50.in
deleted file mode 100644
index 0cbf4bf6d6..0000000000
--- a/src/testdir/test50.in
+++ /dev/null
@@ -1,90 +0,0 @@
-Test for shortpathname ':8' extension.
-Only for use on Win32 systems!
-
-STARTTEST
-:so small.vim
-:fun! TestIt(file, bits, expected)
- let res=fnamemodify(a:file,a:bits)
- if a:expected == ''
- echo "'".a:file."'->(".a:bits.")->'".res."'"
- else
- if substitute(res,'/','\\', 'g') != substitute( a:expected, '/','\\', 'g')
- echo "FAILED: '".a:file."'->(".a:bits.")->'".res."'"
- echo "Expected: '".a:expected."'"
- else
- echo "OK"
- endif
- endif
-endfun
-:fun! MakeDir( dirname )
- "exe '!mkdir '.substitute(a:dirname,'/','\\','g')
- call system('mkdir '.substitute(a:dirname,'/','\\','g'))
-endfun
-:fun! RMDir( dirname)
- "exe '!rmdir '.substitute(a:dirname,'/','\\','g')
- call system('rmdir '.substitute(a:dirname,'/','\\','g'))
-endfun
-:fun! MakeFile( filename)
- "exe '!copy nul '.substitute(a:filename,'/','\\','g')
- call system('copy nul '.substitute(a:filename,'/','\\','g'))
-endfun
-:fun! TestColonEight()
- redir! >test.out
- " This could change for CygWin to //cygdrive/c
- let dir1='c:/x.x.y'
- if filereadable(dir1) || isdirectory(dir1)
- echo "FATAL: '".dir1."' exists, cannot run test"
- return
- endif
- let file1=dir1.'/zz.y.txt'
- let nofile1=dir1.'/z.y.txt'
- let dir2=dir1.'/VimIsTheGreatestSinceSlicedBread'
- let file2=dir2.'/z.txt'
- let nofile2=dir2.'/zz.txt'
- call MakeDir( dir1 )
- let resdir1 = substitute(fnamemodify(dir1, ':p:8'), '\\$', '', '')
- if resdir1 !~ '\V\^c:/XX\x\x\x\x~1.Y\$'
- echo "FATAL: unexpected short name: " . resdir1
- echo "INFO: please report your OS to vim-dev"
- return
- endif
- let resfile1=resdir1.'/ZZY~1.TXT'
- let resnofile1=resdir1.'/z.y.txt'
- let resdir2=resdir1.'/VIMIST~1'
- let resfile2=resdir2.'/z.txt'
- let resnofile2=resdir2.'/zz.txt'
- call MakeDir( dir2 )
- call MakeFile( file1 )
- call MakeFile( file2 )
- call TestIt(file1, ':p:8', resfile1)
- call TestIt(nofile1, ':p:8', resnofile1)
- call TestIt(file2, ':p:8', resfile2)
- call TestIt(nofile2, ':p:8', resnofile2)
- call TestIt(nofile2, ':p:8:h', fnamemodify(resnofile2,':h'))
- exe 'cd '.dir1
- call TestIt(file1, ':.:8', strpart(resfile1,strlen(resdir1)+1))
- call TestIt(nofile1, ':.:8', strpart(resnofile1,strlen(resdir1)+1))
- call TestIt(file2, ':.:8', strpart(resfile2,strlen(resdir1)+1))
- call TestIt(nofile2, ':.:8', strpart(resnofile2,strlen(resdir1)+1))
- let $HOME=dir1
- call TestIt(file1, ':~:8', '~'.strpart(resfile1,strlen(resdir1)))
- call TestIt(nofile1, ':~:8', '~'.strpart(resnofile1,strlen(resdir1)))
- call TestIt(file2, ':~:8', '~'.strpart(resfile2,strlen(resdir1)))
- call TestIt(nofile2, ':~:8', '~'.strpart(resnofile2,strlen(resdir1)))
- cd c:/
- call delete( file2 )
- call delete( file1 )
- call RMDir( dir2 )
- call RMDir( dir1 )
- echo
- redir END
-endfun
-:let dir = getcwd()
-:call TestColonEight()
-:exe "cd " . dir
-:edit! test.out
-:set ff=dos
-:w
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test50.ok b/src/testdir/test50.ok
deleted file mode 100644
index 91ef1d6604..0000000000
--- a/src/testdir/test50.ok
+++ /dev/null
@@ -1,14 +0,0 @@
-
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
-OK
diff --git a/src/testdir/test51.in b/src/testdir/test51.in
deleted file mode 100644
index b4f45d1f75..0000000000
--- a/src/testdir/test51.in
+++ /dev/null
@@ -1,36 +0,0 @@
-Tests for ":highlight". vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:" basic test if ":highlight" doesn't crash
-:highlight
-:hi Search
-:" test setting colors.
-:" test clearing one color and all doesn't generate error or warning
-:hi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#00ff00 guibg=Cyan
-:hi Group2 term= cterm=
-:hi Group3 term=underline cterm=bold
-:redir! >test.out
-:hi NewGroup
-:hi Group2
-:hi Group3
-:hi clear NewGroup
-:hi NewGroup
-:hi Group2
-:hi Group2 NONE
-:hi Group2
-:hi clear
-:hi Group3
-:hi Crash term='asdf
-:redir END
-:" filter ctermfg and ctermbg, the numbers depend on the terminal
-:e test.out
-:%s/ctermfg=\d*/ctermfg=2/
-:%s/ctermbg=\d*/ctermbg=3/
-:" filter out possibly translated error message
-:%s/E475: [^:]*:/E475:/
-:" fix the fileformat
-:set ff&
-:wq!
-ENDTEST
-
diff --git a/src/testdir/test51.ok b/src/testdir/test51.ok
deleted file mode 100644
index be9ff7862c..0000000000
--- a/src/testdir/test51.ok
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-NewGroup xxx term=bold cterm=italic ctermfg=2 ctermbg=3
-
-Group2 xxx cleared
-
-Group3 xxx term=underline cterm=bold
-
-
-NewGroup xxx cleared
-
-Group2 xxx cleared
-
-
-Group2 xxx cleared
-
-
-Group3 xxx cleared
-
-E475: term='asdf
diff --git a/src/testdir/test52.in b/src/testdir/test52.in
deleted file mode 100644
index 206b65a1f9..0000000000
--- a/src/testdir/test52.in
+++ /dev/null
@@ -1,65 +0,0 @@
-Tests for reading and writing files with conversion for Win32.
-
-STARTTEST
-:so mbyte.vim
-:" make this a dummy test for non-Win32 systems
-:if !has("win32") | e! test.ok | wq! test.out | endif
-:"
-:" write tests:
-:" combine three values for 'encoding' with three values for 'fileencoding'
-:" also write files for read tests
-/^1
-:set encoding=utf-8
-:.w! ++enc=utf-8 test.out
-:.w ++enc=cp1251 >>test.out
-:.w ++enc=cp866 >>test.out
-:.w! ++enc=utf-8 Xutf8
-/^2
-:set encoding=cp1251
-:.w ++enc=utf-8 >>test.out
-:.w ++enc=cp1251 >>test.out
-:.w ++enc=cp866 >>test.out
-:.w! ++enc=cp1251 Xcp1251
-/^3
-:set encoding=cp866
-:.w ++enc=utf-8 >>test.out
-:.w ++enc=cp1251 >>test.out
-:.w ++enc=cp866 >>test.out
-:.w! ++enc=cp866 Xcp866
-:"
-:" read three 'fileencoding's with utf-8 'encoding'
-:set encoding=utf-8 fencs=utf-8,cp1251
-:e Xutf8
-:.w ++enc=utf-8 >>test.out
-:e Xcp1251
-:.w ++enc=utf-8 >>test.out
-:set fencs=utf-8,cp866
-:e Xcp866
-:.w ++enc=utf-8 >>test.out
-:"
-:" read three 'fileencoding's with cp1251 'encoding'
-:set encoding=utf-8 fencs=utf-8,cp1251
-:e Xutf8
-:.w ++enc=cp1251 >>test.out
-:e Xcp1251
-:.w ++enc=cp1251 >>test.out
-:set fencs=utf-8,cp866
-:e Xcp866
-:.w ++enc=cp1251 >>test.out
-:"
-:" read three 'fileencoding's with cp866 'encoding'
-:set encoding=cp866 fencs=utf-8,cp1251
-:e Xutf8
-:.w ++enc=cp866 >>test.out
-:e Xcp1251
-:.w ++enc=cp866 >>test.out
-:set fencs=utf-8,cp866
-:e Xcp866
-:.w ++enc=cp866 >>test.out
-:"
-:qa!
-ENDTEST
-
-1 utf-8 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-2 cp1251 text: Vim version 6.2. : 1970 Jan 01
-3 cp866 text: Vim version 6.2. ᫥ : 1970 Jan 01
diff --git a/src/testdir/test52.ok b/src/testdir/test52.ok
deleted file mode 100644
index 90b516508d..0000000000
--- a/src/testdir/test52.ok
+++ /dev/null
@@ -1,18 +0,0 @@
-1 utf-8 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-1 utf-8 text: Vim version 6.2. : 1970 Jan 01
-1 utf-8 text: Vim version 6.2. ᫥ : 1970 Jan 01
-2 cp1251 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-2 cp1251 text: Vim version 6.2. : 1970 Jan 01
-2 cp1251 text: Vim version 6.2. ᫥ : 1970 Jan 01
-3 cp866 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-3 cp866 text: Vim version 6.2. : 1970 Jan 01
-3 cp866 text: Vim version 6.2. ᫥ : 1970 Jan 01
-1 utf-8 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-2 cp1251 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-3 cp866 text: Для Vim version 6.2. Последнее изменение: 1970 Jan 01
-1 utf-8 text: Vim version 6.2. : 1970 Jan 01
-2 cp1251 text: Vim version 6.2. : 1970 Jan 01
-3 cp866 text: Vim version 6.2. : 1970 Jan 01
-1 utf-8 text: Vim version 6.2. ᫥ : 1970 Jan 01
-2 cp1251 text: Vim version 6.2. ᫥ : 1970 Jan 01
-3 cp866 text: Vim version 6.2. ᫥ : 1970 Jan 01
diff --git a/src/testdir/test53.in b/src/testdir/test53.in
deleted file mode 100644
index 011c9ae39d..0000000000
--- a/src/testdir/test53.in
+++ /dev/null
@@ -1,123 +0,0 @@
-Tests for string and html text objects. vim: set ft=vim :
-
-Note that the end-of-line moves the cursor to the next test line.
-
-Also test match() and matchstr()
-
-Also test the gn command and repeating it.
-
-STARTTEST
-:so small.vim
-/^start:/
-da"
-0va'a'rx
-02f`da`
-0fXdi"
-03f'vi'ry
-:set quoteescape=+*-
-di`
-$F"va"oha"i"rz
-:"
-/^<begin
-jfXdit
-0fXdit
-fXdat
-0fXdat
-:"
-:put =matchstr(\"abcd\", \".\", 0, 2) " b
-:put =matchstr(\"abcd\", \"..\", 0, 2) " bc
-:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)
-:put =matchstr(\"abcd\", \".\", 0, -1) " a
-:put =match(\"abcd\", \".\", 0, 5) " -1
-:put =match(\"abcd\", \".\", 0, -1) " 0
-:put =match('abc', '.', 0, 1) " 0
-:put =match('abc', '.', 0, 2) " 1
-:put =match('abc', '.', 0, 3) " 2
-:put =match('abc', '.', 0, 4) " -1
-:put =match('abc', '.', 1, 1) " 1
-:put =match('abc', '.', 2, 1) " 2
-:put =match('abc', '.', 3, 1) " -1
-:put =match('abc', '$', 0, 1) " 3
-:put =match('abc', '$', 0, 2) " -1
-:put =match('abc', '$', 1, 1) " 3
-:put =match('abc', '$', 2, 1) " 3
-:put =match('abc', '$', 3, 1) " 3
-:put =match('abc', '$', 4, 1) " -1
-:put =match('abc', '\zs', 0, 1) " 0
-:put =match('abc', '\zs', 0, 2) " 1
-:put =match('abc', '\zs', 0, 3) " 2
-:put =match('abc', '\zs', 0, 4) " 3
-:put =match('abc', '\zs', 0, 5) " -1
-:put =match('abc', '\zs', 1, 1) " 1
-:put =match('abc', '\zs', 2, 1) " 2
-:put =match('abc', '\zs', 3, 1) " 3
-:put =match('abc', '\zs', 4, 1) " -1
-/^foobar
-gncsearchmatch/one\_s*two\_s
-:1
-gnd
-/[a]bcdx
-:1
-2gnd/join
-/$
-0gnd
-/\>\zs
-0gnd/^
-gnd$h/\zs
-gnd/[u]niquepattern/s
-vlgnd
-/mother
-:set selection=exclusive
-$cgNmongoose/i
-cgnj
-:" Make sure there is no other match y uppercase.
-/x59
-gggnd
-:" test repeating dgn
-/^Johnny
-ggdgn.
-:" test repeating gUgn
-/^Depp
-gggUgn.
-:/^start:/,/^end:/wq! test.out
-ENDTEST
-
-start: "wo\"rd\\" foo
-'foo' 'bar' 'piep'
-bla bla `quote` blah
-out " in "noXno"
-"'" 'blah' rep 'buh'
-bla `s*`d-`+++`l**` b`la
-voo "nah" sdf " asdf" sdf " sdf" sd
-
-<begin>
--<b>asdf<i>Xasdf</i>asdf</b>-
--<b>asdX<i>a<i />sdf</i>asdf</b>-
--<b>asdf<i>Xasdf</i>asdf</b>-
--<b>asdX<i>as<b />df</i>asdf</b>-
-</begin>
-SEARCH:
-foobar
-one
-two
-abcdx | abcdx | abcdx
-join
-lines
-zero width pattern
-delete first and last chars
-uniquepattern uniquepattern
-my very excellent mother just served us nachos
-for (i=0; i<=10; i++)
-Y
-text
-Y
---1
-Johnny
---2
-Johnny
---3
-Depp
---4
-Depp
---5
-end:
diff --git a/src/testdir/test53.ok b/src/testdir/test53.ok
deleted file mode 100644
index d7ffa6bc51..0000000000
--- a/src/testdir/test53.ok
+++ /dev/null
@@ -1,64 +0,0 @@
-start: foo
-xxxxxxxxxxxx'piep'
-bla bla blah
-out " in ""
-"'" 'blah'yyyyy'buh'
-bla `` b`la
-voo "zzzzzzzzzzzzzzzzzzzzzzzzzzzzsd
-
-<begin>
--<b>asdf<i></i>asdf</b>-
--<b></b>-
--<b>asdfasdf</b>-
---
-</begin>
-b
-bc
-c
-a
--1
-0
-0
-1
-2
--1
-1
-2
--1
-3
--1
-3
-3
-3
--1
-0
-1
-2
-3
--1
-1
-2
-3
--1
-SEARCH:
-searchmatch
-abcdx | | abcdx
-join lines
-zerowidth pattern
-elete first and last char
- uniquepattern
-my very excellent mongoose just served us nachos
-for (j=0; i<=10; i++)
-
-text
-Y
---1
-
---2
-
---3
-DEPP
---4
-DEPP
---5
-end:
diff --git a/src/testdir/test54.in b/src/testdir/test54.in
deleted file mode 100644
index 9fc6537e08..0000000000
--- a/src/testdir/test54.in
+++ /dev/null
@@ -1,22 +0,0 @@
-Some tests for buffer-local autocommands
-
-STARTTEST
-:so small.vim
-:e xx
-:if has("vms")
-: !del test.out.*
-: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
-:else
-: !rm -f test.out
-: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
-:endif
-:e somefile " here, autocommand for xx shall write test.out
-: " but autocommand shall not apply to buffer named <buffer>
-:bwipe xx " here, autocommand shall be auto-deleted
-:e xx " nothing shall be written
-:e somefile " nothing shall be written
-:qa!
-ENDTEST
-
-start of test file xx
-end of test file xx
diff --git a/src/testdir/test54.ok b/src/testdir/test54.ok
deleted file mode 100644
index 0fd1dc915b..0000000000
--- a/src/testdir/test54.ok
+++ /dev/null
@@ -1 +0,0 @@
-buffer-local autommand in xx
diff --git a/src/testdir/test55.in b/src/testdir/test55.in
deleted file mode 100644
index 85a8063774..0000000000
--- a/src/testdir/test55.in
+++ /dev/null
@@ -1,404 +0,0 @@
-Tests for List and Dictionary types. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:fun Test(...)
-:lang C
-:" Creating List directly with different types
-:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
-:$put =string(l)
-:$put =string(l[-1])
-:$put =string(l[-4])
-:try
-: $put =string(l[-5])
-:catch
-: $put =v:exception[:14]
-:endtry
-:" List slices
-:$put =string(l[:])
-:$put =string(l[1:])
-:$put =string(l[:-2])
-:$put =string(l[0:8])
-:$put =string(l[8:-1])
-:"
-:" List identity
-:let ll = l
-:let lx = copy(l)
-:try
-: $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l isnot lx)
-:catch
-: $put =v:exception
-:endtry
-:"
-:" Creating Dictionary directly with different types
-:let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
-:$put =string(d) . d.1
-:$put =string(sort(keys(d)))
-:$put =string (values(d))
-:for [key, val] in items(d)
-: $put =key . ':' . string(val)
-: unlet key val
-:endfor
-:call extend (d, {3:33, 1:99})
-:call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")
-:try
-: call extend(d, {3:333,4:444}, "error")
-:catch
-: $put =v:exception[:15] . v:exception[-1:-1]
-:endtry
-:$put =string(d)
-:call filter(d, 'v:key =~ ''[ac391]''')
-:$put =string(d)
-:"
-:" Dictionary identity
-:let dd = d
-:let dx = copy(d)
-:try
-: $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d isnot dx)
-:catch
-: $put =v:exception
-:endtry
-:"
-:" Changing var type should fail
-:try
-: let d = []
-:catch
-: $put =v:exception[:14] . v:exception[-1:-1]
-:endtry
-:try
-: let l = {}
-:catch
-: $put =v:exception[:14] . v:exception[-1:-1]
-:endtry
-:"
-:" removing items with :unlet
-:unlet l[2]
-:$put =string(l)
-:let l = range(8)
-:try
-:unlet l[:3]
-:unlet l[1:]
-:catch
-:$put =v:exception
-:endtry
-:$put =string(l)
-:"
-:unlet d.c
-:unlet d[-1]
-:$put =string(d)
-:"
-:" removing items out of range: silently skip items that don't exist
-let l = [0, 1, 2, 3]
-:unlet l[2:1]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[2:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[2:3]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[2:4]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[2:5]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-1:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-2:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-3:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-4:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-5:2]
-:$put =string(l)
-let l = [0, 1, 2, 3]
-:unlet l[-6:2]
-:$put =string(l)
-:"
-:" assignment to a list
-:let l = [0, 1, 2, 3]
-:let [va, vb] = l[2:3]
-:$put =va
-:$put =vb
-:try
-: let [va, vb] = l
-:catch
-: $put =v:exception[:14]
-:endtry
-:try
-: let [va, vb] = l[1:1]
-:catch
-: $put =v:exception[:14]
-:endtry
-:"
-:" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)
-:let d = {}
-:for i in range(1500)
-: let d[i] = 3000 - i
-:endfor
-:$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]
-:try
-: let n = d[1500]
-:catch
-: $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')
-:endtry
-:" lookup each items
-:for i in range(1500)
-: if d[i] != 3000 - i
-: $put =d[i]
-: endif
-:endfor
-: let i += 1
-:" delete even items
-:while i >= 2
-: let i -= 2
-: unlet d[i]
-:endwhile
-:$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]
-:" delete odd items, checking value, one intentionally wrong
-:let d[33] = 999
-:let i = 1
-:while i < 1500
-: if d[i] != 3000 - i
-: $put =i . '=' . d[i]
-: else
-: unlet d[i]
-: endif
-: let i += 2
-:endwhile
-:$put =string(d) " must be almost empty now
-:unlet d
-:"
-:" Dictionary function
-:let dict = {}
-:func dict.func(a) dict
-: $put =a:a . len(self.data)
-:endfunc
-:let dict.data = [1,2,3]
-:call dict.func("len: ")
-:let x = dict.func("again: ")
-:try
-: let Fn = dict.func
-: call Fn('xxx')
-:catch
-: $put =v:exception[:15]
-:endtry
-:"
-:" Function in script-local List or Dict
-:let g:dict = {}
-:function g:dict.func() dict
-: $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')
-:endfunc
-:let g:dict.foo = ['-', 2, 3]
-:call insert(g:dict.foo, function('strlen'))
-:call g:dict.func()
-:"
-:" Nasty: remove func from Dict that's being called (works)
-:let d = {1:1}
-:func d.func(a)
-: return "a:". a:a
-:endfunc
-:$put =d.func(string(remove(d, 'func')))
-:"
-:" Nasty: deepcopy() dict that refers to itself (fails when noref used)
-:let d = {1:1, 2:2}
-:let l = [4, d, 6]
-:let d[3] = l
-:let dc = deepcopy(d)
-:try
-: let dc = deepcopy(d, 1)
-:catch
-: $put =v:exception[:14]
-:endtry
-:let l2 = [0, l, l, 3]
-:let l[1] = l2
-:let l3 = deepcopy(l2)
-:$put ='same list: ' . (l3[1] is l3[2])
-:"
-:" Locked variables
-:for depth in range(5)
-: $put ='depth is ' . depth
-: for u in range(3)
-: unlet l
-: let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]
-: exe "lockvar " . depth . " l"
-: if u == 1
-: exe "unlockvar l"
-: elseif u == 2
-: exe "unlockvar " . depth . " l"
-: endif
-: let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]")
-: $put =ps
-: let ps = ''
-: try
-: let l[1][1][0] = 99
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l[1][1] = [99]
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l[1] = [99]
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l[2]['6'][7] = 99
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l[2][6] = {99: 99}
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l[2] = {99: 99}
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: try
-: let l = [99]
-: let ps .= 'p'
-: catch
-: let ps .= 'F'
-: endtry
-: $put =ps
-: endfor
-:endfor
-:" :lockvar/islocked() triggering script autoloading
-:set rtp+=./sautest
-:lockvar g:footest#x
-:unlockvar g:footest#x
-:$put ='locked g:footest#x:'.islocked('g:footest#x')
-:$put ='exists g:footest#x:'.exists('g:footest#x')
-:$put ='g:footest#x: '.g:footest#x
-:"
-:" a:000 function argument
-:" first the tests that should fail
-:try
-: let a:000 = [1, 2]
-:catch
-: $put ='caught a:000'
-:endtry
-:try
-: let a:000[0] = 9
-:catch
-: $put ='caught a:000[0]'
-:endtry
-:try
-: let a:000[2] = [9, 10]
-:catch
-: $put ='caught a:000[2]'
-:endtry
-:try
-: let a:000[3] = {9: 10}
-:catch
-: $put ='caught a:000[3]'
-:endtry
-:" now the tests that should pass
-:try
-: let a:000[2][1] = 9
-: call extend(a:000[2], [5, 6])
-: let a:000[3][5] = 8
-: let a:000[3]['a'] = 12
-: $put =string(a:000)
-:catch
-: $put ='caught ' . v:exception
-:endtry
-:"
-:" reverse(), sort(), uniq()
-:let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5]
-:$put =string(uniq(copy(l)))
-:$put =string(reverse(l))
-:$put =string(reverse(reverse(l)))
-:$put =string(sort(l))
-:$put =string(reverse(sort(l)))
-:$put =string(sort(reverse(sort(l))))
-:$put =string(uniq(sort(l)))
-:"
-:" splitting a string to a List
-:$put =string(split(' aa bb '))
-:$put =string(split(' aa bb ', '\W\+', 0))
-:$put =string(split(' aa bb ', '\W\+', 1))
-:$put =string(split(' aa bb ', '\W', 1))
-:$put =string(split(':aa::bb:', ':', 0))
-:$put =string(split(':aa::bb:', ':', 1))
-:$put =string(split('aa,,bb, cc,', ',\s*', 1))
-:$put =string(split('abc', '\zs'))
-:$put =string(split('abc', '\zs', 1))
-:"
-:" compare recursively linked list and dict
-:let l = [1, 2, 3, 4]
-:let d = {'1': 1, '2': l, '3': 3}
-:let l[1] = d
-:$put =(l == l)
-:$put =(d == d)
-:$put =(l != deepcopy(l))
-:$put =(d != deepcopy(d))
-:"
-:" compare complex recursively linked list and dict
-:let l = []
-:call add(l, l)
-:let dict4 = {"l": l}
-:call add(dict4.l, dict4)
-:let lcopy = deepcopy(l)
-:let dict4copy = deepcopy(dict4)
-:$put =(l == lcopy)
-:$put =(dict4 == dict4copy)
-:"
-:" Pass the same List to extend()
-:let l = [1, 2, 3, 4, 5]
-:call extend(l, l)
-:$put =string(l)
-:"
-:" Pass the same Dict to extend()
-:let d = { 'a': {'b': 'B'}}
-:call extend(d, d)
-:$put =string(d)
-:"
-:" Pass the same Dict to extend() with "error"
-:try
-: call extend(d, d, "error")
-:catch
-: $put =v:exception[:15] . v:exception[-1:-1]
-:endtry
-:$put =string(d)
-:endfun
-:"
-:call Test(1, 2, [3, 4], {5: 6}) " This may take a while
-:"
-:delfunc Test
-:unlet dict
-:call garbagecollect(1)
-:"
-:" test for patch 7.3.637
-:let a = 'No error caught'
-:try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
-o=a :"
-:lang C
-:redir => a
-:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
-:redir END
-o=a :"
-:"
-:/^start:/,$wq! test.out
-ENDTEST
-
-start:
diff --git a/src/testdir/test55.ok b/src/testdir/test55.ok
deleted file mode 100644
index be476e8e93..0000000000
--- a/src/testdir/test55.ok
+++ /dev/null
@@ -1,128 +0,0 @@
-start:
-[1, 'as''d', [1, 2, function('strlen')], {'a': 1}]
-{'a': 1}
-1
-Vim(put):E684:
-[1, 'as''d', [1, 2, function('strlen')], {'a': 1}]
-['as''d', [1, 2, function('strlen')], {'a': 1}]
-[1, 'as''d', [1, 2, function('strlen')]]
-[1, 'as''d', [1, 2, function('strlen')], {'a': 1}]
-[]
-101101
-{'1': 'asd', 'b': [1, 2, function('strlen')], '-1': {'a': 1}}asd
-['-1', '1', 'b']
-['asd', [1, 2, function('strlen')], {'a': 1}]
-1:'asd'
-b:[1, 2, function('strlen')]
--1:{'a': 1}
-Vim(call):E737: 3
-{'c': 'ccc', '1': 99, 'b': [1, 2, function('strlen')], '3': 33, '-1': {'a': 1}}
-{'c': 'ccc', '1': 99, '3': 33, '-1': {'a': 1}}
-101101
-Vim(let):E706: d
-Vim(let):E706: l
-[1, 'as''d', {'a': 1}]
-[4]
-{'1': 99, '3': 33}
-[0, 1, 2, 3]
-[0, 1, 3]
-[0, 1]
-[0, 1]
-[0, 1]
-[0, 1, 2, 3]
-[0, 1, 3]
-[0, 3]
-[3]
-[3]
-[3]
-2
-3
-Vim(let):E687:
-Vim(let):E688:
-3000 2900 2001 1600 1501
-Vim(let):E716: 1500
-NONE 2999
-33=999
-{'33': 999}
-len: 3
-again: 3
-Vim(call):E725:
-g:dict.func-4
-a:function('3')
-Vim(let):E698:
-same list: 1
-depth is 0
-0000-000
-ppppppp
-0000-000
-ppppppp
-0000-000
-ppppppp
-depth is 1
-1000-000
-ppppppF
-0000-000
-ppppppp
-0000-000
-ppppppp
-depth is 2
-1100-100
-ppFppFF
-0000-000
-ppppppp
-0000-000
-ppppppp
-depth is 3
-1110-110
-pFFpFFF
-0010-010
-pFppFpp
-0000-000
-ppppppp
-depth is 4
-1111-111
-FFFFFFF
-0011-011
-FFpFFpp
-0000-000
-ppppppp
-locked g:footest#x:-1
-exists g:footest#x:0
-g:footest#x: 1
-caught a:000
-caught a:000[0]
-caught a:000[2]
-caught a:000[3]
-[1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}]
-['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2], 'x8', [0, 1, 2], 1.5]
-[1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0']
-[1.5, [0, 1, 2], 'x8', [0, 1, 2], 'foo', 'foo6', 'foo', 4, 'xaaa', 2, 2, 'A11', '-0']
-['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]]
-[[0, 1, 2], [0, 1, 2], 4, 2, 2, 1.5, 'xaaa', 'x8', 'foo6', 'foo', 'foo', 'A11', '-0']
-['-0', 'A11', 'foo', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 2, 4, [0, 1, 2], [0, 1, 2]]
-['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 1.5, 2, 4, [0, 1, 2]]
-['aa', 'bb']
-['aa', 'bb']
-['', 'aa', 'bb', '']
-['', '', 'aa', '', 'bb', '', '']
-['aa', '', 'bb']
-['', 'aa', '', 'bb', '']
-['aa', '', 'bb', 'cc', '']
-['a', 'b', 'c']
-['', 'a', '', 'b', '', 'c', '']
-1
-1
-0
-0
-1
-1
-[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
-{'a': {'b': 'B'}}
-Vim(call):E737: a
-{'a': {'b': 'B'}}
-Vim(foldopen):E490:
-
-
-Error detected while processing :
-E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
-
diff --git a/src/testdir/test56.in b/src/testdir/test56.in
deleted file mode 100644
index 311a6004ca..0000000000
--- a/src/testdir/test56.in
+++ /dev/null
@@ -1,21 +0,0 @@
-Test for script-local function. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:"
-:set nocp viminfo+=nviminfo
-:/^start:/+1,/^end:/-1w! Xtest.vim
-:source Xtest.vim
-_x
-:$-1,$wq! test.out
-ENDTEST
-
-start:
-fun <SID>DoLast()
- call append(line('$'), "last line")
-endfun
-fun s:DoNothing()
- call append(line('$'), "nothing line")
-endfun
-nnoremap <buffer> _x :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
-end:
diff --git a/src/testdir/test56.ok b/src/testdir/test56.ok
deleted file mode 100644
index f2b0d33c8b..0000000000
--- a/src/testdir/test56.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-nothing line
-last line
diff --git a/src/testdir/test57.in b/src/testdir/test57.in
deleted file mode 100644
index 8d972e4a68..0000000000
--- a/src/testdir/test57.in
+++ /dev/null
@@ -1,500 +0,0 @@
-Tests for :sort command. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:"
-:/^t01:/+1,/^t02/-1sort
-:/^t02:/+1,/^t03/-1sort n
-:/^t03:/+1,/^t04/-1sort x
-:/^t04:/+1,/^t05/-1sort u
-:/^t05:/+1,/^t06/-1sort!
-:/^t06:/+1,/^t07/-1sort! n
-:/^t07:/+1,/^t08/-1sort! u
-:/^t08:/+1,/^t09/-1sort o
-:/^t09:/+1,/^t10/-1sort! x
-:/^t10:/+1,/^t11/-1sort/./
-:/^t11:/+1,/^t12/-1sort/../
-:/^t12:/+1,/^t13/-1sort/../u
-:/^t13:/+1,/^t14/-1sort/./n
-:/^t14:/+1,/^t15/-1sort/./r
-:/^t15:/+1,/^t16/-1sort/../r
-:/^t16:/+1,/^t17/-1sort/./rn
-:/^t17:/+1,/^t18/-1sort/\d/
-:/^t18:/+1,/^t19/-1sort/\d/r
-:/^t19:/+1,/^t20/-1sort/\d/n
-:/^t20:/+1,/^t21/-1sort/\d/rn
-:/^t21:/+1,/^t22/-1sort/\d\d/
-:/^t22:/+1,/^t23/-1sort/\d\d/n
-:/^t23:/+1,/^t24/-1sort/\d\d/x
-:/^t24:/+1,/^t25/-1sort/\d\d/r
-:/^t25:/+1,/^t26/-1sort/\d\d/rn
-:/^t26:/+1,/^t27/-1sort/\d\d/rx
-:/^t27:/+1,/^t28/-1sort no
-:/^t01:/,$wq! test.out
-ENDTEST
-
-t01: alphebetical
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t02: numeric
-abc
-ab
-a321
-a123
-a122
-a
-x-22
-b321
-b123
-
-c123d
--24
- 123b
-c321d
-0
-b322b
-b321
-b321b
-
-
-t03: hexadecimal
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t04: alpha, unique
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t05: alpha, reverse
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t06: numeric, reverse
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t07: unique, reverse
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t08: octal
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t09: reverse, hexadecimal
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t10: alpha, skip first character
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t11: alpha, skip first 2 characters
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t12: alpha, unique, skip first 2 characters
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t13: numeric, skip first character
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t14: alpha, sort on first character
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t15: alpha, sort on first 2 characters
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t16: numeric, sort on first character
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t17: alpha, skip past first digit
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t18: alpha, sort on first digit
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t19: numeric, skip past first digit
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t20: numeric, sort on first digit
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t21: alpha, skip past first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t22: numeric, skip past first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t23: hexadecimal, skip past first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t24: alpha, sort on first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t25: numeric, sort on first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t26: hexadecimal, sort on first 2 digits
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t27: wrong arguments
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t28: done
-
diff --git a/src/testdir/test57.ok b/src/testdir/test57.ok
deleted file mode 100644
index aa3d373183..0000000000
--- a/src/testdir/test57.ok
+++ /dev/null
@@ -1,459 +0,0 @@
-t01: alphebetical
-
-
- 123b
-a
-a122
-a123
-a321
-ab
-abc
-b123
-b321
-b321
-b321b
-b322b
-c123d
-c321d
-t02: numeric
-abc
-ab
-a
-
-
-
--24
-x-22
-0
-a122
-a123
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b321
-b321b
-b322b
-t03: hexadecimal
-
-
-a
-ab
-abc
- 123b
-a122
-a123
-a321
-b123
-b321
-b321
-b321b
-b322b
-c123d
-c321d
-t04: alpha, unique
-
- 123b
-a
-a122
-a123
-a321
-ab
-abc
-b123
-b321
-b321b
-b322b
-c123d
-c321d
-t05: alpha, reverse
-c321d
-c123d
-b322b
-b321b
-b321
-b321
-b123
-abc
-ab
-a321
-a123
-a122
-a
- 123b
-
-
-t06: numeric, reverse
-b322b
-b321b
-b321
-c321d
-b321
-a321
- 123b
-c123d
-b123
-a123
-a122
-
-
-a
-ab
-abc
-t07: unique, reverse
-c321d
-c123d
-b322b
-b321b
-b321
-b123
-abc
-ab
-a321
-a123
-a122
-a
- 123b
-
-t08: octal
-abc
-ab
-a
-
-
-a122
-a123
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b321
-b321b
-b322b
-t09: reverse, hexadecimal
-c321d
-c123d
-b322b
-b321b
-b321
-b321
-b123
-a321
-a123
-a122
- 123b
-abc
-ab
-a
-
-
-t10: alpha, skip first character
-a
-
-
-a122
-a123
-b123
- 123b
-c123d
-a321
-b321
-b321
-b321b
-c321d
-b322b
-ab
-abc
-t11: alpha, skip first 2 characters
-ab
-a
-
-
-a321
-b321
-b321
-b321b
-c321d
-a122
-b322b
-a123
-b123
- 123b
-c123d
-abc
-t12: alpha, unique, skip first 2 characters
-ab
-a
-
-a321
-b321
-b321b
-c321d
-a122
-b322b
-a123
-b123
- 123b
-c123d
-abc
-t13: numeric, skip first character
-abc
-ab
-a
-
-
-a122
-a123
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b321
-b321b
-b322b
-t14: alpha, sort on first character
-
-
- 123b
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-b322b
-b321
-b321b
-c123d
-c321d
-t15: alpha, sort on first 2 characters
-a
-
-
- 123b
-a123
-a122
-a321
-abc
-ab
-b123
-b321
-b322b
-b321
-b321b
-c123d
-c321d
-t16: numeric, sort on first character
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t17: alpha, skip past first digit
-abc
-ab
-a
-
-
-a321
-b321
-b321
-b321b
-c321d
-a122
-b322b
-a123
-b123
- 123b
-c123d
-t18: alpha, sort on first digit
-abc
-ab
-a
-
-
-a123
-a122
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b322b
-b321
-b321b
-t19: numeric, skip past first digit
-abc
-ab
-a
-
-
-a321
-b321
-c321d
-b321
-b321b
-a122
-b322b
-a123
-b123
-c123d
- 123b
-t20: numeric, sort on first digit
-abc
-ab
-a
-
-
-a123
-a122
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b322b
-b321
-b321b
-t21: alpha, skip past first 2 digits
-abc
-ab
-a
-
-
-a321
-b321
-b321
-b321b
-c321d
-a122
-b322b
-a123
-b123
- 123b
-c123d
-t22: numeric, skip past first 2 digits
-abc
-ab
-a
-
-
-a321
-b321
-c321d
-b321
-b321b
-a122
-b322b
-a123
-b123
-c123d
- 123b
-t23: hexadecimal, skip past first 2 digits
-abc
-ab
-a
-
-
-a321
-b321
-b321
-a122
-a123
-b123
-b321b
-c321d
-b322b
- 123b
-c123d
-t24: alpha, sort on first 2 digits
-abc
-ab
-a
-
-
-a123
-a122
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b322b
-b321
-b321b
-t25: numeric, sort on first 2 digits
-abc
-ab
-a
-
-
-a123
-a122
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b322b
-b321
-b321b
-t26: hexadecimal, sort on first 2 digits
-abc
-ab
-a
-
-
-a123
-a122
-b123
-c123d
- 123b
-a321
-b321
-c321d
-b322b
-b321
-b321b
-t27: wrong arguments
-abc
-ab
-a
-a321
-a123
-a122
-b321
-b123
-c123d
- 123b
-c321d
-b322b
-b321
-b321b
-
-
-t28: done
-
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
deleted file mode 100644
index cef1cfa1ba..0000000000
--- a/src/testdir/test58.in
+++ /dev/null
@@ -1,639 +0,0 @@
-Tests for spell checking. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:"
-:" Don't want to depend on the locale from the environment
-:set enc=latin1
-:e!
-:"
-:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
-:set maxmem=512 spell
-iasdz=:"
-:"
-:" Function to test .aff/.dic with list of good and bad words.
-:func TestOne(aff, dic)
- set spellfile=
- $put =''
- $put ='test '. a:aff . '-' . a:dic
- " Generate a .spl file from a .dic and .aff file.
- exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
- exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
- mkspell! Xtest Xtest
- " use that spell file
- set spl=Xtest.latin1.spl spell
- " list all valid words
- spelldump
- %yank
- quit
- $put
- $put ='-------'
- " find all bad words and suggestions for them
- exe '1;/^' . a:aff . 'good:'
- normal 0f:]s
- let prevbad = ''
- while 1
- let [bad, a] = spellbadword()
- if bad == '' || bad == prevbad || bad == 'badend'
- break
- endif
- let prevbad = bad
- let lst = spellsuggest(bad, 3)
- normal mm
- $put =bad
- $put =string(lst)
- normal `m]s
- endwhile
-endfunc
-:"
-:call TestOne('1', '1')
-:$put =soundfold('goobledygoook')
-:$put =soundfold('koprnven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:"
-:" and now with SAL instead of SOFO items; test automatic reloading
-gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
-:mkspell! Xtest Xtest
-:$put =soundfold('goobledygoook')
-:$put =soundfold('koprnven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:" also use an addition file
-gg:/^addstart/+1,/^addend/-1w! Xtest.latin1.add
-:mkspell! Xtest.latin1.add.spl Xtest.latin1.add
-:set spellfile=Xtest.latin1.add
-/^test2:
-]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_us.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_gb.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_nz.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_ca.latin1.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:unlet str a
-:"
-:" Postponed prefixes
-:call TestOne('2', '1')
-:"
-:" Compound words
-:call TestOne('3', '3')
-:call TestOne('4', '4')
-:call TestOne('5', '5')
-:call TestOne('6', '6')
-:call TestOne('7', '7')
-:"
-:" NOSLITSUGS
-:call TestOne('8', '8')
-:"
-:" clean up for valgrind
-:delfunc TestOne
-:set spl= enc=latin1
-:"
-gg:/^test output:/,$wq! test.out
-ENDTEST
-
-1affstart
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL
-LOW
-UPP
-
-SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ޿
-SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-1affend
-
-1good: wrong OK puts. Test the end
-bad: inputs comment ok Ok. test dl end the
-badend
-
-1dicstart
-123456
-test/NO
-# comment
-wrong
-Comment
-OK
-uk
-put/ISO
-the end
-deol
-dr
-1dicend
-
-affstart_sal
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL
-LOW
-UPP
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-
-SAL AH(AEIOUY)-^ *H
-SAL AR(AEIOUY)-^ *R
-SAL A(HR)^ *
-SAL A^ *
-SAL AH(AEIOUY)- H
-SAL AR(AEIOUY)- R
-SAL A(HR) _
-SAL ^ *
-SAL ^ *
-SAL BB- _
-SAL B B
-SAL CQ- _
-SAL CIA X
-SAL CH X
-SAL C(EIY)- S
-SAL CK K
-SAL COUGH^ KF
-SAL CC< C
-SAL C K
-SAL DG(EIY) K
-SAL DD- _
-SAL D T
-SAL < E
-SAL EH(AEIOUY)-^ *H
-SAL ER(AEIOUY)-^ *R
-SAL E(HR)^ *
-SAL ENOUGH^$ *NF
-SAL E^ *
-SAL EH(AEIOUY)- H
-SAL ER(AEIOUY)- R
-SAL E(HR) _
-SAL FF- _
-SAL F F
-SAL GN^ N
-SAL GN$ N
-SAL GNS$ NS
-SAL GNED$ N
-SAL GH(AEIOUY)- K
-SAL GH _
-SAL GG9 K
-SAL G K
-SAL H H
-SAL IH(AEIOUY)-^ *H
-SAL IR(AEIOUY)-^ *R
-SAL I(HR)^ *
-SAL I^ *
-SAL ING6 N
-SAL IH(AEIOUY)- H
-SAL IR(AEIOUY)- R
-SAL I(HR) _
-SAL J K
-SAL KN^ N
-SAL KK- _
-SAL K K
-SAL LAUGH^ LF
-SAL LL- _
-SAL L L
-SAL MB$ M
-SAL MM M
-SAL M M
-SAL NN- _
-SAL N N
-SAL OH(AEIOUY)-^ *H
-SAL OR(AEIOUY)-^ *R
-SAL O(HR)^ *
-SAL O^ *
-SAL OH(AEIOUY)- H
-SAL OR(AEIOUY)- R
-SAL O(HR) _
-SAL PH F
-SAL PN^ N
-SAL PP- _
-SAL P P
-SAL Q K
-SAL RH^ R
-SAL ROUGH^ RF
-SAL RR- _
-SAL R R
-SAL SCH(EOU)- SK
-SAL SC(IEY)- S
-SAL SH X
-SAL SI(AO)- X
-SAL SS- _
-SAL S S
-SAL TI(AO)- X
-SAL TH @
-SAL TCH-- _
-SAL TOUGH^ TF
-SAL TT- _
-SAL T T
-SAL UH(AEIOUY)-^ *H
-SAL UR(AEIOUY)-^ *R
-SAL U(HR)^ *
-SAL U^ *
-SAL UH(AEIOUY)- H
-SAL UR(AEIOUY)- R
-SAL U(HR) _
-SAL V^ W
-SAL V F
-SAL WR^ R
-SAL WH^ W
-SAL W(AEIOU)- W
-SAL X^ S
-SAL X KS
-SAL Y(AEIOU)- Y
-SAL ZZ- _
-SAL Z S
-affend_sal
-
-2affstart
-SET ISO8859-1
-
-FOL
-LOW
-UPP
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out [a-z]
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-2affend
-
-2good: puts
-bad: inputs comment ok Ok end the. test dl
-badend
-
-addstart
-/regions=usgbnz
-elequint/2
-elekwint/3
-addend
-
-test2:
-elequint test elekwint test elekwent asdf
-
-Test rules for compounding.
-
-3affstart
-SET ISO8859-1
-
-COMPOUNDMIN 3
-COMPOUNDRULE m*
-NEEDCOMPOUND x
-3affend
-
-3dicstart
-1234
-foo/m
-bar/mx
-m/m
-la/mx
-3dicend
-
-3good: foo m foobar foofoobar barfoo barbarfoo
-bad: bar la foom barm mfoo mbar mm lala mla lam foola labar
-badend
-
-
-Tests for compounding.
-
-4affstart
-SET ISO8859-1
-
-FOL
-LOW
-UPP
-
-COMPOUNDRULE m+
-COMPOUNDRULE sm*e
-COMPOUNDRULE sm+
-COMPOUNDMIN 3
-COMPOUNDWORDMAX 3
-COMPOUNDFORBIDFLAG t
-
-COMPOUNDSYLMAX 5
-SYLLABLE aeiouy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-
-NEEDAFFIX x
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-SFX q N 1
-SFX q 0 -ok .
-
-SFX a Y 2
-SFX a 0 s .
-SFX a 0 ize/t .
-
-PFX p N 1
-PFX p 0 pre .
-
-PFX P N 1
-PFX P 0 nou .
-4affend
-
-4dicstart
-1234
-word/mP
-util/am
-pro/xq
-tomato/m
-bork/mp
-start/s
-end/e
-4dicend
-
-4good: word util bork prebork start end wordutil wordutils pro-ok
- bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
- tomato tomatotomato startend startword startwordword startwordend
- startwordwordend startwordwordwordend prebork preborkbork
- preborkborkbork
- nouword
-bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
- endstart endend startstart wordend wordstart
- preborkprebork preborkpreborkbork
- startwordwordwordwordend borkpreborkpreborkbork
- utilsbork startnouword
-badend
-
-Test affix flags with two characters
-
-5affstart
-SET ISO8859-1
-
-FLAG long
-
-NEEDAFFIX !!
-
-COMPOUNDRULE ssmm*ee
-
-NEEDCOMPOUND xx
-COMPOUNDPERMITFLAG pp
-
-SFX 13 Y 1
-SFX 13 0 bork .
-
-SFX a1 Y 1
-SFX a1 0 a1 .
-
-SFX a Y 1
-SFX a 0 a .
-
-PFX zz Y 1
-PFX zz 0 pre/pp .
-
-PFX yy Y 1
-PFX yy 0 nou .
-5affend
-
-5dicstart
-1234
-foo/a1a!!
-bar/zz13ee
-start/ss
-end/eeyy
-middle/mmxx
-5dicend
-
-5good: fooa1 fooa bar prebar barbork prebarbork startprebar
- start end startend startmiddleend nouend
-bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
- startprobar startnouend
-badend
-
-6affstart
-SET ISO8859-1
-
-FLAG caplong
-
-NEEDAFFIX A!
-
-COMPOUNDRULE sMm*Ee
-
-NEEDCOMPOUND Xx
-
-COMPOUNDPERMITFLAG p
-
-SFX N3 Y 1
-SFX N3 0 bork .
-
-SFX A1 Y 1
-SFX A1 0 a1 .
-
-SFX A Y 1
-SFX A 0 a .
-
-PFX Zz Y 1
-PFX Zz 0 pre/p .
-6affend
-
-6dicstart
-1234
-mee/A1AA!
-bar/ZzN3Ee
-lead/s
-end/Ee
-middle/MmXx
-6dicend
-
-6good: meea1 meea bar prebar barbork prebarbork leadprebar
- lead end leadend leadmiddleend
-bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
- leadprobar
-badend
-
-7affstart
-SET ISO8859-1
-
-FLAG num
-
-NEEDAFFIX 9999
-
-COMPOUNDRULE 2,77*123
-
-NEEDCOMPOUND 1
-COMPOUNDPERMITFLAG 432
-
-SFX 61003 Y 1
-SFX 61003 0 meat .
-
-SFX 391 Y 1
-SFX 391 0 a1 .
-
-SFX 111 Y 1
-SFX 111 0 a .
-
-PFX 17 Y 1
-PFX 17 0 pre/432 .
-7affend
-
-7dicstart
-1234
-mee/391,111,9999
-bar/17,61003,123
-lead/2
-tail/123
-middle/77,1
-7dicend
-
-7good: meea1 meea bar prebar barmeat prebarmeat leadprebar
- lead tail leadtail leadmiddletail
-bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
- leadprobar
-badend
-
-Test NOSLITSUGS
-
-8affstart
-SET ISO8859-1
-
-NOSPLITSUGS
-8affend
-
-8dicstart
-1234
-foo
-bar
-faabar
-8dicend
-
-8good: foo bar faabar
-bad: foobar barfoo
-badend
-
-
-test output:
diff --git a/src/testdir/test58.ok b/src/testdir/test58.ok
deleted file mode 100644
index ce05c73322..0000000000
--- a/src/testdir/test58.ok
+++ /dev/null
@@ -1,283 +0,0 @@
-test output:
-
-test 1-1
-# file: Xtest.latin1.spl
-Comment
-deol
-dr
-input
-OK
-output
-outputs
-outtest
-put
-puts
-test
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment', 'outtest', 'the end']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-test
-['Test', 'testn', 'testen']
-dl
-['deol', 'dr', 'test']
-end
-['put', 'uk', 'test']
-the
-['put', 'uk', 'test']
-gebletegek
-kepereneven
-everles gesvets etele
-kbltykk
-kprnfn
-*fls kswts tl
-elekwent
-elequint
-elekwint
-elekwint
-elekwent
-elequint
-elekwent
-elequint
-elekwint
-
-test 2-1
-# file: Xtest.latin1.spl
-Comment
-deol
-dr
-OK
-put
-input
-output
-puts
-outputs
-test
-outtest
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-end
-['put', 'uk', 'deol']
-the
-['put', 'uk', 'test']
-test
-['Test', 'testn', 'testen']
-dl
-['deol', 'dr', 'test']
-
-test 3-3
-# file: Xtest.latin1.spl
-foo
-m
--------
-bad
-['foo', 'm']
-bar
-['barfoo', 'foobar', 'foo']
-la
-['m', 'foo']
-foom
-['foo m', 'foo', 'foofoo']
-barm
-['barfoo', 'm', 'barbar']
-mfoo
-['m foo', 'foo', 'foofoo']
-mbar
-['foobar', 'barbar', 'm']
-mm
-['m m', 'm']
-lala
-[]
-mla
-['m', 'm m']
-lam
-['m', 'm m']
-foola
-['foo', 'foobar', 'foofoo']
-labar
-['barbar', 'foobar']
-
-test 4-4
-# file: Xtest.latin1.spl
-bork
-prebork
-end
-pro-ok
-start
-tomato
-util
-utilize
-utils
-word
-nouword
--------
-bad
-['end', 'bork', 'word']
-wordutilize
-['word utilize', 'wordutils', 'wordutil']
-pro
-['bork', 'word', 'end']
-borkborkborkborkborkbork
-['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
-tomatotomatotomato
-['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
-endstart
-['end start', 'start']
-endend
-['end end', 'end']
-startstart
-['start start']
-wordend
-['word end', 'word', 'wordword']
-wordstart
-['word start', 'bork start']
-preborkprebork
-['prebork prebork', 'preborkbork', 'preborkborkbork']
-preborkpreborkbork
-['prebork preborkbork', 'preborkborkbork', 'preborkborkborkbork']
-startwordwordwordwordend
-['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
-borkpreborkpreborkbork
-['bork preborkpreborkbork', 'bork prebork preborkbork', 'bork preborkprebork bork']
-utilsbork
-['utilbork', 'utils bork', 'util bork']
-startnouword
-['start nouword', 'startword', 'startborkword']
-
-test 5-5
-# file: Xtest.latin1.spl
-bar
-barbork
-end
-fooa1
-fooa
-nouend
-prebar
-prebarbork
-start
--------
-bad
-['bar', 'end', 'fooa1']
-foo
-['fooa1', 'fooa', 'bar']
-fooa2
-['fooa1', 'fooa', 'bar']
-prabar
-['prebar', 'bar', 'bar bar']
-probarbirk
-['prebarbork']
-middle
-[]
-startmiddle
-['startmiddleend', 'startmiddlebar']
-middleend
-[]
-endstart
-['end start', 'start']
-startprobar
-['startprebar', 'start prebar', 'startbar']
-startnouend
-['start nouend', 'startend']
-
-test 6-6
-# file: Xtest.latin1.spl
-bar
-barbork
-end
-lead
-meea1
-meea
-prebar
-prebarbork
--------
-bad
-['bar', 'end', 'lead']
-mee
-['meea1', 'meea', 'bar']
-meea2
-['meea1', 'meea', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarbirk
-['prebarbork']
-middle
-[]
-leadmiddle
-['leadmiddleend', 'leadmiddlebar']
-middleend
-[]
-endlead
-['end lead', 'lead', 'end end']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
-
-test 7-7
-# file: Xtest.latin1.spl
-bar
-barmeat
-lead
-meea1
-meea
-prebar
-prebarmeat
-tail
--------
-bad
-['bar', 'lead', 'tail']
-mee
-['meea1', 'meea', 'bar']
-meea2
-['meea1', 'meea', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarmaat
-['prebarmeat']
-middle
-[]
-leadmiddle
-['leadmiddlebar']
-middletail
-[]
-taillead
-['tail lead', 'tail']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
-
-test 8-8
-# file: Xtest.latin1.spl
-bar
-faabar
-foo
--------
-bad
-['bar', 'foo']
-foobar
-['faabar', 'foo bar', 'bar']
-barfoo
-['bar foo', 'bar', 'foo']
diff --git a/src/testdir/test59.in b/src/testdir/test59.in
deleted file mode 100644
index dcdb62b283..0000000000
--- a/src/testdir/test59.in
+++ /dev/null
@@ -1,626 +0,0 @@
-Tests for spell checking with 'encoding' set to "utf-8". vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:so mbyte.vim
-:"
-:" Don't want to depend on the locale from the environment. The .aff and .dic
-:" text is in latin1, the test text is utf-8.
-:set enc=latin1
-:e!
-:set enc=utf-8
-:set fenc=
-:"
-:" Function to test .aff/.dic with list of good and bad words.
-:func TestOne(aff, dic)
- set spellfile=
- $put =''
- $put ='test '. a:aff . '-' . a:dic
- " Generate a .spl file from a .dic and .aff file.
- exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
- exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
- mkspell! Xtest Xtest
- " use that spell file
- set spl=Xtest.utf-8.spl spell
- " list all valid words
- spelldump
- %yank
- quit
- $put
- $put ='-------'
- " find all bad words and suggestions for them
- exe '1;/^' . a:aff . 'good:'
- normal 0f:]s
- let prevbad = ''
- while 1
- let [bad, a] = spellbadword()
- if bad == '' || bad == prevbad || bad == 'badend'
- break
- endif
- let prevbad = bad
- let lst = spellsuggest(bad, 3)
- normal mm
- $put =bad
- $put =string(lst)
- normal `m]s
- endwhile
-endfunc
-:"
-:call TestOne('1', '1')
-:$put =soundfold('goobledygoook')
-:$put =soundfold('kóopërÿnôven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:"
-:" and now with SAL instead of SOFO items; test automatic reloading
-gg:/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff
-:mkspell! Xtest Xtest
-:$put =soundfold('goobledygoook')
-:$put =soundfold('kóopërÿnôven')
-:$put =soundfold('oeverloos gezwets edale')
-:"
-:" also use an addition file
-gg:/^addstart/+1,/^addend/-1w! Xtest.utf-8.add
-:mkspell! Xtest.utf-8.add.spl Xtest.utf-8.add
-:set spellfile=Xtest.utf-8.add
-/^test2:
-]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_us.utf-8.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_gb.utf-8.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_nz.utf-8.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:set spl=Xtest_ca.utf-8.spl
-/^test2:
-]smm:let [str, a] = spellbadword()
-:$put =str
-`m]s:let [str, a] = spellbadword()
-:$put =str
-:unlet str a
-:"
-:" Postponed prefixes
-:call TestOne('2', '1')
-:"
-:" Compound words
-:call TestOne('3', '3')
-:call TestOne('4', '4')
-:call TestOne('5', '5')
-:call TestOne('6', '6')
-:call TestOne('7', '7')
-:"
-:" clean up for valgrind
-:delfunc TestOne
-:set spl= enc=latin1
-:"
-gg:/^test output:/,$wq! test.out
-ENDTEST
-
-1affstart
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL
-LOW
-UPP
-
-SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ޿
-SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeceeeeeeeedneeeeeeeeeeep?
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-#NOSPLITSUGS
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-1affend
-
-affstart_sal
-SET ISO8859-1
-TRY esianrtolcdugmphbyfvkwjkqxz-'ESIANRTOLCDUGMPHBYFVKWJKQXZ
-
-FOL
-LOW
-UPP
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-#NOSPLITSUGS
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out .
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-
-SAL AH(AEIOUY)-^ *H
-SAL AR(AEIOUY)-^ *R
-SAL A(HR)^ *
-SAL A^ *
-SAL AH(AEIOUY)- H
-SAL AR(AEIOUY)- R
-SAL A(HR) _
-SAL ^ *
-SAL ^ *
-SAL BB- _
-SAL B B
-SAL CQ- _
-SAL CIA X
-SAL CH X
-SAL C(EIY)- S
-SAL CK K
-SAL COUGH^ KF
-SAL CC< C
-SAL C K
-SAL DG(EIY) K
-SAL DD- _
-SAL D T
-SAL < E
-SAL EH(AEIOUY)-^ *H
-SAL ER(AEIOUY)-^ *R
-SAL E(HR)^ *
-SAL ENOUGH^$ *NF
-SAL E^ *
-SAL EH(AEIOUY)- H
-SAL ER(AEIOUY)- R
-SAL E(HR) _
-SAL FF- _
-SAL F F
-SAL GN^ N
-SAL GN$ N
-SAL GNS$ NS
-SAL GNED$ N
-SAL GH(AEIOUY)- K
-SAL GH _
-SAL GG9 K
-SAL G K
-SAL H H
-SAL IH(AEIOUY)-^ *H
-SAL IR(AEIOUY)-^ *R
-SAL I(HR)^ *
-SAL I^ *
-SAL ING6 N
-SAL IH(AEIOUY)- H
-SAL IR(AEIOUY)- R
-SAL I(HR) _
-SAL J K
-SAL KN^ N
-SAL KK- _
-SAL K K
-SAL LAUGH^ LF
-SAL LL- _
-SAL L L
-SAL MB$ M
-SAL MM M
-SAL M M
-SAL NN- _
-SAL N N
-SAL OH(AEIOUY)-^ *H
-SAL OR(AEIOUY)-^ *R
-SAL O(HR)^ *
-SAL O^ *
-SAL OH(AEIOUY)- H
-SAL OR(AEIOUY)- R
-SAL O(HR) _
-SAL PH F
-SAL PN^ N
-SAL PP- _
-SAL P P
-SAL Q K
-SAL RH^ R
-SAL ROUGH^ RF
-SAL RR- _
-SAL R R
-SAL SCH(EOU)- SK
-SAL SC(IEY)- S
-SAL SH X
-SAL SI(AO)- X
-SAL SS- _
-SAL S S
-SAL TI(AO)- X
-SAL TH @
-SAL TCH-- _
-SAL TOUGH^ TF
-SAL TT- _
-SAL T T
-SAL UH(AEIOUY)-^ *H
-SAL UR(AEIOUY)-^ *R
-SAL U(HR)^ *
-SAL U^ *
-SAL UH(AEIOUY)- H
-SAL UR(AEIOUY)- R
-SAL U(HR) _
-SAL V^ W
-SAL V F
-SAL WR^ R
-SAL WH^ W
-SAL W(AEIOU)- W
-SAL X^ S
-SAL X KS
-SAL Y(AEIOU)- Y
-SAL ZZ- _
-SAL Z S
-affend_sal
-
-2affstart
-SET ISO8859-1
-
-FOL
-LOW
-UPP
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-KEP =
-RAR ?
-BAD !
-
-#NOSPLITSUGS
-
-PFX I N 1
-PFX I 0 in .
-
-PFX O Y 1
-PFX O 0 out [a-z]
-
-SFX S Y 2
-SFX S 0 s [^s]
-SFX S 0 es s
-
-SFX N N 3
-SFX N 0 en [^n]
-SFX N 0 nen n
-SFX N 0 n .
-
-REP 3
-REP g ch
-REP ch g
-REP svp s.v.p.
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-2affend
-
-1dicstart
-123456
-test/NO
-# comment
-wrong
-Comment
-OK
-uk
-put/ISO
-the end
-deol
-dr
-1dicend
-
-addstart
-/regions=usgbnz
-elequint/2
-elekwint/3
-addend
-
-1good: wrong OK puts. Test the end
-bad: inputs comment ok Ok. test déôl end the
-badend
-
-2good: puts
-bad: inputs comment ok Ok end the. test déôl
-badend
-
-Test rules for compounding.
-
-3affstart
-SET ISO8859-1
-
-COMPOUNDMIN 3
-COMPOUNDRULE m*
-NEEDCOMPOUND x
-3affend
-
-3dicstart
-1234
-foo/m
-bar/mx
-m/m
-la/mx
-3dicend
-
-3good: foo mï foobar foofoobar barfoo barbarfoo
-bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar
-badend
-
-
-Tests for compounding.
-
-4affstart
-SET ISO8859-1
-
-FOL
-LOW
-UPP
-
-COMPOUNDRULE m+
-COMPOUNDRULE sm*e
-COMPOUNDRULE sm+
-COMPOUNDMIN 3
-COMPOUNDWORDMAX 3
-COMPOUNDFORBIDFLAG t
-
-COMPOUNDSYLMAX 5
-SYLLABLE aeiouy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui
-
-MAP 9
-MAP a
-MAP e
-MAP i
-MAP o
-MAP u
-MAP n
-MAP c
-MAP y
-MAP s
-
-NEEDAFFIX x
-
-PFXPOSTPONE
-
-MIDWORD '-
-
-SFX q N 1
-SFX q 0 -ok .
-
-SFX a Y 2
-SFX a 0 s .
-SFX a 0 ize/t .
-
-PFX p N 1
-PFX p 0 pre .
-
-PFX P N 1
-PFX P 0 nou .
-4affend
-
-4dicstart
-1234
-word/mP
-util/am
-pro/xq
-tomato/m
-bork/mp
-start/s
-end/e
-4dicend
-
-4good: word util bork prebork start end wordutil wordutils pro-ok
- bork borkbork borkborkbork borkborkborkbork borkborkborkborkbork
- tomato tomatotomato startend startword startwordword startwordend
- startwordwordend startwordwordwordend prebork preborkbork
- preborkborkbork
- nouword
-bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomato
- endstart endend startstart wordend wordstart
- preborkprebork preborkpreborkbork
- startwordwordwordwordend borkpreborkpreborkbork
- utilsbork startnouword
-badend
-
-test2:
-elequint test elekwint test elekwent asdf
-
-Test affix flags with two characters
-
-5affstart
-SET ISO8859-1
-
-FLAG long
-
-NEEDAFFIX !!
-
-COMPOUNDRULE ssmm*ee
-
-NEEDCOMPOUND xx
-COMPOUNDPERMITFLAG pp
-
-SFX 13 Y 1
-SFX 13 0 bork .
-
-SFX a1 Y 1
-SFX a1 0 a1 .
-
-SFX a Y 1
-SFX a 0 a .
-
-PFX zz Y 1
-PFX zz 0 pre/pp .
-
-PFX yy Y 1
-PFX yy 0 nou .
-5affend
-
-5dicstart
-1234
-foo/a1a!!
-bar/zz13ee
-start/ss
-end/eeyy
-middle/mmxx
-5dicend
-
-5good: fooa1 fooaé bar prebar barbork prebarbork startprebar
- start end startend startmiddleend nouend
-bad: foo fooa2 prabar probarbirk middle startmiddle middleend endstart
- startprobar startnouend
-badend
-
-6affstart
-SET ISO8859-1
-
-FLAG caplong
-
-NEEDAFFIX A!
-
-COMPOUNDRULE sMm*Ee
-
-NEEDCOMPOUND Xx
-
-COMPOUNDPERMITFLAG p
-
-SFX N3 Y 1
-SFX N3 0 bork .
-
-SFX A1 Y 1
-SFX A1 0 a1 .
-
-SFX A Y 1
-SFX A 0 a .
-
-PFX Zz Y 1
-PFX Zz 0 pre/p .
-6affend
-
-6dicstart
-1234
-mee/A1AA!
-bar/ZzN3Ee
-lead/s
-end/Ee
-middle/MmXx
-6dicend
-
-6good: meea1 meeaé bar prebar barbork prebarbork leadprebar
- lead end leadend leadmiddleend
-bad: mee meea2 prabar probarbirk middle leadmiddle middleend endlead
- leadprobar
-badend
-
-7affstart
-SET ISO8859-1
-
-FOL
-LOW
-UPP
-
-FLAG num
-
-NEEDAFFIX 9999
-
-COMPOUNDRULE 2,77*123
-
-NEEDCOMPOUND 1
-COMPOUNDPERMITFLAG 432
-
-SFX 61003 Y 1
-SFX 61003 0 meat .
-
-SFX 391 Y 1
-SFX 391 0 a1 .
-
-SFX 111 Y 1
-SFX 111 0 a .
-
-PFX 17 Y 1
-PFX 17 0 pre/432 .
-7affend
-
-7dicstart
-1234
-mee/391,111,9999
-bar/17,61003,123
-lead/2
-tail/123
-middle/77,1
-7dicend
-
-7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebar
- lead tail leadtail leadmiddletail
-bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead
- leadprobar
-badend
-
-test output:
diff --git a/src/testdir/test59.ok b/src/testdir/test59.ok
deleted file mode 100644
index 931cdd9654..0000000000
--- a/src/testdir/test59.ok
+++ /dev/null
@@ -1,270 +0,0 @@
-test output:
-
-test 1-1
-# file: Xtest.utf-8.spl
-Comment
-deol
-déôr
-input
-OK
-output
-outputs
-outtest
-put
-puts
-test
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment', 'outtest', 'the end']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-test
-['Test', 'testn', 'testen']
-déôl
-['deol', 'déôr', 'test']
-end
-['put', 'uk', 'test']
-the
-['put', 'uk', 'test']
-gebletegek
-kepereneven
-everles gesvets etele
-kbltykk
-kprnfn
-*fls kswts tl
-elekwent
-elequint
-elekwint
-elekwint
-elekwent
-elequint
-elekwent
-elequint
-elekwint
-
-test 2-1
-# file: Xtest.utf-8.spl
-Comment
-deol
-déôr
-OK
-put
-input
-output
-puts
-outputs
-test
-outtest
-testen
-testn
-the end
-uk
-wrong
--------
-bad
-['put', 'uk', 'OK']
-inputs
-['input', 'puts', 'outputs']
-comment
-['Comment']
-ok
-['OK', 'uk', 'put']
-Ok
-['OK', 'Uk', 'Put']
-end
-['put', 'uk', 'deol']
-the
-['put', 'uk', 'test']
-test
-['Test', 'testn', 'testen']
-déôl
-['deol', 'déôr', 'test']
-
-test 3-3
-# file: Xtest.utf-8.spl
-foo
-mï
--------
-bad
-['foo', 'mï']
-bar
-['barfoo', 'foobar', 'foo']
-la
-['mï', 'foo']
-foomï
-['foo mï', 'foo', 'foofoo']
-barmï
-['barfoo', 'mï', 'barbar']
-mïfoo
-['mï foo', 'foo', 'foofoo']
-mïbar
-['foobar', 'barbar', 'mï']
-mïmï
-['mï mï', 'mï']
-lala
-[]
-mïla
-['mï', 'mï mï']
-lamï
-['mï', 'mï mï']
-foola
-['foo', 'foobar', 'foofoo']
-labar
-['barbar', 'foobar']
-
-test 4-4
-# file: Xtest.utf-8.spl
-bork
-prebork
-end
-pro-ok
-start
-tomato
-util
-utilize
-utils
-word
-nouword
--------
-bad
-['end', 'bork', 'word']
-wordutilize
-['word utilize', 'wordutils', 'wordutil']
-pro
-['bork', 'word', 'end']
-borkborkborkborkborkbork
-['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
-tomatotomatotomato
-['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
-endstart
-['end start', 'start']
-endend
-['end end', 'end']
-startstart
-['start start']
-wordend
-['word end', 'word', 'wordword']
-wordstart
-['word start', 'bork start']
-preborkprebork
-['prebork prebork', 'preborkbork', 'preborkborkbork']
-preborkpreborkbork
-['prebork preborkbork', 'preborkborkbork', 'preborkborkborkbork']
-startwordwordwordwordend
-['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
-borkpreborkpreborkbork
-['bork preborkpreborkbork', 'bork prebork preborkbork', 'bork preborkprebork bork']
-utilsbork
-['utilbork', 'utils bork', 'util bork']
-startnouword
-['start nouword', 'startword', 'startborkword']
-
-test 5-5
-# file: Xtest.utf-8.spl
-bar
-barbork
-end
-fooa1
-fooaé
-nouend
-prebar
-prebarbork
-start
--------
-bad
-['bar', 'end', 'fooa1']
-foo
-['fooa1', 'fooaé', 'bar']
-fooa2
-['fooa1', 'fooaé', 'bar']
-prabar
-['prebar', 'bar', 'bar bar']
-probarbirk
-['prebarbork']
-middle
-[]
-startmiddle
-['startmiddleend', 'startmiddlebar']
-middleend
-[]
-endstart
-['end start', 'start']
-startprobar
-['startprebar', 'start prebar', 'startbar']
-startnouend
-['start nouend', 'startend']
-
-test 6-6
-# file: Xtest.utf-8.spl
-bar
-barbork
-end
-lead
-meea1
-meeaé
-prebar
-prebarbork
--------
-bad
-['bar', 'end', 'lead']
-mee
-['meea1', 'meeaé', 'bar']
-meea2
-['meea1', 'meeaé', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarbirk
-['prebarbork']
-middle
-[]
-leadmiddle
-['leadmiddleend', 'leadmiddlebar']
-middleend
-[]
-endlead
-['end lead', 'lead', 'end end']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
-
-test 7-7
-# file: Xtest.utf-8.spl
-bar
-barmeat
-lead
-meea1
-meeaé
-prebar
-prebarmeat
-tail
--------
-bad
-['bar', 'lead', 'tail']
-mee
-['meea1', 'meeaé', 'bar']
-meea2
-['meea1', 'meeaé', 'lead']
-prabar
-['prebar', 'bar', 'leadbar']
-probarmaat
-['prebarmeat']
-middle
-[]
-leadmiddle
-['leadmiddlebar']
-middletail
-[]
-taillead
-['tail lead', 'tail']
-leadprobar
-['leadprebar', 'lead prebar', 'leadbar']
diff --git a/src/testdir/test6.in b/src/testdir/test6.in
deleted file mode 100644
index 1ebbe2fa51..0000000000
--- a/src/testdir/test6.in
+++ /dev/null
@@ -1,24 +0,0 @@
-Test for autocommand that redefines the argument list, when doing ":all".
-
-STARTTEST
-:so small.vim
-:au BufReadPost Xxx2 next Xxx2 Xxx1
-/^start of
-A1:.,/end of/w! Xxx1 " write test file Xxx1
-$r2:.,/end of/w! Xxx2 " write test file Xxx2
-$r3:.,/end of/w! Xxx3 " write test file Xxx3
-:next! Xxx1 Xxx2 Xxx3 " redefine arglist; go to Xxx1
-:all " open window for all args
-:w! test.out " Write contents of Xxx1
-:w >>test.out " Append contents of last window (Xxx1)
-:rew " should now be in Xxx2
-:w >>test.out " Append contents of Xxx2
-:qa!
-ENDTEST
-
-start of test file Xxx
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test6.ok b/src/testdir/test6.ok
deleted file mode 100644
index b6b0c93e4e..0000000000
--- a/src/testdir/test6.ok
+++ /dev/null
@@ -1,18 +0,0 @@
-start of test file Xxx1
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
-start of test file Xxx1
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
-start of test file Xxx2
- this is a test
- this is a test
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test60.in b/src/testdir/test60.in
deleted file mode 100644
index 8835df9e0c..0000000000
--- a/src/testdir/test60.in
+++ /dev/null
@@ -1,610 +0,0 @@
-Tests for the exists() and has() functions. vim: set ft=vim ts=8 sw=2 :
-
-STARTTEST
-:so small.vim
-:function! RunTest(str, result)
- if exists(a:str) == a:result
- echo "OK"
- else
- echo "FAILED: Checking for " . a:str
- endif
-endfunction
-:function! TestExists()
- augroup myagroup
- autocmd! BufEnter *.my echo "myfile edited"
- autocmd! FuncUndefined UndefFun exec "fu UndefFun()\nendfu"
- augroup END
- set rtp+=./sautest
-
- let test_cases = []
-
- " valid autocmd group
- let test_cases += [['#myagroup', 1]]
- " valid autocmd group with garbage
- let test_cases += [['#myagroup+b', 0]]
- " Valid autocmd group and event
- let test_cases += [['#myagroup#BufEnter', 1]]
- " Valid autocmd group, event and pattern
- let test_cases += [['#myagroup#BufEnter#*.my', 1]]
- " Valid autocmd event
- let test_cases += [['#BufEnter', 1]]
- " Valid autocmd event and pattern
- let test_cases += [['#BufEnter#*.my', 1]]
- " Non-existing autocmd group or event
- let test_cases += [['#xyzagroup', 0]]
- " Non-existing autocmd group and valid autocmd event
- let test_cases += [['#xyzagroup#BufEnter', 0]]
- " Valid autocmd group and event with no matching pattern
- let test_cases += [['#myagroup#CmdwinEnter', 0]]
- " Valid autocmd group and non-existing autocmd event
- let test_cases += [['#myagroup#xyzacmd', 0]]
- " Valid autocmd group and event and non-matching pattern
- let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
- " Valid autocmd event and non-matching pattern
- let test_cases += [['#BufEnter#xyzpat', 0]]
- " Empty autocmd group, event and pattern
- let test_cases += [['###', 0]]
- " Empty autocmd group and event or empty event and pattern
- let test_cases += [['##', 0]]
- " Valid autocmd event
- let test_cases += [['##FileReadCmd', 1]]
- " Non-existing autocmd event
- let test_cases += [['##MySpecialCmd', 0]]
-
- " Existing and working option (long form)
- let test_cases += [['&textwidth', 1]]
- " Existing and working option (short form)
- let test_cases += [['&tw', 1]]
- " Existing and working option with garbage
- let test_cases += [['&tw-', 0]]
- " Global option
- let test_cases += [['&g:errorformat', 1]]
- " Local option
- let test_cases += [['&l:errorformat', 1]]
- " Negative form of existing and working option (long form)
- let test_cases += [['&nojoinspaces', 0]]
- " Negative form of existing and working option (short form)
- let test_cases += [['&nojs', 0]]
- " Non-existing option
- let test_cases += [['&myxyzoption', 0]]
-
- " Existing and working option (long form)
- let test_cases += [['+incsearch', 1]]
- " Existing and working option with garbage
- let test_cases += [['+incsearch!1', 0]]
- " Existing and working option (short form)
- let test_cases += [['+is', 1]]
- " Existing option that is hidden.
- let test_cases += [['+autoprint', 0]]
-
- " Existing environment variable
- let $EDITOR_NAME = 'Vim Editor'
- let test_cases += [['$EDITOR_NAME', 1]]
- " Non-existing environment variable
- let test_cases += [['$NON_ENV_VAR', 0]]
-
- " Valid internal function
- let test_cases += [['*bufnr', 1]]
- " Valid internal function with ()
- let test_cases += [['*bufnr()', 1]]
- " Non-existing internal function
- let test_cases += [['*myxyzfunc', 0]]
- " Valid internal function with garbage
- let test_cases += [['*bufnr&6', 0]]
-
- " Valid user defined function
- let test_cases += [['*TestExists', 1]]
- " Non-existing user defined function
- let test_cases += [['*MyxyzFunc', 0]]
-
- " Function that may be created by FuncUndefined event
- let test_cases += [['*UndefFun', 0]]
- " Function that may be created by script autoloading
- let test_cases += [['*footest#F', 0]]
-
- redir! > test.out
-
- for [test_case, result] in test_cases
- echo test_case . ": " . result
- call RunTest(test_case, result)
- endfor
-
- " Valid internal command (full match)
- echo ':edit: 2'
- if exists(':edit') == 2
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid internal command (full match) with garbage
- echo ':edit/a: 0'
- if exists(':edit/a') == 0
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid internal command (partial match)
- echo ':q: 1'
- if exists(':q') == 1
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing internal command
- echo ':invalidcmd: 0'
- if !exists(':invalidcmd')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " User defined command (full match)
- command! MyCmd :echo 'My command'
- echo ':MyCmd: 2'
- if exists(':MyCmd') == 2
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " User defined command (partial match)
- command! MyOtherCmd :echo 'Another command'
- echo ':My: 3'
- if exists(':My') == 3
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Command modifier
- echo ':rightbelow: 2'
- if exists(':rightbelow') == 2
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing user defined command (full match)
- delcommand MyCmd
-
- echo ':MyCmd: 0'
- if !exists(':MyCmd')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing user defined command (partial match)
- delcommand MyOtherCmd
-
- echo ':My: 0'
- if !exists(':My')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local variable
- let local_var = 1
- echo 'local_var: 1'
- if exists('local_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local variable with garbage
- let local_var = 1
- echo 'local_var%n: 0'
- if !exists('local_var%n')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing local variable
- unlet local_var
- echo 'local_var: 0'
- if !exists('local_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing autoload variable that may be autoloaded
- echo 'footest#x: 0'
- if !exists('footest#x')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local list
- let local_list = ["blue", "orange"]
- echo 'local_list: 1'
- if exists('local_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local list item
- echo 'local_list[1]: 1'
- if exists('local_list[1]')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local list item with garbage
- echo 'local_list[1]+5: 0'
- if !exists('local_list[1]+5')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Invalid local list item
- echo 'local_list[2]: 0'
- if !exists('local_list[2]')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing local list
- unlet local_list
- echo 'local_list: 0'
- if !exists('local_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Valid local dictionary
- let local_dict = {"xcord":100, "ycord":2}
- echo 'local_dict: 1'
- if exists('local_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing local dictionary
- unlet local_dict
- echo 'local_dict: 0'
- if !exists('local_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing local curly-brace variable
- let str = "local"
- let curly_{str}_var = 1
- echo 'curly_' . str . '_var: 1'
- if exists('curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing local curly-brace variable
- unlet curly_{str}_var
- echo 'curly_' . str . '_var: 0'
- if !exists('curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
-
- " Existing global variable
- let g:global_var = 1
- echo 'g:global_var: 1'
- if exists('g:global_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing global variable with garbage
- echo 'g:global_var-n: 1'
- if !exists('g:global_var-n')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing global variable
- unlet g:global_var
- echo 'g:global_var: 0'
- if !exists('g:global_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing global list
- let g:global_list = ["blue", "orange"]
- echo 'g:global_list: 1'
- if exists('g:global_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing global list
- unlet g:global_list
- echo 'g:global_list: 0'
- if !exists('g:global_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing global dictionary
- let g:global_dict = {"xcord":100, "ycord":2}
- echo 'g:global_dict: 1'
- if exists('g:global_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing global dictionary
- unlet g:global_dict
- echo 'g:global_dict: 0'
- if !exists('g:global_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing global curly-brace variable
- let str = "global"
- let g:curly_{str}_var = 1
- echo 'g:curly_' . str . '_var: 1'
- if exists('g:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing global curly-brace variable
- unlet g:curly_{str}_var
- echo 'g:curly_' . str . '_var: 0'
- if !exists('g:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing window variable
- echo 'w:window_var: 1'
- let w:window_var = 1
- if exists('w:window_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing window variable
- unlet w:window_var
- echo 'w:window_var: 0'
- if !exists('w:window_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing window list
- let w:window_list = ["blue", "orange"]
- echo 'w:window_list: 1'
- if exists('w:window_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing window list
- unlet w:window_list
- echo 'w:window_list: 0'
- if !exists('w:window_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing window dictionary
- let w:window_dict = {"xcord":100, "ycord":2}
- echo 'w:window_dict: 1'
- if exists('w:window_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing window dictionary
- unlet w:window_dict
- echo 'w:window_dict: 0'
- if !exists('w:window_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing window curly-brace variable
- let str = "window"
- let w:curly_{str}_var = 1
- echo 'w:curly_' . str . '_var: 1'
- if exists('w:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing window curly-brace variable
- unlet w:curly_{str}_var
- echo 'w:curly_' . str . '_var: 0'
- if !exists('w:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing buffer variable
- echo 'b:buffer_var: 1'
- let b:buffer_var = 1
- if exists('b:buffer_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing buffer variable
- unlet b:buffer_var
- echo 'b:buffer_var: 0'
- if !exists('b:buffer_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing buffer list
- let b:buffer_list = ["blue", "orange"]
- echo 'b:buffer_list: 1'
- if exists('b:buffer_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing buffer list
- unlet b:buffer_list
- echo 'b:buffer_list: 0'
- if !exists('b:buffer_list')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing buffer dictionary
- let b:buffer_dict = {"xcord":100, "ycord":2}
- echo 'b:buffer_dict: 1'
- if exists('b:buffer_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing buffer dictionary
- unlet b:buffer_dict
- echo 'b:buffer_dict: 0'
- if !exists('b:buffer_dict')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Existing buffer curly-brace variable
- let str = "buffer"
- let b:curly_{str}_var = 1
- echo 'b:curly_' . str . '_var: 1'
- if exists('b:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing buffer curly-brace variable
- unlet b:curly_{str}_var
- echo 'b:curly_' . str . '_var: 0'
- if !exists('b:curly_{str}_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Script-local tests
- source test60.vim
-
- " Existing Vim internal variable
- echo 'v:version: 1'
- if exists('v:version')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Non-existing Vim internal variable
- echo 'v:non_exists_var: 0'
- if !exists('v:non_exists_var')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- " Function arguments
- function TestFuncArg(func_arg, ...)
- echo 'a:func_arg: 1'
- if exists('a:func_arg')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- echo 'a:non_exists_arg: 0'
- if !exists('a:non_exists_arg')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- echo 'a:1: 1'
- if exists('a:1')
- echo "OK"
- else
- echo "FAILED"
- endif
-
- echo 'a:2: 0'
- if !exists('a:2')
- echo "OK"
- else
- echo "FAILED"
- endif
- endfunction
-
- call TestFuncArg("arg1", "arg2")
-
- echo ' g:footest#x =' g:footest#x
- echo ' footest#F()' footest#F()
- echo 'UndefFun()' UndefFun()
-
- redir END
-endfunction
-:call TestExists()
-:"
-:function TestHas()
- redir >> test.out
- for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
- echo 'has patch ' . pl . ': ' . has('patch-' . pl)
- endfor
- redir END
-endfunc
-:call TestHas()
-:"
-:delfunc TestExists
-:delfunc RunTest
-:delfunc TestFuncArg
-:edit! test.out
-:set ff=unix
-:w
-:qa!
-:while getchar(1) | call getchar() | endwhile
-ENDTEST
-
diff --git a/src/testdir/test60.ok b/src/testdir/test60.ok
deleted file mode 100644
index dabcd0c05d..0000000000
--- a/src/testdir/test60.ok
+++ /dev/null
@@ -1,211 +0,0 @@
-
-#myagroup: 1
-OK
-#myagroup+b: 0
-OK
-#myagroup#BufEnter: 1
-OK
-#myagroup#BufEnter#*.my: 1
-OK
-#BufEnter: 1
-OK
-#BufEnter#*.my: 1
-OK
-#xyzagroup: 0
-OK
-#xyzagroup#BufEnter: 0
-OK
-#myagroup#CmdwinEnter: 0
-OK
-#myagroup#xyzacmd: 0
-OK
-#myagroup#BufEnter#xyzpat: 0
-OK
-#BufEnter#xyzpat: 0
-OK
-###: 0
-OK
-##: 0
-OK
-##FileReadCmd: 1
-OK
-##MySpecialCmd: 0
-OK
-&textwidth: 1
-OK
-&tw: 1
-OK
-&tw-: 0
-OK
-&g:errorformat: 1
-OK
-&l:errorformat: 1
-OK
-&nojoinspaces: 0
-OK
-&nojs: 0
-OK
-&myxyzoption: 0
-OK
-+incsearch: 1
-OK
-+incsearch!1: 0
-OK
-+is: 1
-OK
-+autoprint: 0
-OK
-$EDITOR_NAME: 1
-OK
-$NON_ENV_VAR: 0
-OK
-*bufnr: 1
-OK
-*bufnr(): 1
-OK
-*myxyzfunc: 0
-OK
-*bufnr&6: 0
-OK
-*TestExists: 1
-OK
-*MyxyzFunc: 0
-OK
-*UndefFun: 0
-OK
-*footest#F: 0
-OK
-:edit: 2
-OK
-:edit/a: 0
-OK
-:q: 1
-OK
-:invalidcmd: 0
-OK
-:MyCmd: 2
-OK
-:My: 3
-OK
-:rightbelow: 2
-OK
-:MyCmd: 0
-OK
-:My: 0
-OK
-local_var: 1
-OK
-local_var%n: 0
-OK
-local_var: 0
-OK
-footest#x: 0
-OK
-local_list: 1
-OK
-local_list[1]: 1
-OK
-local_list[1]+5: 0
-OK
-local_list[2]: 0
-OK
-local_list: 0
-OK
-local_dict: 1
-OK
-local_dict: 0
-OK
-curly_local_var: 1
-OK
-curly_local_var: 0
-OK
-g:global_var: 1
-OK
-g:global_var-n: 1
-OK
-g:global_var: 0
-OK
-g:global_list: 1
-OK
-g:global_list: 0
-OK
-g:global_dict: 1
-OK
-g:global_dict: 0
-OK
-g:curly_global_var: 1
-OK
-g:curly_global_var: 0
-OK
-w:window_var: 1
-OK
-w:window_var: 0
-OK
-w:window_list: 1
-OK
-w:window_list: 0
-OK
-w:window_dict: 1
-OK
-w:window_dict: 0
-OK
-w:curly_window_var: 1
-OK
-w:curly_window_var: 0
-OK
-b:buffer_var: 1
-OK
-b:buffer_var: 0
-OK
-b:buffer_list: 1
-OK
-b:buffer_list: 0
-OK
-b:buffer_dict: 1
-OK
-b:buffer_dict: 0
-OK
-b:curly_buffer_var: 1
-OK
-b:curly_buffer_var: 0
-OK
-s:script_var: 1
-OK
-s:script_var: 0
-OK
-s:script_list: 1
-OK
-s:script_list: 0
-OK
-s:script_dict: 1
-OK
-s:script_dict: 0
-OK
-s:curly_script_var: 1
-OK
-s:curly_script_var: 0
-OK
-*s:my_script_func: 1
-OK
-*s:my_script_func: 0
-OK
-v:version: 1
-OK
-v:non_exists_var: 0
-OK
-a:func_arg: 1
-OK
-a:non_exists_arg: 0
-OK
-a:1: 1
-OK
-a:2: 0
-OK
- g:footest#x = 1
- footest#F() 0
-UndefFun() 0
-has patch 6.9.999: 1
-has patch 7.1.999: 1
-has patch 7.4.123: 1
-has patch 9.1.0: 0
-has patch 9.9.1: 0
diff --git a/src/testdir/test60.vim b/src/testdir/test60.vim
deleted file mode 100644
index f1157f73f9..0000000000
--- a/src/testdir/test60.vim
+++ /dev/null
@@ -1,98 +0,0 @@
-" Vim script for exists() function test
-" Script-local variables are checked here
-
-" Existing script-local variable
-let s:script_var = 1
-echo 's:script_var: 1'
-if exists('s:script_var')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Non-existing script-local variable
-unlet s:script_var
-echo 's:script_var: 0'
-if !exists('s:script_var')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Existing script-local list
-let s:script_list = ["blue", "orange"]
-echo 's:script_list: 1'
-if exists('s:script_list')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Non-existing script-local list
-unlet s:script_list
-echo 's:script_list: 0'
-if !exists('s:script_list')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Existing script-local dictionary
-let s:script_dict = {"xcord":100, "ycord":2}
-echo 's:script_dict: 1'
-if exists('s:script_dict')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Non-existing script-local dictionary
-unlet s:script_dict
-echo 's:script_dict: 0'
-if !exists('s:script_dict')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Existing script curly-brace variable
-let str = "script"
-let s:curly_{str}_var = 1
-echo 's:curly_' . str . '_var: 1'
-if exists('s:curly_{str}_var')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Non-existing script-local curly-brace variable
-unlet s:curly_{str}_var
-echo 's:curly_' . str . '_var: 0'
-if !exists('s:curly_{str}_var')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Existing script-local function
-function! s:my_script_func()
-endfunction
-
-echo '*s:my_script_func: 1'
-if exists('*s:my_script_func')
- echo "OK"
-else
- echo "FAILED"
-endif
-
-" Non-existing script-local function
-delfunction s:my_script_func
-
-echo '*s:my_script_func: 0'
-if !exists('*s:my_script_func')
- echo "OK"
-else
- echo "FAILED"
-endif
-unlet str
-
diff --git a/src/testdir/test61.in b/src/testdir/test61.in
deleted file mode 100644
index dc24ab9804..0000000000
--- a/src/testdir/test61.in
+++ /dev/null
@@ -1,113 +0,0 @@
-Tests for undo tree.
-Since this script is sourced we need to explicitly break changes up in
-undo-able pieces. Do that by setting 'undolevels'.
-Also tests :earlier and :later.
-
-STARTTEST
-:echo undotree().entries
-ENDTEST
-
-STARTTEST
-:" Delete three characters and undo
-Gx:set ul=100
-x:set ul=100
-x:.w! test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-:"
-:/^111/w >>test.out
-:" Delete three other characters and go back in time step by step
-$x:set ul=100
-x:set ul=100
-x:.w >>test.out
-:sleep 1
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-g-:.w >>test.out
-10g+:.w >>test.out
-:"
-:/^222/w >>test.out
-:" Delay for three seconds and go some seconds forward and backward
-:sleep 2
-Aa:set ul=100
-Ab:set ul=100
-Ac:set ul=100
-:.w >>test.out
-:ear 1s
-:.w >>test.out
-:ear 3s
-:.w >>test.out
-:later 1s
-:.w >>test.out
-:later 1h
-:.w >>test.out
-:"
-:" test undojoin
-Goaaaa:set ul=100
-obbbbu:.w >>test.out
-obbbb:set ul=100
-:undojoin
-occccu:.w >>test.out
-:e! Xtest
-ione one one:set ul=100
-:w!
-otwo:set ul=100
-otwo:set ul=100
-:w
-othree:earlier 1f
-:" expect "one one one\ntwo\ntwo"
-:%yank a
-:earlier 1f
-:" expect "one one one"
-:%yank b
-:earlier 1f
-:" expect empty line
-:%yank c
-:later 1f
-:" expect "one one one"
-:%yank d
-:later 1f
-:" expect "one one one\ntwo\ntwo"
-:%yank e
-:later 1f
-:" expect "one one one\ntwo\ntwo\nthree"
-ggO---:0put e
-ggO---:0put d
-ggO---:0put c
-ggO---:0put b
-ggO---:0put a
-ggO---:w >>test.out
-:so small.vim
-:set nocp viminfo+=nviminfo
-:enew!
-oa
-:set ul=100
-ob
-:set ul=100
-o1a2=setline('.','1234')
-
-uu:"
-oc
-:set ul=100
-o1a2=setline('.','1234')
-
-u:"
-od
-:set ul=100
-o1a2=string(123)
-u:"
-:%w >>test.out
-:qa!
-ENDTEST
-
-1111 -----
-2222 -----
-
-123456789
diff --git a/src/testdir/test61.ok b/src/testdir/test61.ok
deleted file mode 100644
index ea4b473ad7..0000000000
--- a/src/testdir/test61.ok
+++ /dev/null
@@ -1,49 +0,0 @@
-456789
-3456789
-23456789
-123456789
-123456789
-1111 -----
-123456
-1234567
-12345678
-456789
-3456789
-23456789
-123456789
-123456789
-123456789
-123456
-2222 -----
-123456abc
-123456
-123456789
-123456
-123456abc
-aaaa
-aaaa
----
-one one one
-two
-two
----
-one one one
----
-
----
-one one one
----
-one one one
-two
-two
----
-one one one
-two
-two
-three
-
-a
-b
-c
-12
-d
diff --git a/src/testdir/test62.in b/src/testdir/test62.in
deleted file mode 100644
index 93d968b33e..0000000000
--- a/src/testdir/test62.in
+++ /dev/null
@@ -1,191 +0,0 @@
-Tests for tab pages
-
-STARTTEST
-:so small.vim
-:lang C
-:" Simple test for opening and closing a tab page
-:tabnew
-:let nr = tabpagenr()
-:q
-:call append(line('$'), 'tab page ' . nr)
-:unlet nr
-:"
-:" Open three tab pages and use ":tabdo"
-:0tabnew
-:1tabnew
-:888tabnew
-:tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
-:tabclose! 2
-:tabrewind
-:let line1 = getline('$')
-:undo
-:q
-:tablast
-:let line2 = getline('$')
-:q!
-:call append(line('$'), line1)
-:call append(line('$'), line2)
-:unlet line1 line2
-:"
-:" Test for settabvar() and gettabvar() functions. Open a new tab page and
-:" set 3 variables to a number, string and a list. Verify that the variables
-:" are correctly set.
-:tabnew
-:tabfirst
-:call settabvar(2, 'val_num', 100)
-:call settabvar(2, 'val_str', 'SetTabVar test')
-:call settabvar(2, 'val_list', ['red', 'blue', 'green'])
-:"
-:let test_status = 'gettabvar: fail'
-:if gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar(2, 'val_list') == ['red', 'blue', 'green']
-: let test_status = 'gettabvar: pass'
-:endif
-:call append(line('$'), test_status)
-:"
-:tabnext 2
-:let test_status = 'settabvar: fail'
-:if t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green']
-: let test_status = 'settabvar: pass'
-:endif
-:tabclose
-:call append(line('$'), test_status)
-:"
-:if has('gui') || has('clientserver')
-:" Test for ":tab drop exist-file" to keep current window.
-:sp test1
-:tab drop test1
-:let test_status = 'tab drop 1: fail'
-:if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
-: let test_status = 'tab drop 1: pass'
-:endif
-:close
-:call append(line('$'), test_status)
-:"
-:"
-:" Test for ":tab drop new-file" to keep current window of tabpage 1.
-:split
-:tab drop newfile
-:let test_status = 'tab drop 2: fail'
-:if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
-: let test_status = 'tab drop 2: pass'
-:endif
-:tabclose
-:q
-:call append(line('$'), test_status)
-:"
-:"
-:" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
-:new test1
-:tabnew
-:new test1
-:tab drop test1
-:let test_status = 'tab drop 3: fail'
-:if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
-: let test_status = 'tab drop 3: pass'
-:endif
-:tabclose
-:q
-:call append(line('$'), test_status)
-:else
-:" :drop not supported
-:call append(line('$'), 'tab drop 1: pass')
-:call append(line('$'), 'tab drop 2: pass')
-:call append(line('$'), 'tab drop 3: pass')
-:endif
-:"
-:"
-:for i in range(9) | tabnew | endfor
-1gt
-Go=tabpagenr() 
-:tabmove 5
-i=tabpagenr() 
-:tabmove -2
-i=tabpagenr() 
-:tabmove +4
-i=tabpagenr() 
-:tabmove
-i=tabpagenr() 
-:tabmove -20
-i=tabpagenr() 
-:tabmove +20
-i=tabpagenr() 
-:3tabmove
-i=tabpagenr() 
-:7tabmove 5
-i=tabpagenr() 
-:let a='No error caught.'
-:try
-:tabmove foo
-:catch E474
-:let a='E474 caught.'
-:endtry
-i=a 
-:"
-:" Test autocommands
-:tabonly!
-:let g:r=[]
-:command -nargs=1 -bar C :call add(g:r, '=== ' . <q-args> . ' ===')|<args>
-:function Test()
- let hasau=has('autocmd')
- if hasau
- autocmd TabEnter * :call add(g:r, 'TabEnter')
- autocmd WinEnter * :call add(g:r, 'WinEnter')
- autocmd BufEnter * :call add(g:r, 'BufEnter')
- autocmd TabLeave * :call add(g:r, 'TabLeave')
- autocmd WinLeave * :call add(g:r, 'WinLeave')
- autocmd BufLeave * :call add(g:r, 'BufLeave')
- endif
- let t:a='a'
- C tab split
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
- endif
- let t:a='b'
- C tabnew
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter']
- endif
- let t:a='c'
- call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
- C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)')
- call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
- let w:a='a'
- C vsplit
- if !hasau
- let g:r+=['WinLeave', 'WinEnter']
- endif
- let w:a='a'
- let tabn=tabpagenr()
- let winr=range(1, winnr('$'))
- C tabnext 1
- if !hasau
- let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter']
- endif
- call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
- C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
- call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
- if hasau
- augroup TabDestructive
- autocmd TabEnter * :C tabnext 2 | C tabclose 3
- augroup END
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- autocmd! TabDestructive TabEnter
- C tabnew
- C tabnext 1
- autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- else
- let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
- endif
-endfunction
-:call Test()
-:$ put =g:r
-:"
-:"
-:/^Results/,$w! test.out
-:qa!
-ENDTEST
-
-Results:
diff --git a/src/testdir/test62.ok b/src/testdir/test62.ok
deleted file mode 100644
index e35b2b1c67..0000000000
--- a/src/testdir/test62.ok
+++ /dev/null
@@ -1,88 +0,0 @@
-Results:
-tab page 2
-this is tab page 3
-this is tab page 1
-this is tab page 4
-gettabvar: pass
-settabvar: pass
-tab drop 1: pass
-tab drop 2: pass
-tab drop 3: pass
-1
-6
-4
-8
-10
-1
-10
-4
-6
-E474 caught.
-=== tab split ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnew ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufLeave
-BufEnter
-a b c
-=== call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ===
-2 4 6
-=== vsplit ===
-WinLeave
-WinEnter
-=== tabnext 1 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufEnter
-a a
-=== call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') ===
-2 4
-=== tabnext 3 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-=== tabclose 3 ===
-2/2
-=== tabnew ===
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufLeave
-BufEnter
-=== tabnext 1 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-BufEnter
-=== tabnext 3 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-BufLeave
-WinLeave
-TabLeave
-WinEnter
-TabEnter
-=== tabnext 2 ===
-=== tabclose 3 ===
-BufEnter
-=== tabclose 3 ===
-2/2
diff --git a/src/testdir/test63.in b/src/testdir/test63.in
deleted file mode 100644
index 74339c3e35..0000000000
--- a/src/testdir/test63.in
+++ /dev/null
@@ -1,157 +0,0 @@
-Test for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",
-"matchadd()", "matcharg()", "matchdelete()", and "setmatches()".
-
-STARTTEST
-:so small.vim
-:" --- Check that "matcharg()" returns the correct group and pattern if a match
-:" --- is defined.
-:let @r = "*** Test 1: "
-:highlight MyGroup1 ctermbg=red
-:highlight MyGroup2 ctermbg=green
-:highlight MyGroup3 ctermbg=blue
-:match MyGroup1 /TODO/
-:2match MyGroup2 /FIXME/
-:3match MyGroup3 /XXX/
-:if matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME'] && matcharg(3) == ['MyGroup3', 'XXX']
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:" --- Check that "matcharg()" returns an empty list if the argument is not 1,
-:" --- 2 or 3 (only 0 and 4 are tested).
-:let @r .= "*** Test 2: "
-:if matcharg(0) == [] && matcharg(4) == []
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:" --- Check that "matcharg()" returns ['', ''] if a match is not defined.
-:let @r .= "*** Test 3: "
-:match
-:2match
-:3match
-:if matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', '']
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:" --- Check that "matchadd()" and "getmatches()" agree on added matches and
-:" --- that default values apply.
-:let @r .= "*** Test 4: "
-:let m1 = matchadd("MyGroup1", "TODO")
-:let m2 = matchadd("MyGroup2", "FIXME", 42)
-:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
-:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'XXX', 'priority': 60, 'id': 17}]
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:" --- Check that "matchdelete()" deletes the matches defined in the previous
-:" --- test correctly.
-:let @r .= "*** Test 5: "
-:call matchdelete(m1)
-:call matchdelete(m2)
-:call matchdelete(m3)
-:unlet m1
-:unlet m2
-:unlet m3
-:if getmatches() == []
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:" --- Check that "matchdelete()" returns 0 if successful and otherwise -1.
-:let @r .= "*** Test 6: "
-:let m = matchadd("MyGroup1", "TODO")
-:let r1 = matchdelete(m)
-:let r2 = matchdelete(42)
-:if r1 == 0 && r2 == -1
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:unlet m
-:unlet r1
-:unlet r2
-:" --- Check that "clearmatches()" clears all matches defined by ":match" and
-:" --- "matchadd()".
-:let @r .= "*** Test 7: "
-:let m1 = matchadd("MyGroup1", "TODO")
-:let m2 = matchadd("MyGroup2", "FIXME", 42)
-:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
-:match MyGroup1 /COFFEE/
-:2match MyGroup2 /HUMPPA/
-:3match MyGroup3 /VIM/
-:call clearmatches()
-:if getmatches() == []
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:unlet m1
-:unlet m2
-:unlet m3
-:" --- Check that "setmatches()" restores a list of matches saved by
-:" --- "getmatches()" without changes. (Matches with equal priority must also
-:" --- remain in the same order.)
-:let @r .= "*** Test 8: "
-:let m1 = matchadd("MyGroup1", "TODO")
-:let m2 = matchadd("MyGroup2", "FIXME", 42)
-:let m3 = matchadd("MyGroup3", "XXX", 60, 17)
-:match MyGroup1 /COFFEE/
-:2match MyGroup2 /HUMPPA/
-:3match MyGroup3 /VIM/
-:let ml = getmatches()
-:call clearmatches()
-:call setmatches(ml)
-:if getmatches() == ml
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:call clearmatches()
-:unlet m1
-:unlet m2
-:unlet m3
-:unlet ml
-:" --- Check that "setmatches()" will not add two matches with the same ID. The
-:" --- expected behaviour (for now) is to add the first match but not the
-:" --- second and to return 0 (even though it is a matter of debate whether
-:" --- this can be considered successful behaviour).
-:let @r .= "*** Test 9: "
-:let r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])
-:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 == 0
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:call clearmatches()
-:unlet r1
-:" --- Check that "setmatches()" returns 0 if successful and otherwise -1.
-:" --- (A range of valid and invalid input values are tried out to generate the
-:" --- return values.)
-:let @r .= "*** Test 10: "
-:let rs1 = setmatches([])
-:let rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}])
-:call clearmatches()
-:let rf1 = setmatches(0)
-:let rf2 = setmatches([0])
-:let rf3 = setmatches([{'wrong key': 'wrong value'}])
-:if rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1
-: let @r .= "OK\n"
-:else
-: let @r .= "FAILED\n"
-:endif
-:unlet rs1
-:unlet rs2
-:unlet rf1
-:unlet rf2
-:unlet rf3
-:highlight clear MyGroup1
-:highlight clear MyGroup2
-:highlight clear MyGroup3
-G"rp
-:/^Results/,$wq! test.out
-ENDTEST
-
-Results of test63:
diff --git a/src/testdir/test63.ok b/src/testdir/test63.ok
deleted file mode 100644
index 14973985eb..0000000000
--- a/src/testdir/test63.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-Results of test63:
-*** Test 1: OK
-*** Test 2: OK
-*** Test 3: OK
-*** Test 4: OK
-*** Test 5: OK
-*** Test 6: OK
-*** Test 7: OK
-*** Test 8: OK
-*** Test 9: OK
-*** Test 10: OK
diff --git a/src/testdir/test64.in b/src/testdir/test64.in
deleted file mode 100644
index 29bf0b902b..0000000000
--- a/src/testdir/test64.in
+++ /dev/null
@@ -1,633 +0,0 @@
-Test for regexp patterns without multi-byte support.
-See test95 for multi-byte tests.
-
-A pattern that gives the expected result produces OK, so that we know it was
-actually tried.
-
-STARTTEST
-:so small.vim
-:" tl is a List of Lists with:
-:" regexp pattern
-:" text to test the pattern on
-:" expected match (optional)
-:" expected submatch 1 (optional)
-:" expected submatch 2 (optional)
-:" etc.
-:" When there is no match use only the first two items.
-:let tl = []
-:"
-:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-:"""" Previously written tests """"""""""""""""""""""""""""""""
-:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-:"
-:call add(tl, [2, 'ab', 'aab', 'ab'])
-:call add(tl, [2, 'b', 'abcdef', 'b'])
-:call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
-:call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
-:call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
-:call add(tl, [2, 'bc*', 'abbdef', 'b'])
-:call add(tl, [2, 'c*', 'ccc', 'ccc'])
-:call add(tl, [2, 'bc*', 'abdef', 'b'])
-:call add(tl, [2, 'c*', 'abdef', ''])
-:call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
-:call add(tl, [2, 'bc\+', 'abdef']) "no match
-:"
-:"operator \|
-:call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered
-:"
-:call add(tl, [2, 'c\?', 'ccb', 'c'])
-:call add(tl, [2, 'bc\?', 'abd', 'b'])
-:call add(tl, [2, 'bc\?', 'abccd', 'bc'])
-:"
-:call add(tl, [2, '\va{1}', 'ab', 'a'])
-:"
-:call add(tl, [2, '\va{2}', 'aa', 'aa'])
-:call add(tl, [2, '\va{2}', 'caad', 'aa'])
-:call add(tl, [2, '\va{2}', 'aba'])
-:call add(tl, [2, '\va{2}', 'ab'])
-:call add(tl, [2, '\va{2}', 'abaa', 'aa'])
-:call add(tl, [2, '\va{2}', 'aaa', 'aa'])
-:"
-:call add(tl, [2, '\vb{1}', 'abca', 'b'])
-:call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
-:call add(tl, [2, '\vba{3}', 'aabaac'])
-:"
-:call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
-:call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
-:call add(tl, [2, '\v(ab){1}', 'acb'])
-:"
-:call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
-:call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
-:call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
-:call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
-:call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
-:call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
-:"
-:call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
-:call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
-:call add(tl, [2, '\v(ab){2}', 'abac'])
-:call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
-:call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
-:call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
-:"
-:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
-:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
-:call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
-:call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
-:call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
-:call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
-:call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
-:call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
-:"
-:call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
-:call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
-:"
-:call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
-:call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
-:call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
-:call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
-:call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
-:call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
-:call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
-:call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
-:call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
-:call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
-:call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
-:call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
-:call add(tl, [2, '\v(abc){2}', 'abcabd', ])
-:call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
-:"
-:call add(tl, [2, 'a*', 'cc', ''])
-:call add(tl, [2, '\v(a*)+', 'cc', ''])
-:call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
-:call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
-:call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
-:call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
-:call add(tl, [2, '\v(a*)+', '', ''])
-:call add(tl, [2, '\v((a*)+)+', '', ''])
-:call add(tl, [2, '\v((ab)*)+', '', ''])
-:call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
-:call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
-:"
-:call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
-:call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
-:call add(tl, [2, '\va{2}|b{2}', 'abab'])
-:call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
-:call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
-:call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
-:call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
-:call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
-:call add(tl, [2, '\va*a{2}', 'a', ])
-:call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
-:call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
-:call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
-:call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
-:call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
-:"
-:"submatches
-:call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
-:call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
-:call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
-:call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
-:call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
-:"
-:call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
-:call add(tl, [2, 'x', 'abcdef'])
-:"
-:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-:""""" Simple tests """""""""""""""""""""""""""""""""""""""""""
-:""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-:"
-:" Search single groups
-:call add(tl, [2, 'ab', 'aab', 'ab'])
-:call add(tl, [2, 'ab', 'baced'])
-:call add(tl, [2, 'ab', ' ab ', 'ab'])
-:"
-:" Search multi-modifiers
-:call add(tl, [2, 'x*', 'xcd', 'x'])
-:call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
-:" empty match is good
-:call add(tl, [2, 'x*', 'abcdoij', ''])
-:" no match here
-:call add(tl, [2, 'x\+', 'abcdoin'])
-:call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
-:call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
-:call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
-:call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
-:call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
-:call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
-:call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
-:" empty match is good
-:call add(tl, [2, 'x\?', 'abc sfoij', ''])
-:call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
-:"
-:call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
-:" same thing as 'a?'
-:call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
-:" same thing as 'a\{0,1}'
-:call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
-:call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
-:call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
-:call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
-:call add(tl, [2, 'a\{0}', 'asoiuj', ''])
-:call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
-:call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj nasfvius afg aaaa sfiuhuhiushf', 'aa'])
-:call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
-:" same thing as 'a*'
-:call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
-:call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
-:call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
-:call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
-:call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
-:call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
-:call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
-:call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
-:call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
-:" leading star as normal char when \{} follows
-:call add(tl, [2, '^*\{4,}$', '***'])
-:call add(tl, [2, '^*\{4,}$', '****', '****'])
-:call add(tl, [2, '^*\{4,}$', '*****', '*****'])
-:" same thing as 'a*'
-:call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
-:call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
-:"
-:call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
-:" anti-greedy version of 'a?'
-:call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
-:call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
-:call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
-:call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
-:call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
-:call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
-:call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
-:call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
-:call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
-:call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
-:call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
-:call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
-:call add(tl, [2, 'a\{-,5}', 'abcd', ''])
-:call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
-:" anti-greedy version of 'a*'
-:call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
-:call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
-:"
-:" Test groups of characters and submatches
-:call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
-:call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
-:call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
-:call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', ''])
-:call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupiiiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
-:call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obelix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
-:call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz'])
-:call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
-:call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
-:call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
-:call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
-:call add(tl, [2, '\p*', 'aá ', 'aá '])
-:"
-:" Test greedy-ness and lazy-ness
-:call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
-:call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
-:call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
-:call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
-:call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz'])
-:call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa',''])
-:call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
-:call add(tl, [2, '\v(a{-1,3})+','aa','aa','a'])
-:"
-:" Test Character classes
-:call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
-:"
-:" Test collections and character range []
-:call add(tl, [2, '\v[a]', 'abcd', 'a'])
-:call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
-:call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
-:call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
-:call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijklmnopqrstuvwxyz'])
-:call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
-:call add(tl, [2, '[^abc]\+','abcabcabc'])
-:call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
-:call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
-:call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
-:call add(tl, [2, '[a-f]*','iiiiiiii',''])
-:call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
-:call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
-:call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
-:call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
-:call add(tl, [2, '[-a]', '-', '-'])
-:call add(tl, [2, '[a-]', '-', '-'])
-:call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
-:call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
-:" filename regexp
-:call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
-:" special chars
-:call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
-:" collation elem
-:call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
-:" middle of regexp
-:call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
-:call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
-:call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
-:call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
-:call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
-:call add(tl, [2, '\_f', " \na ", "\n"])
-:call add(tl, [2, '\_f\+', " \na ", "\na"])
-:call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
-:"
-:"""" Test start/end of line, start/end of file
-:call add(tl, [2, '^a.', "a_\nb ", "a_"])
-:call add(tl, [2, '^a.', "b a \na_"])
-:call add(tl, [2, '.a$', " a\n "])
-:call add(tl, [2, '.a$', " a b\n_a", "_a"])
-:call add(tl, [2, '\%^a.', "a a\na", "a "])
-:call add(tl, [2, '\%^a', " a \na "])
-:call add(tl, [2, '.a\%$', " a\n "])
-:call add(tl, [2, '.a\%$', " a\n_a", "_a"])
-:"
-:"""" Test recognition of character classes
-:call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
-:call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
-:call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
-:call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
-:call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
-:call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
-:call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
-:call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
-:call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
-:call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
-:call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
-:call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
-:call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
-:call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
-:call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
-:call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
-:call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
-:call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
-:call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
-:call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
-:call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
-:call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
-:call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
-:"
-:"""" Tests for \z features
-:" match ends at \ze
-:call add(tl, [2, 'xx \ze test', 'xx '])
-:call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
-:call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
-:call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
-:call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
-:call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
-:" match starts at \zs
-:call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
-:call add(tl, [2, 'aa \zsax', ' ax'])
-:call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
-:call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
-:call add(tl, [2, '\>\zs.', 'aword. ', '.'])
-:call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' '])
-:"
-:"""" Tests for \@= and \& features
-:call add(tl, [2, 'abc\@=', 'abc', 'ab'])
-:call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
-:call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
-:" will never match, no matter the input text
-:call add(tl, [2, 'abcd\@=e', 'abcd'])
-:" will never match
-:call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
-:call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
-:call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
-:call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs friend'])
-:call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
-:call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
-:call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
-:call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1'])
-:call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
-:call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
-:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
-:call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
-:call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
-:call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
-:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
-:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
-:call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
-:call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:'])
-:call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 's'])
-:call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
-:call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
-:"
-:"""" Combining different tests and features
-:call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
-:call add(tl, [2, '', 'abcd', ''])
-:call add(tl, [2, '\v(())', 'any possible text', ''])
-:call add(tl, [2, '\v%(ab(xyz)c)', ' abxyzc ', 'abxyzc', 'xyz'])
-:call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
-:call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
-:"
-:"""" \%u and friends
-:call add(tl, [2, '\%d32', 'yes no', ' '])
-:call add(tl, [2, '\%o40', 'yes no', ' '])
-:call add(tl, [2, '\%x20', 'yes no', ' '])
-:call add(tl, [2, '\%u0020', 'yes no', ' '])
-:call add(tl, [2, '\%U00000020', 'yes no', ' '])
-:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
-:"
-:""""" \%[abc]
-:call add(tl, [2, 'foo\%[bar]', 'fobar'])
-:call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
-:call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
-:call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
-:call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
-:call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
-:call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
-:call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
-:call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
-:call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
-:call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
-:call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
-:call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
-:call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'])
-:"
-:"""" Alternatives, must use first longest match
-:call add(tl, [2, 'goo\|go', 'google', 'goo'])
-:call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
-:call add(tl, [2, '\<goo\|go', 'google', 'goo'])
-:"
-:"""" Back references
-:call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
-:call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
-:call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i'])
-:call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
-:call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
-:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo.com', 'bat'])
-:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
-:call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat'])
-:call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0'])
-:call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
-:"
-:"""" Look-behind with limit
-:call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
-:call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
-:call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
-:call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])
-:call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
-:call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])
-:call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
-:"
-:" look-behind match in front of a zero-width item
-:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
-:call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '1970'])
-:call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
-:call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
-:call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
-:"
-:" complicated look-behind match
-:call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
-:call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
-:"
-:""""" \@>
-:call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
-:call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
-:call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab'])
-:call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
-:" TODO: BT engine does not restore submatch after failure
-:call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
-:"
-:"""" "\_" prepended negated collection matches EOL
-:call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
-:call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
-:"
-:"""" Requiring lots of states.
-:call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"])
-:"
-:"""" Skip adding state twice
-:call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO'])
-:"
-:"""" Run the tests
-:"
-:for t in tl
-: let re = t[0]
-: let pat = t[1]
-: let text = t[2]
-: let matchidx = 3
-: for engine in [0, 1, 2]
-: if engine == 2 && re == 0 || engine == 1 && re ==1
-: continue
-: endif
-: let &regexpengine = engine
-: try
-: let l = matchlist(text, pat)
-: catch
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"'
-: endtry
-:" check the match itself
-: if len(l) == 0 && len(t) > matchidx
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"'
-: elseif len(l) > 0 && len(t) == matchidx
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match'
-: elseif len(t) > matchidx && l[0] != t[matchidx]
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
-: else
-: $put ='OK ' . engine . ' - ' . pat
-: endif
-: if len(l) > 0
-:" check all the nine submatches
-: for i in range(1, 9)
-: if len(t) <= matchidx + i
-: let e = ''
-: else
-: let e = t[matchidx + i]
-: endif
-: if l[i] != e
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
-: endif
-: endfor
-: unlet i
-: endif
-: endfor
-:endfor
-:unlet t tl e l
-:"
-:"""""" multi-line tests """"""""""""""""""""
-:let tl = []
-:"
-:"""" back references
-:call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
-:call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
-:"
-:"""" line breaks
-:call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def', 'XXjk', 'lmn']])
-:"
-:" Check that \_[0-9] matching EOL does not break a following \>
-:call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'localnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
-:"
-:" Check a pattern with a line break and ^ and $
-:call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
-:"
-:call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
-:"
-:"""" Run the multi-line tests
-:"
-:$put ='multi-line tests'
-:for t in tl
-: let re = t[0]
-: let pat = t[1]
-: let before = t[2]
-: let after = t[3]
-: for engine in [0, 1, 2]
-: if engine == 2 && re == 0 || engine == 1 && re ==1
-: continue
-: endif
-: let &regexpengine = engine
-: new
-: call setline(1, before)
-: exe '%s/' . pat . '/XX/'
-: let result = getline(1, '$')
-: q!
-: if result != after
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . '\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'
-: else
-: $put ='OK ' . engine . ' - ' . pat
-: endif
-: endfor
-:endfor
-:unlet t tl
-:"
-:" Check that using a pattern on two lines doesn't get messed up by using
-:" matchstr() with \ze in between.
-:set re=0
-/^Substitute here
-:.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'
-/^Substitute here
-:.+1,.+2yank
-Gop:"
-:"
-:" Check a pattern with a look beind crossing a line boundary
-/^Behind:
-/\(<\_[xy]\+\)\@3<=start
-:.yank
-Gop:"
-:"
-:" Check matching Visual area
-/^Visual:
-jfxvfx:s/\%Ve/E/g
-jV:s/\%Va/A/g
-jfxfxj:s/\%Vo/O/g
-:/^Visual/+1,/^Visual/+4yank
-Gop:"
-:"
-:" Check matching marks
-/^Marks:
-jfSmsfEme:.-4,.+6s/.\%>'s.*\%<'e../here/
-jfSmsj0fEme:.-4,.+6s/.\%>'s\_.*\%<'e../again/
-:/^Marks:/+1,/^Marks:/+3yank
-Gop:"
-:"
-:" Check patterns matching cursor position.
-:func! Postest()
- new
- call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_'])
- call setpos('.', [0, 1, 0, 0])
- s/\%>3c.//g
- call setpos('.', [0, 2, 4, 0])
- s/\%#.*$//g
- call setpos('.', [0, 3, 0, 0])
- s/\%<3c./_/g
- %s/\%4l\%>5c./_/g
- %s/\%6l\%>25v./_/g
- %s/\%>6l\%3c./!/g
- %s/\%>7l\%12c./?/g
- %s/\%>7l\%<9l\%>5v\%<8v./#/g
- 1,$yank
- quit!
-endfunc
-Go-0-:set re=0
-:call Postest()
-:put
-o-1-:set re=1
-:call Postest()
-:put
-o-2-:set re=2
-:call Postest()
-:put
-:"
-:" start and end of buffer
-/\%^
-yeGop:"
-50%/\%^..
-yeGopA END:"
-50%/\%$
-"ayb20gg/..\%$
-"bybGo"apo"bp:"
-:"
-:""""" Write the results """""""""""""
-:/\%#=1^Results/,$wq! test.out
-ENDTEST
-
-Substitute here:
-<T="">Ta 5</Title>
-<T="">Ac 7</Title>
-
-Behind:
-asdfasd<yyy
-xxstart1
-asdfasd<yy
-xxxstart2
-asdfasd<yy
-xxstart3
-
-Visual:
-thexe the thexethe
-andaxand andaxand
-oooxofor foroxooo
-oooxofor foroxooo
-
-Marks:
-asdfSasdfsadfEasdf
-asdfSas
-dfsadfEasdf
-
-Results of test64:
diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok
deleted file mode 100644
index a1498ea5d6..0000000000
--- a/src/testdir/test64.ok
+++ /dev/null
@@ -1,1084 +0,0 @@
-Results of test64:
-OK 0 - ab
-OK 1 - ab
-OK 2 - ab
-OK 0 - b
-OK 1 - b
-OK 2 - b
-OK 0 - bc*
-OK 1 - bc*
-OK 2 - bc*
-OK 0 - bc\{-}
-OK 1 - bc\{-}
-OK 2 - bc\{-}
-OK 0 - bc\{-}\(d\)
-OK 1 - bc\{-}\(d\)
-OK 2 - bc\{-}\(d\)
-OK 0 - bc*
-OK 1 - bc*
-OK 2 - bc*
-OK 0 - c*
-OK 1 - c*
-OK 2 - c*
-OK 0 - bc*
-OK 1 - bc*
-OK 2 - bc*
-OK 0 - c*
-OK 1 - c*
-OK 2 - c*
-OK 0 - bc\+
-OK 1 - bc\+
-OK 2 - bc\+
-OK 0 - bc\+
-OK 1 - bc\+
-OK 2 - bc\+
-OK 0 - a\|ab
-OK 1 - a\|ab
-OK 2 - a\|ab
-OK 0 - c\?
-OK 1 - c\?
-OK 2 - c\?
-OK 0 - bc\?
-OK 1 - bc\?
-OK 2 - bc\?
-OK 0 - bc\?
-OK 1 - bc\?
-OK 2 - bc\?
-OK 0 - \va{1}
-OK 1 - \va{1}
-OK 2 - \va{1}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \va{2}
-OK 1 - \va{2}
-OK 2 - \va{2}
-OK 0 - \vb{1}
-OK 1 - \vb{1}
-OK 2 - \vb{1}
-OK 0 - \vba{2}
-OK 1 - \vba{2}
-OK 2 - \vba{2}
-OK 0 - \vba{3}
-OK 1 - \vba{3}
-OK 2 - \vba{3}
-OK 0 - \v(ab){1}
-OK 1 - \v(ab){1}
-OK 2 - \v(ab){1}
-OK 0 - \v(ab){1}
-OK 1 - \v(ab){1}
-OK 2 - \v(ab){1}
-OK 0 - \v(ab){1}
-OK 1 - \v(ab){1}
-OK 2 - \v(ab){1}
-OK 0 - \v(ab){0,2}
-OK 1 - \v(ab){0,2}
-OK 2 - \v(ab){0,2}
-OK 0 - \v(ab){0,2}
-OK 1 - \v(ab){0,2}
-OK 2 - \v(ab){0,2}
-OK 0 - \v(ab){1,2}
-OK 1 - \v(ab){1,2}
-OK 2 - \v(ab){1,2}
-OK 0 - \v(ab){1,2}
-OK 1 - \v(ab){1,2}
-OK 2 - \v(ab){1,2}
-OK 0 - \v(ab){2,4}
-OK 1 - \v(ab){2,4}
-OK 2 - \v(ab){2,4}
-OK 0 - \v(ab){2,4}
-OK 1 - \v(ab){2,4}
-OK 2 - \v(ab){2,4}
-OK 0 - \v(ab){2}
-OK 1 - \v(ab){2}
-OK 2 - \v(ab){2}
-OK 0 - \v(ab){2}
-OK 1 - \v(ab){2}
-OK 2 - \v(ab){2}
-OK 0 - \v(ab){2}
-OK 1 - \v(ab){2}
-OK 2 - \v(ab){2}
-OK 0 - \v(ab){2}
-OK 1 - \v(ab){2}
-OK 2 - \v(ab){2}
-OK 0 - \v((ab){2}){2}
-OK 1 - \v((ab){2}){2}
-OK 2 - \v((ab){2}){2}
-OK 0 - \v((ab){2}){2}
-OK 1 - \v((ab){2}){2}
-OK 2 - \v((ab){2}){2}
-OK 0 - \v(a{1}){1}
-OK 1 - \v(a{1}){1}
-OK 2 - \v(a{1}){1}
-OK 0 - \v(a{2}){1}
-OK 1 - \v(a{2}){1}
-OK 2 - \v(a{2}){1}
-OK 0 - \v(a{2}){1}
-OK 1 - \v(a{2}){1}
-OK 2 - \v(a{2}){1}
-OK 0 - \v(a{2}){1}
-OK 1 - \v(a{2}){1}
-OK 2 - \v(a{2}){1}
-OK 0 - \v(a{1}){2}
-OK 1 - \v(a{1}){2}
-OK 2 - \v(a{1}){2}
-OK 0 - \v(a{1}){2}
-OK 1 - \v(a{1}){2}
-OK 2 - \v(a{1}){2}
-OK 0 - \v(a{2})+
-OK 1 - \v(a{2})+
-OK 2 - \v(a{2})+
-OK 0 - \v(a{2})+
-OK 1 - \v(a{2})+
-OK 2 - \v(a{2})+
-OK 0 - \v(a{2}){1}
-OK 1 - \v(a{2}){1}
-OK 2 - \v(a{2}){1}
-OK 0 - \v(a{1}){2}
-OK 1 - \v(a{1}){2}
-OK 2 - \v(a{1}){2}
-OK 0 - \v(a{1}){1}
-OK 1 - \v(a{1}){1}
-OK 2 - \v(a{1}){1}
-OK 0 - \v(a{2}){2}
-OK 1 - \v(a{2}){2}
-OK 2 - \v(a{2}){2}
-OK 0 - \v(a{2}){2}
-OK 1 - \v(a{2}){2}
-OK 2 - \v(a{2}){2}
-OK 0 - \v(a+){2}
-OK 1 - \v(a+){2}
-OK 2 - \v(a+){2}
-OK 0 - \v(a{3}){2}
-OK 1 - \v(a{3}){2}
-OK 2 - \v(a{3}){2}
-OK 0 - \v(a{1,2}){2}
-OK 1 - \v(a{1,2}){2}
-OK 2 - \v(a{1,2}){2}
-OK 0 - \v(a{1,3}){2}
-OK 1 - \v(a{1,3}){2}
-OK 2 - \v(a{1,3}){2}
-OK 0 - \v(a{1,3}){2}
-OK 1 - \v(a{1,3}){2}
-OK 2 - \v(a{1,3}){2}
-OK 0 - \v(a{1,3}){3}
-OK 1 - \v(a{1,3}){3}
-OK 2 - \v(a{1,3}){3}
-OK 0 - \v(a{1,2}){2}
-OK 1 - \v(a{1,2}){2}
-OK 2 - \v(a{1,2}){2}
-OK 0 - \v(a+)+
-OK 1 - \v(a+)+
-OK 2 - \v(a+)+
-OK 0 - \v(a+)+
-OK 1 - \v(a+)+
-OK 2 - \v(a+)+
-OK 0 - \v(a+){1,2}
-OK 1 - \v(a+){1,2}
-OK 2 - \v(a+){1,2}
-OK 0 - \v(a+)(a+)
-OK 1 - \v(a+)(a+)
-OK 2 - \v(a+)(a+)
-OK 0 - \v(a{3})+
-OK 1 - \v(a{3})+
-OK 2 - \v(a{3})+
-OK 0 - \v(a|b|c)+
-OK 1 - \v(a|b|c)+
-OK 2 - \v(a|b|c)+
-OK 0 - \v(a|b|c){2}
-OK 1 - \v(a|b|c){2}
-OK 2 - \v(a|b|c){2}
-OK 0 - \v(abc){2}
-OK 1 - \v(abc){2}
-OK 2 - \v(abc){2}
-OK 0 - \v(abc){2}
-OK 1 - \v(abc){2}
-OK 2 - \v(abc){2}
-OK 0 - a*
-OK 1 - a*
-OK 2 - a*
-OK 0 - \v(a*)+
-OK 1 - \v(a*)+
-OK 2 - \v(a*)+
-OK 0 - \v((ab)+)+
-OK 1 - \v((ab)+)+
-OK 2 - \v((ab)+)+
-OK 0 - \v(((ab)+)+)+
-OK 1 - \v(((ab)+)+)+
-OK 2 - \v(((ab)+)+)+
-OK 0 - \v(((ab)+)+)+
-OK 1 - \v(((ab)+)+)+
-OK 2 - \v(((ab)+)+)+
-OK 0 - \v(a{0,2})+
-OK 1 - \v(a{0,2})+
-OK 2 - \v(a{0,2})+
-OK 0 - \v(a*)+
-OK 1 - \v(a*)+
-OK 2 - \v(a*)+
-OK 0 - \v((a*)+)+
-OK 1 - \v((a*)+)+
-OK 2 - \v((a*)+)+
-OK 0 - \v((ab)*)+
-OK 1 - \v((ab)*)+
-OK 2 - \v((ab)*)+
-OK 0 - \va{1,3}
-OK 1 - \va{1,3}
-OK 2 - \va{1,3}
-OK 0 - \va{2,3}
-OK 1 - \va{2,3}
-OK 2 - \va{2,3}
-OK 0 - \v((ab)+|c*)+
-OK 1 - \v((ab)+|c*)+
-OK 2 - \v((ab)+|c*)+
-OK 0 - \v(a{2})|(b{3})
-OK 1 - \v(a{2})|(b{3})
-OK 2 - \v(a{2})|(b{3})
-OK 0 - \va{2}|b{2}
-OK 1 - \va{2}|b{2}
-OK 2 - \va{2}|b{2}
-OK 0 - \v(a)+|(c)+
-OK 1 - \v(a)+|(c)+
-OK 2 - \v(a)+|(c)+
-OK 0 - \vab{2,3}c
-OK 1 - \vab{2,3}c
-OK 2 - \vab{2,3}c
-OK 0 - \vab{2,3}c
-OK 1 - \vab{2,3}c
-OK 2 - \vab{2,3}c
-OK 0 - \vab{2,3}cd{2,3}e
-OK 1 - \vab{2,3}cd{2,3}e
-OK 2 - \vab{2,3}cd{2,3}e
-OK 0 - \va(bc){2}d
-OK 1 - \va(bc){2}d
-OK 2 - \va(bc){2}d
-OK 0 - \va*a{2}
-OK 1 - \va*a{2}
-OK 2 - \va*a{2}
-OK 0 - \va*a{2}
-OK 1 - \va*a{2}
-OK 2 - \va*a{2}
-OK 0 - \va*a{2}
-OK 1 - \va*a{2}
-OK 2 - \va*a{2}
-OK 0 - \va*a{2}
-OK 1 - \va*a{2}
-OK 2 - \va*a{2}
-OK 0 - \va*b*|a*c*
-OK 1 - \va*b*|a*c*
-OK 2 - \va*b*|a*c*
-OK 0 - \va{1}b{1}|a{1}b{1}
-OK 1 - \va{1}b{1}|a{1}b{1}
-OK 2 - \va{1}b{1}|a{1}b{1}
-OK 0 - \v(a)
-OK 1 - \v(a)
-OK 2 - \v(a)
-OK 0 - \v(a)(b)
-OK 1 - \v(a)(b)
-OK 2 - \v(a)(b)
-OK 0 - \v(ab)(b)(c)
-OK 1 - \v(ab)(b)(c)
-OK 2 - \v(ab)(b)(c)
-OK 0 - \v((a)(b))
-OK 1 - \v((a)(b))
-OK 2 - \v((a)(b))
-OK 0 - \v(a)|(b)
-OK 1 - \v(a)|(b)
-OK 2 - \v(a)|(b)
-OK 0 - \v(a*)+
-OK 1 - \v(a*)+
-OK 2 - \v(a*)+
-OK 0 - x
-OK 1 - x
-OK 2 - x
-OK 0 - ab
-OK 1 - ab
-OK 2 - ab
-OK 0 - ab
-OK 1 - ab
-OK 2 - ab
-OK 0 - ab
-OK 1 - ab
-OK 2 - ab
-OK 0 - x*
-OK 1 - x*
-OK 2 - x*
-OK 0 - x*
-OK 1 - x*
-OK 2 - x*
-OK 0 - x*
-OK 1 - x*
-OK 2 - x*
-OK 0 - x\+
-OK 1 - x\+
-OK 2 - x\+
-OK 0 - x\+
-OK 1 - x\+
-OK 2 - x\+
-OK 0 - x\+
-OK 1 - x\+
-OK 2 - x\+
-OK 0 - x\+
-OK 1 - x\+
-OK 2 - x\+
-OK 0 - x\=
-OK 1 - x\=
-OK 2 - x\=
-OK 0 - x\=
-OK 1 - x\=
-OK 2 - x\=
-OK 0 - x\=
-OK 1 - x\=
-OK 2 - x\=
-OK 0 - x\?
-OK 1 - x\?
-OK 2 - x\?
-OK 0 - x\?
-OK 1 - x\?
-OK 2 - x\?
-OK 0 - x\?
-OK 1 - x\?
-OK 2 - x\?
-OK 0 - a\{0,0}
-OK 1 - a\{0,0}
-OK 2 - a\{0,0}
-OK 0 - a\{0,1}
-OK 1 - a\{0,1}
-OK 2 - a\{0,1}
-OK 0 - a\{1,0}
-OK 1 - a\{1,0}
-OK 2 - a\{1,0}
-OK 0 - a\{3,6}
-OK 1 - a\{3,6}
-OK 2 - a\{3,6}
-OK 0 - a\{3,6}
-OK 1 - a\{3,6}
-OK 2 - a\{3,6}
-OK 0 - a\{3,6}
-OK 1 - a\{3,6}
-OK 2 - a\{3,6}
-OK 0 - a\{0}
-OK 1 - a\{0}
-OK 2 - a\{0}
-OK 0 - a\{2}
-OK 1 - a\{2}
-OK 2 - a\{2}
-OK 0 - a\{2}
-OK 1 - a\{2}
-OK 2 - a\{2}
-OK 0 - a\{2}
-OK 1 - a\{2}
-OK 2 - a\{2}
-OK 0 - a\{0,}
-OK 1 - a\{0,}
-OK 2 - a\{0,}
-OK 0 - a\{0,}
-OK 1 - a\{0,}
-OK 2 - a\{0,}
-OK 0 - a\{2,}
-OK 1 - a\{2,}
-OK 2 - a\{2,}
-OK 0 - a\{2,}
-OK 1 - a\{2,}
-OK 2 - a\{2,}
-OK 0 - a\{5,}
-OK 1 - a\{5,}
-OK 2 - a\{5,}
-OK 0 - a\{5,}
-OK 1 - a\{5,}
-OK 2 - a\{5,}
-OK 0 - a\{,0}
-OK 1 - a\{,0}
-OK 2 - a\{,0}
-OK 0 - a\{,5}
-OK 1 - a\{,5}
-OK 2 - a\{,5}
-OK 0 - a\{,5}
-OK 1 - a\{,5}
-OK 2 - a\{,5}
-OK 0 - ^*\{4,}$
-OK 1 - ^*\{4,}$
-OK 2 - ^*\{4,}$
-OK 0 - ^*\{4,}$
-OK 1 - ^*\{4,}$
-OK 2 - ^*\{4,}$
-OK 0 - ^*\{4,}$
-OK 1 - ^*\{4,}$
-OK 2 - ^*\{4,}$
-OK 0 - a\{}
-OK 1 - a\{}
-OK 2 - a\{}
-OK 0 - a\{}
-OK 1 - a\{}
-OK 2 - a\{}
-OK 0 - a\{-0,0}
-OK 1 - a\{-0,0}
-OK 2 - a\{-0,0}
-OK 0 - a\{-0,1}
-OK 1 - a\{-0,1}
-OK 2 - a\{-0,1}
-OK 0 - a\{-3,6}
-OK 1 - a\{-3,6}
-OK 2 - a\{-3,6}
-OK 0 - a\{-3,6}
-OK 1 - a\{-3,6}
-OK 2 - a\{-3,6}
-OK 0 - a\{-3,6}
-OK 1 - a\{-3,6}
-OK 2 - a\{-3,6}
-OK 0 - a\{-0}
-OK 1 - a\{-0}
-OK 2 - a\{-0}
-OK 0 - a\{-2}
-OK 1 - a\{-2}
-OK 2 - a\{-2}
-OK 0 - a\{-2}
-OK 1 - a\{-2}
-OK 2 - a\{-2}
-OK 0 - a\{-0,}
-OK 1 - a\{-0,}
-OK 2 - a\{-0,}
-OK 0 - a\{-0,}
-OK 1 - a\{-0,}
-OK 2 - a\{-0,}
-OK 0 - a\{-2,}
-OK 1 - a\{-2,}
-OK 2 - a\{-2,}
-OK 0 - a\{-2,}
-OK 1 - a\{-2,}
-OK 2 - a\{-2,}
-OK 0 - a\{-,0}
-OK 1 - a\{-,0}
-OK 2 - a\{-,0}
-OK 0 - a\{-,5}
-OK 1 - a\{-,5}
-OK 2 - a\{-,5}
-OK 0 - a\{-,5}
-OK 1 - a\{-,5}
-OK 2 - a\{-,5}
-OK 0 - a\{-}
-OK 1 - a\{-}
-OK 2 - a\{-}
-OK 0 - a\{-}
-OK 1 - a\{-}
-OK 2 - a\{-}
-OK 0 - \(abc\)*
-OK 1 - \(abc\)*
-OK 2 - \(abc\)*
-OK 0 - \(ab\)\+
-OK 1 - \(ab\)\+
-OK 2 - \(ab\)\+
-OK 0 - \(abaaaaa\)*cd
-OK 1 - \(abaaaaa\)*cd
-OK 2 - \(abaaaaa\)*cd
-OK 0 - \(test1\)\? \(test2\)\?
-OK 1 - \(test1\)\? \(test2\)\?
-OK 2 - \(test1\)\? \(test2\)\?
-OK 0 - \(test1\)\= \(test2\) \(test4443\)\=
-OK 1 - \(test1\)\= \(test2\) \(test4443\)\=
-OK 2 - \(test1\)\= \(test2\) \(test4443\)\=
-OK 0 - \(\(sub1\) hello \(sub 2\)\)
-OK 1 - \(\(sub1\) hello \(sub 2\)\)
-OK 2 - \(\(sub1\) hello \(sub 2\)\)
-OK 0 - \(\(\(yyxxzz\)\)\)
-OK 1 - \(\(\(yyxxzz\)\)\)
-OK 2 - \(\(\(yyxxzz\)\)\)
-OK 0 - \v((ab)+|c+)+
-OK 1 - \v((ab)+|c+)+
-OK 2 - \v((ab)+|c+)+
-OK 0 - \v((ab)|c*)+
-OK 1 - \v((ab)|c*)+
-OK 2 - \v((ab)|c*)+
-OK 0 - \v(a(c*)+b)+
-OK 1 - \v(a(c*)+b)+
-OK 2 - \v(a(c*)+b)+
-OK 0 - \v(a|b*)+
-OK 1 - \v(a|b*)+
-OK 2 - \v(a|b*)+
-OK 0 - \p*
-OK 1 - \p*
-OK 2 - \p*
-OK 0 - a\{-2,7}
-OK 1 - a\{-2,7}
-OK 2 - a\{-2,7}
-OK 0 - a\{-2,7}x
-OK 1 - a\{-2,7}x
-OK 2 - a\{-2,7}x
-OK 0 - a\{2,7}
-OK 1 - a\{2,7}
-OK 2 - a\{2,7}
-OK 0 - a\{2,7}x
-OK 1 - a\{2,7}x
-OK 2 - a\{2,7}x
-OK 0 - \vx(.{-,8})yz(.*)
-OK 1 - \vx(.{-,8})yz(.*)
-OK 2 - \vx(.{-,8})yz(.*)
-OK 0 - \vx(.*)yz(.*)
-OK 1 - \vx(.*)yz(.*)
-OK 2 - \vx(.*)yz(.*)
-OK 0 - \v(a{1,2}){-2,3}
-OK 1 - \v(a{1,2}){-2,3}
-OK 2 - \v(a{1,2}){-2,3}
-OK 0 - \v(a{-1,3})+
-OK 1 - \v(a{-1,3})+
-OK 2 - \v(a{-1,3})+
-OK 0 - \d\+e\d\d
-OK 1 - \d\+e\d\d
-OK 2 - \d\+e\d\d
-OK 0 - \v[a]
-OK 1 - \v[a]
-OK 2 - \v[a]
-OK 0 - a[bcd]
-OK 1 - a[bcd]
-OK 2 - a[bcd]
-OK 0 - a[b-d]
-OK 1 - a[b-d]
-OK 2 - a[b-d]
-OK 0 - [a-d][e-f][x-x]d
-OK 1 - [a-d][e-f][x-x]d
-OK 2 - [a-d][e-f][x-x]d
-OK 0 - \v[[:alpha:]]+
-OK 1 - \v[[:alpha:]]+
-OK 2 - \v[[:alpha:]]+
-OK 0 - [[:alpha:]\+]
-OK 1 - [[:alpha:]\+]
-OK 2 - [[:alpha:]\+]
-OK 0 - [^abc]\+
-OK 1 - [^abc]\+
-OK 2 - [^abc]\+
-OK 0 - [^abc]
-OK 1 - [^abc]
-OK 2 - [^abc]
-OK 0 - [^abc]\+
-OK 1 - [^abc]\+
-OK 2 - [^abc]\+
-OK 0 - [^a-d]\+
-OK 1 - [^a-d]\+
-OK 2 - [^a-d]\+
-OK 0 - [a-f]*
-OK 1 - [a-f]*
-OK 2 - [a-f]*
-OK 0 - [a-f]*
-OK 1 - [a-f]*
-OK 2 - [a-f]*
-OK 0 - [^a-f]\+
-OK 1 - [^a-f]\+
-OK 2 - [^a-f]\+
-OK 0 - [a-c]\{-3,6}
-OK 1 - [a-c]\{-3,6}
-OK 2 - [a-c]\{-3,6}
-OK 0 - [^[:alpha:]]\+
-OK 1 - [^[:alpha:]]\+
-OK 2 - [^[:alpha:]]\+
-OK 0 - [-a]
-OK 1 - [-a]
-OK 2 - [-a]
-OK 0 - [a-]
-OK 1 - [a-]
-OK 2 - [a-]
-OK 0 - [a-f]*\c
-OK 1 - [a-f]*\c
-OK 2 - [a-f]*\c
-OK 0 - [abc][xyz]\c
-OK 1 - [abc][xyz]\c
-OK 2 - [abc][xyz]\c
-OK 0 - [-./[:alnum:]_~]\+
-OK 1 - [-./[:alnum:]_~]\+
-OK 2 - [-./[:alnum:]_~]\+
-OK 0 - [\]\^\-\\]\+
-OK 1 - [\]\^\-\\]\+
-OK 2 - [\]\^\-\\]\+
-OK 0 - [[.a.]]\+
-OK 1 - [[.a.]]\+
-OK 2 - [[.a.]]\+
-OK 0 - abc[0-9]*ddd
-OK 1 - abc[0-9]*ddd
-OK 2 - abc[0-9]*ddd
-OK 0 - abc[0-9]*ddd
-OK 1 - abc[0-9]*ddd
-OK 2 - abc[0-9]*ddd
-OK 0 - \_[0-9]\+
-OK 1 - \_[0-9]\+
-OK 2 - \_[0-9]\+
-OK 0 - [0-9\n]\+
-OK 1 - [0-9\n]\+
-OK 2 - [0-9\n]\+
-OK 0 - \_[0-9]\+
-OK 1 - \_[0-9]\+
-OK 2 - \_[0-9]\+
-OK 0 - \_f
-OK 1 - \_f
-OK 2 - \_f
-OK 0 - \_f\+
-OK 1 - \_f\+
-OK 2 - \_f\+
-OK 0 - [0-9A-Za-z-_.]\+
-OK 1 - [0-9A-Za-z-_.]\+
-OK 2 - [0-9A-Za-z-_.]\+
-OK 0 - ^a.
-OK 1 - ^a.
-OK 2 - ^a.
-OK 0 - ^a.
-OK 1 - ^a.
-OK 2 - ^a.
-OK 0 - .a$
-OK 1 - .a$
-OK 2 - .a$
-OK 0 - .a$
-OK 1 - .a$
-OK 2 - .a$
-OK 0 - \%^a.
-OK 1 - \%^a.
-OK 2 - \%^a.
-OK 0 - \%^a
-OK 1 - \%^a
-OK 2 - \%^a
-OK 0 - .a\%$
-OK 1 - .a\%$
-OK 2 - .a\%$
-OK 0 - .a\%$
-OK 1 - .a\%$
-OK 2 - .a\%$
-OK 0 - [0-7]\+
-OK 1 - [0-7]\+
-OK 2 - [0-7]\+
-OK 0 - [^0-7]\+
-OK 1 - [^0-7]\+
-OK 2 - [^0-7]\+
-OK 0 - [0-9]\+
-OK 1 - [0-9]\+
-OK 2 - [0-9]\+
-OK 0 - [^0-9]\+
-OK 1 - [^0-9]\+
-OK 2 - [^0-9]\+
-OK 0 - [0-9a-fA-F]\+
-OK 1 - [0-9a-fA-F]\+
-OK 2 - [0-9a-fA-F]\+
-OK 0 - [^0-9A-Fa-f]\+
-OK 1 - [^0-9A-Fa-f]\+
-OK 2 - [^0-9A-Fa-f]\+
-OK 0 - [a-z_A-Z0-9]\+
-OK 1 - [a-z_A-Z0-9]\+
-OK 2 - [a-z_A-Z0-9]\+
-OK 0 - [^a-z_A-Z0-9]\+
-OK 1 - [^a-z_A-Z0-9]\+
-OK 2 - [^a-z_A-Z0-9]\+
-OK 0 - [a-z_A-Z]\+
-OK 1 - [a-z_A-Z]\+
-OK 2 - [a-z_A-Z]\+
-OK 0 - [^a-z_A-Z]\+
-OK 1 - [^a-z_A-Z]\+
-OK 2 - [^a-z_A-Z]\+
-OK 0 - [a-z]\+
-OK 1 - [a-z]\+
-OK 2 - [a-z]\+
-OK 0 - [a-z]\+
-OK 1 - [a-z]\+
-OK 2 - [a-z]\+
-OK 0 - [^a-z]\+
-OK 1 - [^a-z]\+
-OK 2 - [^a-z]\+
-OK 0 - [^a-z]\+
-OK 1 - [^a-z]\+
-OK 2 - [^a-z]\+
-OK 0 - [a-zA-Z]\+
-OK 1 - [a-zA-Z]\+
-OK 2 - [a-zA-Z]\+
-OK 0 - [^a-zA-Z]\+
-OK 1 - [^a-zA-Z]\+
-OK 2 - [^a-zA-Z]\+
-OK 0 - [A-Z]\+
-OK 1 - [A-Z]\+
-OK 2 - [A-Z]\+
-OK 0 - [^A-Z]\+
-OK 1 - [^A-Z]\+
-OK 2 - [^A-Z]\+
-OK 0 - [a-z]\+\c
-OK 1 - [a-z]\+\c
-OK 2 - [a-z]\+\c
-OK 0 - [A-Z]\+\c
-OK 1 - [A-Z]\+\c
-OK 2 - [A-Z]\+\c
-OK 0 - \c[^a-z]\+
-OK 1 - \c[^a-z]\+
-OK 2 - \c[^a-z]\+
-OK 0 - \c[^A-Z]\+
-OK 1 - \c[^A-Z]\+
-OK 2 - \c[^A-Z]\+
-OK 0 - \C[^A-Z]\+
-OK 1 - \C[^A-Z]\+
-OK 2 - \C[^A-Z]\+
-OK 0 - xx \ze test
-OK 1 - xx \ze test
-OK 2 - xx \ze test
-OK 0 - abc\zeend
-OK 1 - abc\zeend
-OK 2 - abc\zeend
-OK 0 - aa\zebb\|aaxx
-OK 1 - aa\zebb\|aaxx
-OK 2 - aa\zebb\|aaxx
-OK 0 - aa\zebb\|aaxx
-OK 1 - aa\zebb\|aaxx
-OK 2 - aa\zebb\|aaxx
-OK 0 - aabb\|aa\zebb
-OK 1 - aabb\|aa\zebb
-OK 2 - aabb\|aa\zebb
-OK 0 - aa\zebb\|aaebb
-OK 1 - aa\zebb\|aaebb
-OK 2 - aa\zebb\|aaebb
-OK 0 - abc\zsdd
-OK 1 - abc\zsdd
-OK 2 - abc\zsdd
-OK 0 - aa \zsax
-OK 1 - aa \zsax
-OK 2 - aa \zsax
-OK 0 - abc \zsmatch\ze abc
-OK 1 - abc \zsmatch\ze abc
-OK 2 - abc \zsmatch\ze abc
-OK 0 - \v(a \zsif .*){2}
-OK 1 - \v(a \zsif .*){2}
-OK 2 - \v(a \zsif .*){2}
-OK 0 - \>\zs.
-OK 1 - \>\zs.
-OK 2 - \>\zs.
-OK 0 - \s\+\ze\[/\|\s\zs\s\+
-OK 1 - \s\+\ze\[/\|\s\zs\s\+
-OK 2 - \s\+\ze\[/\|\s\zs\s\+
-OK 0 - abc\@=
-OK 1 - abc\@=
-OK 2 - abc\@=
-OK 0 - abc\@=cd
-OK 1 - abc\@=cd
-OK 2 - abc\@=cd
-OK 0 - abc\@=
-OK 1 - abc\@=
-OK 2 - abc\@=
-OK 0 - abcd\@=e
-OK 1 - abcd\@=e
-OK 2 - abcd\@=e
-OK 0 - abcd\@=e
-OK 1 - abcd\@=e
-OK 2 - abcd\@=e
-OK 0 - \v(abc)@=..
-OK 1 - \v(abc)@=..
-OK 2 - \v(abc)@=..
-OK 0 - \(.*John\)\@=.*Bob
-OK 1 - \(.*John\)\@=.*Bob
-OK 2 - \(.*John\)\@=.*Bob
-OK 0 - \(John.*\)\@=.*Bob
-OK 1 - \(John.*\)\@=.*Bob
-OK 2 - \(John.*\)\@=.*Bob
-OK 0 - \<\S\+\())\)\@=
-OK 1 - \<\S\+\())\)\@=
-OK 2 - \<\S\+\())\)\@=
-OK 0 - .*John\&.*Bob
-OK 1 - .*John\&.*Bob
-OK 2 - .*John\&.*Bob
-OK 0 - .*John\&.*Bob
-OK 1 - .*John\&.*Bob
-OK 2 - .*John\&.*Bob
-OK 0 - \v(test1)@=.*yep
-OK 1 - \v(test1)@=.*yep
-OK 2 - \v(test1)@=.*yep
-OK 0 - foo\(bar\)\@!
-OK 1 - foo\(bar\)\@!
-OK 2 - foo\(bar\)\@!
-OK 0 - foo\(bar\)\@!
-OK 1 - foo\(bar\)\@!
-OK 2 - foo\(bar\)\@!
-OK 0 - if \(\(then\)\@!.\)*$
-OK 1 - if \(\(then\)\@!.\)*$
-OK 2 - if \(\(then\)\@!.\)*$
-OK 0 - if \(\(then\)\@!.\)*$
-OK 1 - if \(\(then\)\@!.\)*$
-OK 2 - if \(\(then\)\@!.\)*$
-OK 0 - \(foo\)\@!bar
-OK 1 - \(foo\)\@!bar
-OK 2 - \(foo\)\@!bar
-OK 0 - \(foo\)\@!...bar
-OK 1 - \(foo\)\@!...bar
-OK 2 - \(foo\)\@!...bar
-OK 0 - ^\%(.*bar\)\@!.*\zsfoo
-OK 1 - ^\%(.*bar\)\@!.*\zsfoo
-OK 2 - ^\%(.*bar\)\@!.*\zsfoo
-OK 0 - ^\%(.*bar\)\@!.*\zsfoo
-OK 1 - ^\%(.*bar\)\@!.*\zsfoo
-OK 2 - ^\%(.*bar\)\@!.*\zsfoo
-OK 0 - ^\%(.*bar\)\@!.*\zsfoo
-OK 1 - ^\%(.*bar\)\@!.*\zsfoo
-OK 2 - ^\%(.*bar\)\@!.*\zsfoo
-OK 0 - [ ]\@!\p\%([ ]\@!\p\)*:
-OK 1 - [ ]\@!\p\%([ ]\@!\p\)*:
-OK 2 - [ ]\@!\p\%([ ]\@!\p\)*:
-OK 0 - [ ]\@!\p\([ ]\@!\p\)*:
-OK 1 - [ ]\@!\p\([ ]\@!\p\)*:
-OK 2 - [ ]\@!\p\([ ]\@!\p\)*:
-OK 0 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
-OK 1 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
-OK 2 - m\k\+_\@=\%(_\@!\k\)\@<=\k\+e
-OK 0 - \%(\U\@<=S\k*\|S\l\)R
-OK 1 - \%(\U\@<=S\k*\|S\l\)R
-OK 2 - \%(\U\@<=S\k*\|S\l\)R
-OK 0 - [[:alpha:]]\{-2,6}
-OK 1 - [[:alpha:]]\{-2,6}
-OK 2 - [[:alpha:]]\{-2,6}
-OK 0 -
-OK 1 -
-OK 2 -
-OK 0 - \v(())
-OK 1 - \v(())
-OK 2 - \v(())
-OK 0 - \v%(ab(xyz)c)
-OK 1 - \v%(ab(xyz)c)
-OK 2 - \v%(ab(xyz)c)
-OK 0 - \v(test|)empty
-OK 1 - \v(test|)empty
-OK 2 - \v(test|)empty
-OK 0 - \v(a|aa)(a|aa)
-OK 1 - \v(a|aa)(a|aa)
-OK 2 - \v(a|aa)(a|aa)
-OK 0 - \%d32
-OK 1 - \%d32
-OK 2 - \%d32
-OK 0 - \%o40
-OK 1 - \%o40
-OK 2 - \%o40
-OK 0 - \%x20
-OK 1 - \%x20
-OK 2 - \%x20
-OK 0 - \%u0020
-OK 1 - \%u0020
-OK 2 - \%u0020
-OK 0 - \%U00000020
-OK 1 - \%U00000020
-OK 2 - \%U00000020
-OK 0 - \%d0
-OK 1 - \%d0
-OK 2 - \%d0
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]
-OK 1 - foo\%[bar]
-OK 2 - foo\%[bar]
-OK 0 - foo\%[bar]x
-OK 1 - foo\%[bar]x
-OK 2 - foo\%[bar]x
-OK 0 - foo\%[bar]x
-OK 1 - foo\%[bar]x
-OK 2 - foo\%[bar]x
-OK 0 - \%[bar]x
-OK 1 - \%[bar]x
-OK 2 - \%[bar]x
-OK 0 - \%[bar]x
-OK 1 - \%[bar]x
-OK 2 - \%[bar]x
-OK 0 - \%[bar]x
-OK 1 - \%[bar]x
-OK 2 - \%[bar]x
-OK 0 - b\%[[ao]r]
-OK 1 - b\%[[ao]r]
-OK 2 - b\%[[ao]r]
-OK 0 - b\%[[]]r]
-OK 1 - b\%[[]]r]
-OK 2 - b\%[[]]r]
-OK 0 - @\%[\w\-]*
-OK 1 - @\%[\w\-]*
-OK 2 - @\%[\w\-]*
-OK 0 - goo\|go
-OK 1 - goo\|go
-OK 2 - goo\|go
-OK 0 - \<goo\|\<go
-OK 1 - \<goo\|\<go
-OK 2 - \<goo\|\<go
-OK 0 - \<goo\|go
-OK 1 - \<goo\|go
-OK 2 - \<goo\|go
-OK 0 - \(\i\+\) \1
-OK 1 - \(\i\+\) \1
-OK 2 - \(\i\+\) \1
-OK 0 - \(\i\+\) \1
-OK 1 - \(\i\+\) \1
-OK 2 - \(\i\+\) \1
-OK 0 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
-OK 1 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
-OK 2 - \(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9
-OK 0 - \(\d*\)a \1b
-OK 1 - \(\d*\)a \1b
-OK 2 - \(\d*\)a \1b
-OK 0 - ^.\(.\).\_..\1.
-OK 1 - ^.\(.\).\_..\1.
-OK 2 - ^.\(.\).\_..\1.
-OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<!$
-OK 0 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
-OK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
-OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<=$
-OK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
-OK 1 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
-OK 2 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
-OK 0 - ^\(a*\)\1$
-OK 1 - ^\(a*\)\1$
-OK 2 - ^\(a*\)\1$
-OK 0 - <\@<=span.
-OK 1 - <\@<=span.
-OK 2 - <\@<=span.
-OK 0 - <\@1<=span.
-OK 1 - <\@1<=span.
-OK 2 - <\@1<=span.
-OK 0 - <\@2<=span.
-OK 1 - <\@2<=span.
-OK 2 - <\@2<=span.
-OK 0 - \(<<\)\@<=span.
-OK 1 - \(<<\)\@<=span.
-OK 2 - \(<<\)\@<=span.
-OK 0 - \(<<\)\@1<=span.
-OK 1 - \(<<\)\@1<=span.
-OK 2 - \(<<\)\@1<=span.
-OK 0 - \(<<\)\@2<=span.
-OK 1 - \(<<\)\@2<=span.
-OK 2 - \(<<\)\@2<=span.
-OK 0 - \(foo\)\@<!bar.
-OK 1 - \(foo\)\@<!bar.
-OK 2 - \(foo\)\@<!bar.
-OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
-OK 0 - \(foo\)\@<=\>
-OK 1 - \(foo\)\@<=\>
-OK 2 - \(foo\)\@<=\>
-OK 0 - \(foo\)\@<=\>
-OK 1 - \(foo\)\@<=\>
-OK 2 - \(foo\)\@<=\>
-OK 0 - \(foo\)\@<=.*
-OK 1 - \(foo\)\@<=.*
-OK 2 - \(foo\)\@<=.*
-OK 0 - \(r\@<=\|\w\@<!\)\/
-OK 1 - \(r\@<=\|\w\@<!\)\/
-OK 2 - \(r\@<=\|\w\@<!\)\/
-OK 0 - ^[a-z]\+\ze \&\(asdf\)\@<!
-OK 1 - ^[a-z]\+\ze \&\(asdf\)\@<!
-OK 2 - ^[a-z]\+\ze \&\(asdf\)\@<!
-OK 0 - \(a*\)\@>a
-OK 1 - \(a*\)\@>a
-OK 2 - \(a*\)\@>a
-OK 0 - \(a*\)\@>b
-OK 1 - \(a*\)\@>b
-OK 2 - \(a*\)\@>b
-OK 0 - ^\(.\{-}b\)\@>.
-OK 1 - ^\(.\{-}b\)\@>.
-OK 2 - ^\(.\{-}b\)\@>.
-OK 0 - \(.\{-}\)\(\)\@>$
-OK 1 - \(.\{-}\)\(\)\@>$
-OK 2 - \(.\{-}\)\(\)\@>$
-OK 0 - \(a*\)\@>a\|a\+
-OK 2 - \(a*\)\@>a\|a\+
-OK 0 - \_[^8-9]\+
-OK 1 - \_[^8-9]\+
-OK 2 - \_[^8-9]\+
-OK 0 - \_[^a]\+
-OK 1 - \_[^a]\+
-OK 2 - \_[^a]\+
-OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
-OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
-OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
-OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
-OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
-OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
-multi-line tests
-OK 0 - ^.\(.\).\_..\1.
-OK 1 - ^.\(.\).\_..\1.
-OK 2 - ^.\(.\).\_..\1.
-OK 0 - \v.*\/(.*)\n.*\/\1$
-OK 1 - \v.*\/(.*)\n.*\/\1$
-OK 2 - \v.*\/(.*)\n.*\/\1$
-OK 0 - \S.*\nx
-OK 1 - \S.*\nx
-OK 2 - \S.*\nx
-OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
-OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
-OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
-OK 0 - a\n^b$\n^c
-OK 1 - a\n^b$\n^c
-OK 2 - a\n^b$\n^c
-OK 0 - \(^.\+\n\)\1
-OK 1 - \(^.\+\n\)\1
-OK 2 - \(^.\+\n\)\1
-
-<T="5">Ta 5</Title>
-<T="7">Ac 7</Title>
-
-xxstart3
-
-thexE thE thExethe
-AndAxAnd AndAxAnd
-oooxOfOr fOrOxooo
-oooxOfOr fOrOxooo
-
-asdfhereasdf
-asdfagainasdf
-
--0-
-ffo
-bob
-__ooooo
-koooo__
-moooooo
- f__
-ab!babababababfoo
-ba!ab##abab?bafoo
-**!*****_
--1-
-ffo
-bob
-__ooooo
-koooo__
-moooooo
- f__
-ab!babababababfoo
-ba!ab##abab?bafoo
-**!*****_
--2-
-ffo
-bob
-__ooooo
-koooo__
-moooooo
- f__
-ab!babababababfoo
-ba!ab##abab?bafoo
-**!*****_
-Test
-Test END
-EN
-E
diff --git a/src/testdir/test65.in b/src/testdir/test65.in
deleted file mode 100644
index ca53f27555..0000000000
--- a/src/testdir/test65.in
+++ /dev/null
@@ -1,95 +0,0 @@
-Test for floating point and logical operators.
-
-STARTTEST
-:so small.vim
-:if !has("float")
-: e! test.ok
-: wq! test.out
-:endif
-:"
-:$put =printf('%f', 123.456)
-:$put =printf('%e', 123.456)
-:$put =printf('%g', 123.456)
-:" check we don't crash on division by zero
-:echo 1.0 / 0.0
-:$put ='+='
-:let v = 1.234
-:let v += 6.543
-:$put =printf('%g', v)
-:let v = 1.234
-:let v += 5
-:$put =printf('%g', v)
-:let a = 5
-:let a += 3.333
-:$put =string(a)
-:$put ='=='
-:let v = 1.234
-:$put =v == 1.234
-:$put =v == 1.2341
-:$put ='add-subtract'
-:$put =printf('%g', 4 + 1.234)
-:$put =printf('%g', 1.234 - 8)
-:$put ='mult-div'
-:$put =printf('%g', 4 * 1.234)
-:$put =printf('%g', 4.0 / 1234)
-:$put ='dict'
-:$put =string({'x': 1.234, 'y': -2.0e20})
-:$put ='list'
-:$put =string([-123.4, 2.0e-20])
-:$put ='abs'
-:$put =printf('%d', abs(1456))
-:$put =printf('%d', abs(-4))
-:$put =printf('%d', abs([1, 2, 3]))
-:$put =printf('%g', abs(14.56))
-:$put =printf('%g', abs(-54.32))
-:$put ='ceil'
-:$put =printf('%g', ceil(1.456))
-:$put =printf('%g', ceil(-5.456))
-:$put =printf('%g', ceil(-4.000))
-:$put ='floor'
-:$put =printf('%g', floor(1.856))
-:$put =printf('%g', floor(-5.456))
-:$put =printf('%g', floor(4.0))
-:$put ='log10'
-:$put =printf('%g', log10(1000))
-:$put =printf('%g', log10(0.01000))
-:$put ='pow'
-:$put =printf('%g', pow(3, 3.0))
-:$put =printf('%g', pow(2, 16))
-:$put ='round'
-:$put =printf('%g', round(0.456))
-:$put =printf('%g', round(4.5))
-:$put =printf('%g', round(-4.50))
-:$put ='sqrt'
-:$put =printf('%g', sqrt(100))
-:echo sqrt(-4.01)
-:$put ='str2float'
-:$put =printf('%g', str2float('1e40'))
-:$put ='trunc'
-:$put =printf('%g', trunc(1.456))
-:$put =printf('%g', trunc(-5.456))
-:$put =printf('%g', trunc(4.000))
-:$put ='float2nr'
-:$put =float2nr(123.456)
-:$put =float2nr(-123.456)
-:$put ='AND'
-:$put =and(127, 127)
-:$put =and(127, 16)
-:$put =and(127, 128)
-:$put ='OR'
-:$put =or(16, 7)
-:$put =or(8, 7)
-:$put =or(0, 123)
-:$put ='XOR'
-:$put =xor(127, 127)
-:$put =xor(127, 16)
-:$put =xor(127, 128)
-:$put ='invert'
-:$put =and(invert(127), 65535)
-:$put =and(invert(16), 65535)
-:$put =and(invert(128), 65535)
-:$put =invert(1.0)
-:/^Results/,$wq! test.out
-ENDTEST
-
-Results of test65:
diff --git a/src/testdir/test65.ok b/src/testdir/test65.ok
deleted file mode 100644
index 7aac326058..0000000000
--- a/src/testdir/test65.ok
+++ /dev/null
@@ -1,73 +0,0 @@
-Results of test65:
-123.456000
-1.234560e+02
-123.456
-+=
-7.777
-6.234
-8.333
-==
-1
-0
-add-subtract
-5.234
--6.766
-mult-div
-4.936
-0.003241
-dict
-{'x': 1.234, 'y': -2.0e20}
-list
-[-123.4, 2.0e-20]
-abs
-1456
-4
--1
-14.56
-54.32
-ceil
-2.0
--5.0
--4.0
-floor
-1.0
--6.0
-4.0
-log10
-3.0
--2.0
-pow
-27.0
-65536.0
-round
-0.0
-5.0
--5.0
-sqrt
-10.0
-str2float
-1.0e40
-trunc
-1.0
--5.0
-4.0
-float2nr
-123
--123
-AND
-127
-16
-0
-OR
-23
-15
-123
-XOR
-0
-111
-255
-invert
-65408
-65519
-65407
-0
diff --git a/src/testdir/test66.in b/src/testdir/test66.in
deleted file mode 100644
index f1fdce3792..0000000000
--- a/src/testdir/test66.in
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Test for visual block shift and tab characters.
-
-STARTTEST
-:so small.vim
-/^one
-fe4jRugvr1:'<,'>w! test.out
-/^abcdefgh
-4jI j<<11|D
-7|a 
-7|a 
-7|a 4k13|4j<
-:$-5,$w >> test.out
-:$-4,$s/\s\+//g
-4kI j<<
-7|a 
-7|a 
-7|a 4k13|4j3<
-:$-4,$w >> test.out
-:qa!
-ENDTEST
-
-one two three
-one two three
-one two three
-one two three
-one two three
-
-abcdefghijklmnopqrstuvwxyz
-abcdefghijklmnopqrstuvwxyz
-abcdefghijklmnopqrstuvwxyz
-abcdefghijklmnopqrstuvwxyz
-abcdefghijklmnopqrstuvwxyz
diff --git a/src/testdir/test66.ok b/src/testdir/test66.ok
deleted file mode 100644
index 4c3ab0fb56..0000000000
--- a/src/testdir/test66.ok
+++ /dev/null
@@ -1,16 +0,0 @@
-on1 two three
-on1 two three
-on1 two three
-on1 two three
-on1 two three
-
- abcdefghijklmnopqrstuvwxyz
-abcdefghij
- abc defghijklmnopqrstuvwxyz
- abc defghijklmnopqrstuvwxyz
- abc defghijklmnopqrstuvwxyz
- abcdefghijklmnopqrstuvwxyz
-abcdefghij
- abc defghijklmnopqrstuvwxyz
- abc defghijklmnopqrstuvwxyz
- abc defghijklmnopqrstuvwxyz
diff --git a/src/testdir/test67.in b/src/testdir/test67.in
deleted file mode 100644
index 08b4e3701f..0000000000
--- a/src/testdir/test67.in
+++ /dev/null
@@ -1,33 +0,0 @@
-Test that groups and patterns are tested correctly when calling exists() for
-autocommands.
-
-STARTTEST
-:so small.vim
-:let results=[]
-:augroup auexists
-:augroup END
-:call add(results, "##BufEnter: " . exists("##BufEnter"))
-:call add(results, "#BufEnter: " . exists("#BufEnter"))
-:au BufEnter * let g:entered=1
-:call add(results, "#BufEnter: " . exists("#BufEnter"))
-:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
-:augroup auexists
-:au BufEnter * let g:entered=1
-:augroup END
-:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
-:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
-:au BufEnter *.test let g:entered=1
-:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
-:edit testfile.test
-:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
-:au BufEnter <buffer> let g:entered=1
-:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
-:edit testfile2.test
-:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
-:e test.out
-:call append(0, results)
-:$d
-:w
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test67.ok b/src/testdir/test67.ok
deleted file mode 100644
index 51188e5afd..0000000000
--- a/src/testdir/test67.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-##BufEnter: 1
-#BufEnter: 0
-#BufEnter: 1
-#auexists#BufEnter: 0
-#auexists#BufEnter: 1
-#BufEnter#*.test: 0
-#BufEnter#*.test: 1
-#BufEnter#<buffer>: 0
-#BufEnter#<buffer>: 1
-#BufEnter#<buffer>: 0
diff --git a/src/testdir/test68.in b/src/testdir/test68.in
deleted file mode 100644
index ceaf9af1ab..0000000000
--- a/src/testdir/test68.in
+++ /dev/null
@@ -1,131 +0,0 @@
-Test for text formatting.
-
-Results of test68:
-
-STARTTEST
-:so small.vim
-/^{/+1
-:set noai tw=2 fo=t
-gRa b
-ENDTEST
-
-{
-
-
-}
-
-STARTTEST
-/^{/+1
-:set ai tw=2 fo=tw
-gqgqjjllab
-ENDTEST
-
-{
-a b
-
-a
-}
-
-STARTTEST
-/^{/+1
-:set tw=3 fo=t
-gqgqo
-a 
-ENDTEST
-
-{
-a 
-}
-
-STARTTEST
-/^{/+1
-:set tw=2 fo=tcq1 comments=:#
-gqgqjgqgqo
-a b
-#a b
-ENDTEST
-
-{
-a b
-#a b
-}
-
-STARTTEST
-/^{/+1
-:set tw=5 fo=tcn comments=:#
-A bjA b
-ENDTEST
-
-{
- 1 a
-# 1 a
-}
-
-STARTTEST
-/^{/+3
-:set tw=5 fo=t2a si
-i A_
-ENDTEST
-
-{
-
- x a
- b
- c
-
-}
-
-STARTTEST
-/^{/+1
-:set tw=5 fo=qn comments=:#
-gwap
-ENDTEST
-
-{
-# 1 a b
-}
-
-STARTTEST
-/^{/+1
-:set tw=5 fo=q2 comments=:#
-gwap
-ENDTEST
-
-{
-# x
-# a b
-}
-
-STARTTEST
-/^{/+2
-:set tw& fo=a
-I^^
-ENDTEST
-
-{
- 1aa
- 2bb
-}
-
-STARTTEST
-/mno pqr/
-:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
-A vwx yz
-ENDTEST
-
-/* abc def ghi jkl
- * mno pqr stu
- */
-
-STARTTEST
-/^#/
-:setl tw=12 fo=tqnc comments=:#
-A foobar
-ENDTEST
-
-# 1 xxxxx
-
-STARTTEST
-:g/^STARTTEST/.,/^ENDTEST/d
-:1;/^Results/,$wq! test.out
-ENDTEST
diff --git a/src/testdir/test68.ok b/src/testdir/test68.ok
deleted file mode 100644
index b3726a0a27..0000000000
--- a/src/testdir/test68.ok
+++ /dev/null
@@ -1,77 +0,0 @@
-Results of test68:
-
-
-{
-a
-b
-}
-
-
-{
-a
-b
-
-a
-b
-}
-
-
-{
-a
-
-
-a
-
-}
-
-
-{
-a b
-#a b
-
-a b
-#a b
-}
-
-
-{
- 1 a
- b
-# 1 a
-# b
-}
-
-
-{
-
- x a
- b_
- c
-
-}
-
-
-{
-# 1 a
-# b
-}
-
-
-{
-# x a
-# b
-}
-
-
-{ 1aa ^^2bb }
-
-
-/* abc def ghi jkl
- * mno pqr stu
- * vwx yz
- */
-
-
-# 1 xxxxx
-# foobar
-
diff --git a/src/testdir/test69.in b/src/testdir/test69.in
deleted file mode 100644
index 75317b4954..0000000000
--- a/src/testdir/test69.in
+++ /dev/null
@@ -1,185 +0,0 @@
-Test for multi-byte text formatting.
-Also test, that 'mps' with multibyte chars works.
-And test "ra" on multi-byte characters.
-Also test byteidx() and byteidxcomp()
-
-STARTTEST
-:so mbyte.vim
-:set encoding=utf-8
-ENDTEST
-
-Results of test69:
-
-STARTTEST
-/^{/+1
-:set tw=2 fo=t
-gqgqjgqgqo
-XYZ
-abc XYZ
-ENDTEST
-
-{
-XYZ
-abc XYZ
-}
-
-STARTTEST
-/^{/+1
-:set tw=1 fo=tm
-gqgqjgqgqjgqgqjgqgqjgqgqo
-X
-Xa
-X a
-XY
-X Y
-ENDTEST
-
-{
-X
-Xa
-X a
-XY
-X Y
-}
-
-STARTTEST
-/^{/+1
-:set tw=2 fo=tm
-gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
-X
-Xa
-X a
-XY
-X Y
-aX
-abX
-abcX
-abX c
-abXY
-ENDTEST
-
-{
-X
-Xa
-X a
-XY
-X Y
-aX
-abX
-abcX
-abX c
-abXY
-}
-
-STARTTEST
-/^{/+1
-:set ai tw=2 fo=tm
-gqgqjgqgqo
-X
-Xa
-ENDTEST
-
-{
- X
- Xa
-}
-
-STARTTEST
-/^{/+1
-:set noai tw=2 fo=tm
-gqgqjgqgqo
- X
- Xa
-ENDTEST
-
-{
- X
- Xa
-}
-
-STARTTEST
-/^{/+1
-:set tw=2 fo=cqm comments=n:X
-gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
-X
-Xa
-XaY
-XY
-XYZ
-X Y
-X YZ
-XX
-XXa
-XXY
-ENDTEST
-
-{
-X
-Xa
-XaY
-XY
-XYZ
-X Y
-X YZ
-XX
-XXa
-XXY
-}
-
-STARTTEST
-/^{/+1
-:set tw=2 fo=tm
-RXa
-ENDTEST
-
-{
-
-}
-
-STARTTEST
-/^{/+1
-:set mps+=u2018:u2019
-d%
-ENDTEST
-
-{
-‘ two three ’ four
-}
-STARTTEST
-/^ra test
-jVjra
-ENDTEST
-
-ra test
-abba
-aab
-
-STARTTEST
-:set whichwrap+=h
-/^x
-dh
-:set whichwrap-=h
-ENDTEST
-
-x
-
-STARTTEST
-:let a = '.é.' " one char of two bytes
-:let b = '.é.' " normal e with composing char
-/^byteidx
-:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidx(a, 4)])
-:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidx(b, 4)])
-/^byteidxcomp
-:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcomp(a, 3), byteidxcomp(a, 4)])
-:let b = '.é.'
-:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcomp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
-ENDTEST
-
-byteidx
-byteidxcomp
-
-STARTTEST
-:g/^STARTTEST/.,/^ENDTEST/d
-:1;/^Results/,$wq! test.out
-ENDTEST
diff --git a/src/testdir/test69.ok b/src/testdir/test69.ok
deleted file mode 100644
index 41cd9d02c3..0000000000
--- a/src/testdir/test69.ok
+++ /dev/null
@@ -1,162 +0,0 @@
-Results of test69:
-
-
-{
-XYZ
-abc
-XYZ
-
-XYZ
-abc
-XYZ
-}
-
-
-{
-X
-X
-a
-X
-a
-X
-Y
-X
-Y
-
-X
-X
-a
-X
-a
-X
-Y
-X
-Y
-}
-
-
-{
-X
-X
-a
-X
-a
-X
-Y
-X
-Y
-a
-X
-ab
-X
-abc
-X
-ab
-X
-c
-ab
-X
-Y
-
-X
-X
-a
-X
-a
-X
-Y
-X
-Y
-a
-X
-ab
-X
-abc
-X
-ab
-X
-c
-ab
-X
-Y
-}
-
-
-{
- X
- X
- a
-
- X
- X
- a
-}
-
-
-{
- X
- X
-a
-
- X
- X
-a
-}
-
-
-{
-X
-Xa
-Xa
-XY
-XY
-XY
-XZ
-X Y
-X Y
-X Z
-XX
-XXa
-XXY
-
-X
-Xa
-Xa
-XY
-XY
-XY
-XZ
-X Y
-X Y
-X Z
-XX
-XXa
-XXY
-}
-
-
-{
-X
-a
-}
-
-
-{
- four
-}
-
-ra test
-aaaa
-aaa
-
-
-áx
-
-
-byteidx
-[0, 1, 3, 4, -1]
-[0, 1, 4, 5, -1]
-byteidxcomp
-[0, 1, 3, 4, -1]
-[0, 1, 2, 4, 5, -1]
-
diff --git a/src/testdir/test7.in b/src/testdir/test7.in
deleted file mode 100644
index b9cc0585f6..0000000000
--- a/src/testdir/test7.in
+++ /dev/null
@@ -1,26 +0,0 @@
-Test for autocommand that changes the buffer list, when doing ":ball".
-
-STARTTEST
-:so small.vim
-/^start of
-A1:.,/end of/w! Xxx1 " write test file Xxx1
-:sp Xxx1
-:close
-$r2:.,/end of/w! Xxx2 " write test file Xxx2
-:sp Xxx2
-:close
-$r3:.,/end of/w! Xxx3 " write test file Xxx3
-:sp Xxx3
-:close
-:au BufReadPost Xxx2 bwipe
-$r4:ball " open window for all args, close Xxx2
-:.,$w! test.out " Write contents of this file
-:w >>test.out " Append contents of second window (Xxx1)
-:/^start of/,$w >>test.out " Append contents of last window (this file)
-:qa!
-ENDTEST
-
-start of test file Xxx
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test7.ok b/src/testdir/test7.ok
deleted file mode 100644
index a0d1ff94a3..0000000000
--- a/src/testdir/test7.ok
+++ /dev/null
@@ -1,12 +0,0 @@
-start of test file Xxx4
- this is a test
- this is a test
-end of test file Xxx
-start of test file Xxx1
- this is a test
- this is a test
-end of test file Xxx
-start of test file Xxx4
- this is a test
- this is a test
-end of test file Xxx
diff --git a/src/testdir/test70.in b/src/testdir/test70.in
deleted file mode 100644
index 9fbe818b3d..0000000000
--- a/src/testdir/test70.in
+++ /dev/null
@@ -1,63 +0,0 @@
-Smoke test for MzScheme interface and mzeval() function
-
-STARTTEST
-:so mzscheme.vim
-:set nocompatible viminfo+=nviminfo
-:function! MzRequire()
-:redir => l:mzversion
-:mz (version)
-:redir END
-:if strpart(l:mzversion, 1, 1) < "4"
-:" MzScheme versions < 4.x:
-:mz (require (prefix vim- vimext))
-:else
-:" newer versions:
-:mz (require (prefix-in vim- 'vimext))
-:mz (require r5rs)
-:endif
-:endfunction
-:silent call MzRequire()
-:mz (define l '("item0" "dictionary with list OK" "item2"))
-:mz (define h (make-hash))
-:mz (hash-set! h "list" l)
-/^1
-:" change buffer contents
-:mz (vim-set-buff-line (vim-eval "line('.')") "1 changed line 1")
-:" scalar test
-:let tmp_string = mzeval('"string"')
-:let tmp_1000 = mzeval('1000')
-:if tmp_string . tmp_1000 == "string1000"
-:let scalar_res = "OK"
-:else
-:let scalar_res = "FAILED"
-:endif
-:call append(search("^1"), "scalar test " . scalar_res)
-:" dictionary containing a list
-:let tmp = mzeval("h")["list"][1]
-:/^2/put =tmp
-:" circular list (at the same time test lists containing lists)
-:mz (set-car! (cddr l) l)
-:let l2 = mzeval("h")["list"]
-:if l2[2] == l2
-:let res = "OK"
-:else
-:let res = "FAILED: " . l2[2]
-:endif
-:call setline(search("^3"), "circular test " . res)
-:" funcrefs
-:mz (define vim:max (vim-eval "function('max')"))
-:mz (define m (vim:max '(1 100 8)))
-:let m = mzeval('m')
-:if m == 100
-:let fref_res = "OK"
-:else
-:let fref_res = "FAILED: " . m
-:end
-:call append(line('$'), 'funcrefs '. fref_res)
-:?^1?,$w! test.out
-:qa!
-ENDTEST
-
-1 line 1
-2 line 2
-3 line 3
diff --git a/src/testdir/test70.ok b/src/testdir/test70.ok
deleted file mode 100644
index 9c82a86f2d..0000000000
--- a/src/testdir/test70.ok
+++ /dev/null
@@ -1,6 +0,0 @@
-1 changed line 1
-scalar test OK
-2 line 2
-dictionary with list OK
-circular test OK
-funcrefs OK
diff --git a/src/testdir/test71.in b/src/testdir/test71.in
deleted file mode 100644
index 155fd413bc..0000000000
--- a/src/testdir/test71.in
+++ /dev/null
@@ -1,67 +0,0 @@
-Test for encryption.
-The test data is in another file to avoid problems with 'encoding', especially
-cp932.
-
-STARTTEST
-:so small.vim
-:set enc=latin1
-:bwipe!
-:r test71a.in
-:/^start of text/+1
-:let text_lines = getline('.', line('.') + 2)
-:/^start of cm=zip bytes/+1
-:let cm0_bytes = getline('.', '.')
-:/^start of cm=blowfish bytes/+1
-:let cm1_bytes = getline('.', '.')
-:bwipe!
-:call append(0, text_lines)
-:$d
-:X
-foobar
-foobar
-:w! Xtestfile
-:bwipe!
-:e Xtestfile
-foobar
-:let cm0_read_back = getline('.', '$')
-:set key=
-:set cryptmethod=blowfish
-:" If the blowfish test fails 'cryptmethod' will be 'zip' now.
-:%s/^/\=&cryptmethod == 'blowfish' ? "OK " : "blowfish test failed "/
-:X
-barfoo
-barfoo
-:w! Xtestfile
-:bwipe!
-:e Xtestfile
-barfoo
-:let cm1_read_back = getline('.', '$')
-:bwipe!
-:set bin noeol key=
-:call append(0, cm0_bytes)
-:$d
-:set fenc=latin1
-:w! Xtestfile
-:bwipe!
-:set nobin
-:e Xtestfile
-foofoo
-:let cm0_read_bin = getline('.', '$')
-:bwipe!
-:set bin noeol key=
-:call append(0, cm1_bytes)
-:$d
-:set fenc=latin1
-:w! Xtestfile
-:bwipe!
-:set nobin
-:e Xtestfile
-barbar
-:call append(0, cm0_read_bin)
-:call append(0, cm1_read_back)
-:call append(0, cm0_read_back)
-:set key= fenc=latin1
-:w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test71.ok b/src/testdir/test71.ok
deleted file mode 100644
index 24652c4380..0000000000
--- a/src/testdir/test71.ok
+++ /dev/null
@@ -1,10 +0,0 @@
-01234567890123456789012345678901234567
-line 2 foo bar blah
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-OK 01234567890123456789012345678901234567
-OK line 2 foo bar blah
-OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-1234567890
-abbccddeff
-asdfasdfasdf
-0001112223333
diff --git a/src/testdir/test71a.in b/src/testdir/test71a.in
deleted file mode 100644
index 85bd22cd01..0000000000
--- a/src/testdir/test71a.in
+++ /dev/null
@@ -1,14 +0,0 @@
-
-start of text
-01234567890123456789012345678901234567
-line 2 foo bar blah
-line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-end of text
-
-start of cm=zip bytes
-VimCrypt~01!lV'}MgVE#32U
-end of cm=zip bytes
-
-start of cm=blowfish bytes
-VimCrypt~02!k)#S=#MJAͥM!
-end of cm=blowfish bytes
diff --git a/src/testdir/test72.in b/src/testdir/test72.in
deleted file mode 100644
index 220adad67a..0000000000
--- a/src/testdir/test72.in
+++ /dev/null
@@ -1,115 +0,0 @@
-Tests for undo file.
-Since this script is sourced we need to explicitly break changes up in
-undo-able pieces. Do that by setting 'undolevels'.
-
-STARTTEST
-:so small.vim
-:"
-:" Test 'undofile': first a simple one-line change.
-:set nocompatible viminfo+=nviminfo visualbell
-:set ul=100 undofile nomore
-:e! Xtestfile
-ggdGithis is one line:set ul=100
-:s/one/ONE/
-:set ul=100
-:w
-:bwipe!
-:e Xtestfile
-u:.w! test.out
-:"
-:" Test 'undofile', change in original file fails check
-:set noundofile
-:e! Xtestfile
-:s/line/Line/
-:w
-:set undofile
-:bwipe!
-:e Xtestfile
-:" TODO: this beeps
-u:.w >>test.out
-:"
-:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
-:set undofile
-ggdGione
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten:set ul=100
-3Gdd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-:w
-:bwipe!
-:e Xtestfile
-uuu:w >>test.out
-:"
-:" Test that reading the undofiles when setting undofile works
-:set noundofile ul=0
-i
-u:e! Xtestfile
-:set undofile ul=100
-uuuuuu:w >>test.out
-:" And now with encryption, cryptmethod=zip
-:e! Xtestfile
-:set undofile cm=zip
-ggdGimonday
-tuesday
-wednesday
-thursday
-friday:set ul=100
-kkkdd:set ul=100
-dd:set ul=100
-dd:set ul=100
-:X
-foobar
-foobar
-:w!
-:bwipe!
-:e Xtestfile
-foobar
-:set key=
-uu:w >>test.out
-:"
-:"
-:" With encryption, cryptmethod=blowfish
-:e! Xtestfile
-:set undofile cm=blowfish
-ggdGijan
-feb
-mar
-apr
-jun:set ul=100
-kk0ifoo :set ul=100
-dd:set ul=100
-ibar :set ul=100
-:X
-foobar
-foobar
-:w!
-:bwipe!
-:e Xtestfile
-foobar
-:set key=
-/bar
-:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-:"
-:" Rename the undo file so that it gets cleaned up.
-:call rename(".Xtestfile.un~", "Xtestundo")
-:qa!
-ENDTEST
-
-1111 -----
-2222 -----
-
-123456789
diff --git a/src/testdir/test72.ok b/src/testdir/test72.ok
deleted file mode 100644
index bb267d0d8b..0000000000
--- a/src/testdir/test72.ok
+++ /dev/null
@@ -1,27 +0,0 @@
-this is one line
-this is ONE Line
-one
-two
-six
-seven
-eight
-nine
-ten
-one
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten
-monday
-wednesday
-thursday
-friday
-bar apr
-apr
-foo mar
-mar
diff --git a/src/testdir/test73.in b/src/testdir/test73.in
deleted file mode 100644
index 666e4d2e50..0000000000
--- a/src/testdir/test73.in
+++ /dev/null
@@ -1,176 +0,0 @@
-Tests for find completion.
-
-STARTTEST
-:so small.vim
-:" Do all test in a separate window to avoid E211 when we recursively
-:" delete the Xfind directory during cleanup
-:"
-:" This will cause a few errors, do it silently.
-:set visualbell
-:set nocp viminfo+=nviminfo
-:"
-:function! DeleteDirectory(dir)
-: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
-: exec "silent !rmdir /Q /S " . a:dir
-: else
-: exec "silent !rm -rf " . a:dir
-: endif
-:endfun
-:" On windows a stale "Xfind" directory may exist, remove it so that
-:" we start from a clean state.
-:call DeleteDirectory("Xfind")
-:new
-:let cwd=getcwd()
-:let test_out = cwd . '/test.out'
-:call mkdir('Xfind')
-:cd Xfind
-:set path=
-:find
-:exec "w! " . test_out
-:close
-:new
-:set path=.
-:find
-:exec "w >>" . test_out
-:close
-:new
-:set path=.,,
-:find
-:exec "w >>" . test_out
-:close
-:new
-:set path=./**
-:find
-:exec "w >>" . test_out
-:close
-:new
-:" We shouldn't find any file at this point, test.out must be empty.
-:call mkdir('in')
-:cd in
-:call mkdir('path')
-:exec "cd " . cwd
-:e Xfind/file.txt
-SHoly Grail:w
-:e Xfind/in/file.txt
-SJimmy Hoffa:w
-:e Xfind/in/stuff.txt
-SAnother Holy Grail:w
-:e Xfind/in/path/file.txt
-SE.T.:w
-:set path=Xfind/**
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:" Rerun the previous three find completions, using fullpath in 'path'
-:exec "set path=" . cwd . "/Xfind/**"
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:" Same steps again, using relative and fullpath items that point to the same
-:" recursive location.
-:" This is to test that there are no duplicates in the completion list.
-:exec "set path+=Xfind/**"
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:find file
-:exec "w >>" . test_out
-:find file
-:" Test find completion for directory of current buffer, which at this point
-:" is Xfind/in/file.txt.
-:set path=.
-:find st
-:exec "w >>" . test_out
-:" Test find completion for empty path item ",," which is the current directory
-:cd Xfind
-:set path=,,
-:find f
-:exec "w >>" . test_out
-:" Test shortening of
-:"
-:" foo/x/bar/voyager.txt
-:" foo/y/bar/voyager.txt
-:"
-:" When current directory is above foo/ they should be shortened to (in order
-:" of appearance):
-:"
-:" x/bar/voyager.txt
-:" y/bar/voyager.txt
-:call mkdir('foo')
-:cd foo
-:call mkdir('x')
-:call mkdir('y')
-:cd x
-:call mkdir('bar')
-:cd ..
-:cd y
-:call mkdir('bar')
-:cd ..
-:cd ..
-:" We should now be in the Xfind directory
-:e foo/x/bar/voyager.txt
-SVoyager 1:w
-:e foo/y/bar/voyager.txt
-SVoyager 2:w
-:exec "set path=" . cwd . "/Xfind/**"
-:find voyager
-:exec "w >>" . test_out
-:find voyager
-:exec "w >>" . test_out
-:"
-:" When current directory is .../foo/y/bar they should be shortened to (in
-:" order of appearance):
-:"
-:" ./voyager.txt
-:" x/bar/voyager.txt
-:cd foo
-:cd y
-:cd bar
-:find voyager
-:exec "w >> " . test_out
-:find voyager
-:exec "w >> " . test_out
-:" Check the opposite too:
-:cd ..
-:cd ..
-:cd x
-:cd bar
-:find voyager
-:exec "w >> " . test_out
-:find voyager
-:exec "w >> " . test_out
-:" Check for correct handling of shorten_fname()'s behavior on windows
-:exec "cd " . cwd . "/Xfind/in"
-:find file
-:exec "w >>" . test_out
-:" Test for relative to current buffer 'path' item
-:exec "cd " . cwd . "/Xfind/"
-:set path=./path
-:" Open the file where Jimmy Hoffa is found
-:e in/file.txt
-:" Find the file containing 'E.T.' in the Xfind/in/path directory
-:find file
-:exec "w >>" . test_out
-:"
-:" Test that completion works when path=.,,
-:"
-:set path=.,,
-:" Open Jimmy Hoffa file
-:e in/file.txt
-:exec "w >>" . test_out
-:" Search for the file containing Holy Grail in same directory as in/path.txt
-:find stu
-:exec "w >>" . test_out
-:q
-:exec "cd " . cwd
-:call DeleteDirectory("Xfind")
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test73.ok b/src/testdir/test73.ok
deleted file mode 100644
index 90efab756f..0000000000
--- a/src/testdir/test73.ok
+++ /dev/null
@@ -1,21 +0,0 @@
-Holy Grail
-Jimmy Hoffa
-E.T.
-Holy Grail
-Jimmy Hoffa
-E.T.
-Holy Grail
-Jimmy Hoffa
-E.T.
-Another Holy Grail
-Holy Grail
-Voyager 1
-Voyager 2
-Voyager 2
-Voyager 1
-Voyager 1
-Voyager 2
-Jimmy Hoffa
-E.T.
-Jimmy Hoffa
-Another Holy Grail
diff --git a/src/testdir/test74.in b/src/testdir/test74.in
deleted file mode 100644
index 4fbe5e4d01..0000000000
--- a/src/testdir/test74.in
+++ /dev/null
@@ -1,36 +0,0 @@
-" Tests for storing global variables in the .viminfo file vim: set ft=vim:
-
-STARTTEST
-:so small.vim
-:" Do all test in a separate window to avoid E211 when we recursively
-:" delete the Xfind directory during cleanup
-:"
-:" This will cause a few errors, do it silently.
-:set visualbell
-:set nocp viminfo+=!,nviminfo
-:let MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000}
-:" store a really long list, so line wrapping will occur in viminfo file
-:let MY_GLOBAL_LIST=range(1,100)
-:wv! Xviminfo
-:unlet MY_GLOBAL_DICT
-:unlet MY_GLOBAL_LIST
-:rv! Xviminfo
-:call delete('Xviminfo')
-:if exists("MY_GLOBAL_DICT")
-:redir >> test.out
-:echo MY_GLOBAL_DICT
-:redir end
-:endif
-:if exists("MY_GLOBAL_LIST")
-:redir >> test.out
-:echo MY_GLOBAL_LIST
-:redir end
-:endif
-:redir >> test.out
-:echo "foobar"
-:redir end
-:endif
-:qa!
-ENDTEST
-
-eof
diff --git a/src/testdir/test74.ok b/src/testdir/test74.ok
deleted file mode 100644
index b026c33c35..0000000000
--- a/src/testdir/test74.ok
+++ /dev/null
@@ -1,5 +0,0 @@
-
-{'foo': 1, 'longvarible': 1000, 'bar': 0}
-[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
-
-foobar
diff --git a/src/testdir/test75.in b/src/testdir/test75.in
deleted file mode 100644
index b7f2783f54..0000000000
--- a/src/testdir/test75.in
+++ /dev/null
@@ -1,41 +0,0 @@
-Tests for maparg().
-Also test utf8 map with a 0x80 byte.
-
-STARTTEST
-:so small.vim
-:so mbyte.vim
-:set cpo-=<
-:set encoding=utf8
-:" Test maparg() with a string result
-:map foo<C-V> is<F4>foo
-:vnoremap <script> <buffer> <expr> <silent> bar isbar
-:call append('$', maparg('foo<C-V>'))
-:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
-:call append('$', string(maparg('bar', '', 0, 1)))
-:map <buffer> <nowait> foo bar
-:call append('$', string(maparg('foo', '', 0, 1)))
-:"
-:map abc x<char-114>x
-:call append('$', maparg('abc'))
-:map abc y<S-char-114>y
-:call append('$', maparg('abc'))
-:"
-Go:"
-:" Outside of the range, minimum
-:inoremap <Char-0x1040> a
-:call feedkeys("a\u1040\<Esc>")
-:" Inside of the range, minimum
-:inoremap <Char-0x103f> b
-:call feedkeys("a\u103f\<Esc>")
-:" Inside of the range, maximum
-:inoremap <Char-0xf03f> c
-:call feedkeys("a\uf03f\<Esc>")
-:" Outside of the range, maximum
-:inoremap <Char-0xf040> d
-:call feedkeys("a\uf040\<Esc>")
-:"
-:/^eof/+1,$w! test.out
-:qa!
-ENDTEST
-
-eof
diff --git a/src/testdir/test75.ok b/src/testdir/test75.ok
deleted file mode 100644
index a2c5c5ac3d..0000000000
--- a/src/testdir/test75.ok
+++ /dev/null
@@ -1,7 +0,0 @@
-is<F4>foo
-{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
-{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, 'sid': 0, 'rhs': 'isbar', 'buffer': 1}
-{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs': 'bar', 'buffer': 1}
-xrx
-yRy
-abcd
diff --git a/src/testdir/test76.in b/src/testdir/test76.in
deleted file mode 100644
index db7ebe2169..0000000000
--- a/src/testdir/test76.in
+++ /dev/null
@@ -1,46 +0,0 @@
-Tests for completefunc/omnifunc. vim: set ft=vim :
-
-STARTTEST
-:"Test that nothing happens if the 'completefunc' opens
-:"a new window (no completion, no crash)
-:so small.vim
-:function! DummyCompleteOne(findstart, base)
-: if a:findstart
-: return 0
-: else
-: wincmd n
-: return ['onedef', 'oneDEF']
-: endif
-:endfunction
-:setlocal completefunc=DummyCompleteOne
-/^one
-A:q!
-:function! DummyCompleteTwo(findstart, base)
-: if a:findstart
-: wincmd n
-: return 0
-: else
-: return ['twodef', 'twoDEF']
-: endif
-:endfunction
-:setlocal completefunc=DummyCompleteTwo
-/^two
-A:q!
-:"Test that 'completefunc' works when it's OK.
-:function! DummyCompleteThree(findstart, base)
-: if a:findstart
-: return 0
-: else
-: return ['threedef', 'threeDEF']
-: endif
-:endfunction
-:setlocal completefunc=DummyCompleteThree
-/^three
-A:/^+++/,/^three/w! test.out
-:qa!
-ENDTEST
-
-+++
-one
-two
-three
diff --git a/src/testdir/test76.ok b/src/testdir/test76.ok
deleted file mode 100644
index 2a70acbade..0000000000
--- a/src/testdir/test76.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-+++
-
-two
-threeDEF
diff --git a/src/testdir/test77.in b/src/testdir/test77.in
deleted file mode 100644
index 0dbc4fcbaf..0000000000
--- a/src/testdir/test77.in
+++ /dev/null
@@ -1,30 +0,0 @@
-Inserts 2 million lines with consecutive integers starting from 1
-(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
-and writes its cksum to test.out.
-
-We need 2 million lines to trigger a call to mf_hash_grow(). If it would mess
-up the lines the checksum would differ.
-
-cksum is part of POSIX and so should be available on most Unixes.
-If it isn't available then the test will be skipped.
-
-STARTTEST
-:so small.vim
-:if !executable("cksum")
-: e! test.ok
-: w! test.out
-: qa!
-:endif
-:set fileformat=unix undolevels=-1
-ggdG
-:let i = 1
-:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
-ggdd
-:w! Xtest
-:r !cksum Xtest
-:s/\s/ /g
-:set fileformat&
-:.w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test77.ok b/src/testdir/test77.ok
deleted file mode 100644
index 11f148c73f..0000000000
--- a/src/testdir/test77.ok
+++ /dev/null
@@ -1 +0,0 @@
-3678979763 14888896 Xtest
diff --git a/src/testdir/test78.in b/src/testdir/test78.in
deleted file mode 100644
index 1850bd9236..0000000000
--- a/src/testdir/test78.in
+++ /dev/null
@@ -1,46 +0,0 @@
-Inserts 10000 lines with text to fill the swap file with two levels of pointer
-blocks. Then recovers from the swap file and checks all text is restored.
-
-We need about 10000 lines of 100 characters to get two levels of pointer
-blocks.
-
-STARTTEST
-:so small.vim
-:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
-:e! Xtest
-ggdG
-:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoparstuvwxyz0123456789"
-:let i = 1
-:let linecount = 10000
-:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
-:preserve
-:" get the name of the swap file
-:redir => swapname
-:swapname
-:redir END
-:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\1', '')
-:" make a copy of the swap file in Xswap
-:set bin
-:exe 'sp ' . swapname
-:w! Xswap
-:echo swapname
-:set nobin
-:new
-:only!
-:bwipe! Xtest
-:call rename('Xswap', swapname)
-:recover Xtest
-:call delete(swapname)
-:new
-:call append(0, 'recovery start')
-:wincmd w
-:let linedollar = line('$')
-:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif
-:let i = 1
-:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
-:q!
-:call append(line('$'), 'recovery end')
-:w! test.out
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test78.ok b/src/testdir/test78.ok
deleted file mode 100644
index 6c3ecefe3c..0000000000
--- a/src/testdir/test78.ok
+++ /dev/null
@@ -1,3 +0,0 @@
-recovery start
-
-recovery end
diff --git a/src/testdir/test79.in b/src/testdir/test79.in
deleted file mode 100644
index 8278bd8000..0000000000
--- a/src/testdir/test79.in
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test79.ok b/src/testdir/test79.ok
deleted file mode 100644
index e22eee0b71..0000000000
--- a/src/testdir/test79.ok
+++ /dev/null
Binary files differ
diff --git a/src/testdir/test8.in b/src/testdir/test8.in
deleted file mode 100644
index d9d00d97ae..0000000000
--- a/src/testdir/test8.in
+++ /dev/null
@@ -1,46 +0,0 @@
-Test for BufWritePre autocommand that deletes or unloads the buffer.
-Test for BufUnload autocommand that unloads all other buffers.
-
-STARTTEST
-:so small.vim
-:au BufWritePre Xxx1 bunload
-:au BufWritePre Xxx2 bwipe
-/^start of
-A1:.,/end of/w! Xxx1 " write test file Xxx1
-$r2:.,/end of/w! Xxx2 " write test file Xxx2
-:e! Xxx2 " edit Xxx2
-:bdel test8.in " delete this file from the buffer list
-:e Xxx1 " edit Xxx1
-:w " write it, will unload it and give an error msg
-:w! test.out " Write contents of this file
-:e! Xxx2 " start editing Xxx2
-:bwipe test.out " remove test.out from the buffer list
-:w " write it, will delete the buffer and give an error msg
-:w >>test.out " Append contents of this file
-:au! BufWritePre
-:func CloseAll()
- let i = 0
- while i <= bufnr('$')
- if i != bufnr('%') && bufloaded(i)
- exe i . "bunload"
- endif
- let i += 1
- endwhile
-endfunc
-:func WriteToOut()
- edit! test.out
- $put ='VimLeave done'
- write
-endfunc
-:set viminfo='100,nviminfo
-:au BufUnload * call CloseAll()
-:au VimLeave * call WriteToOut()
-:e small.vim
-:sp mbyte.vim
-:q
-:qa!
-ENDTEST
-
-start of Xxx
- test
-end of Xxx
diff --git a/src/testdir/test8.ok b/src/testdir/test8.ok
deleted file mode 100644
index adecb2f4be..0000000000
--- a/src/testdir/test8.ok
+++ /dev/null
@@ -1,7 +0,0 @@
-start of Xxx2
- test
-end of Xxx
-start of Xxx1
- test
-end of Xxx
-VimLeave done
diff --git a/src/testdir/test80.in b/src/testdir/test80.in
deleted file mode 100644
index 406fb6dac7..0000000000
--- a/src/testdir/test80.in
+++ /dev/null
@@ -1,201 +0,0 @@
-Test for *sub-replace-special* and *sub-replace-expression* on substitue().
-Test for submatch() on substitue().
-Test for *:s%* on :substitute.
-
-STARTTEST
-:so small.vim
-ENDTEST
-
-TEST_1:
-
-STARTTEST
-:set magic
-:set cpo&
-:$put =\"\n\nTEST_1:\"
-:$put =substitute('A', 'A', '&&', '')
-:$put =substitute('B', 'B', '\&', '')
-:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\4\3\2\1', '')
-:$put =substitute('D', 'D', 'd', '')
-:$put =substitute('E', 'E', '~', '')
-:$put =substitute('F', 'F', '\~', '')
-:$put =substitute('G', 'G', '\ugg', '')
-:$put =substitute('H', 'H', '\Uh\Eh', '')
-:$put =substitute('I', 'I', '\lII', '')
-:$put =substitute('J', 'J', '\LJ\EJ', '')
-:$put =substitute('K', 'K', '\Uk\ek', '')
-:$put =substitute('lLl', 'L', ' ', '')
-:$put =substitute('mMm', 'M', '\r', '')
-:$put =substitute('nNn', 'N', '\ ', '')
-:$put =substitute('oOo', 'O', '\n', '')
-:$put =substitute('pPp', 'P', '\b', '')
-:$put =substitute('qQq', 'Q', '\t', '')
-:$put =substitute('rRr', 'R', '\\', '')
-:$put =substitute('sSs', 'S', '\c', '')
-:$put =substitute('uUu', 'U', \"\n\", '')
-:$put =substitute('vVv', 'V', \"\b\", '')
-:$put =substitute('wWw', 'W', \"\\\", '')
-:$put =substitute('xXx', 'X', \"\r\", '')
-:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
-:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
-/^TEST_2
-ENDTEST
-
-TEST_2:
-
-STARTTEST
-:set nomagic
-:set cpo&
-:$put =\"\n\nTEST_2:\"
-:$put =substitute('A', 'A', '&&', '')
-:$put =substitute('B', 'B', '\&', '')
-:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\4\3\2\1', '')
-:$put =substitute('D', 'D', 'd', '')
-:$put =substitute('E', 'E', '~', '')
-:$put =substitute('F', 'F', '\~', '')
-:$put =substitute('G', 'G', '\ugg', '')
-:$put =substitute('H', 'H', '\Uh\Eh', '')
-:$put =substitute('I', 'I', '\lII', '')
-:$put =substitute('J', 'J', '\LJ\EJ', '')
-:$put =substitute('K', 'K', '\Uk\ek', '')
-:$put =substitute('lLl', 'L', ' ', '')
-:$put =substitute('mMm', 'M', '\r', '')
-:$put =substitute('nNn', 'N', '\ ', '')
-:$put =substitute('oOo', 'O', '\n', '')
-:$put =substitute('pPp', 'P', '\b', '')
-:$put =substitute('qQq', 'Q', '\t', '')
-:$put =substitute('rRr', 'R', '\\', '')
-:$put =substitute('sSs', 'S', '\c', '')
-:$put =substitute('tTt', 'T', \"\r\", '')
-:$put =substitute('uUu', 'U', \"\n\", '')
-:$put =substitute('vVv', 'V', \"\b\", '')
-:$put =substitute('wWw', 'W', \"\\\", '')
-:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
-:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
-/^TEST_3
-ENDTEST
-
-TEST_3:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_3:\"
-:let y = substitute('aAa', 'A', '\="\\"', '') | $put =y
-:let y = substitute('bBb', 'B', '\="\\\\"', '') | $put =y
-:let y = substitute('cCc', 'C', '\=" "', '') | $put =y
-:let y = substitute('dDd', 'D', '\="\\ "', '') | $put =y
-:let y = substitute('eEe', 'E', '\="\\\\ "', '') | $put =y
-:let y = substitute('fFf', 'F', '\="\\r"', '') | $put =y
-:let y = substitute('jJj', 'J', '\="\\n"', '') | $put =y
-:let y = substitute('kKk', 'K', '\="\r"', '') | $put =y
-:let y = substitute('lLl', 'L', '\="\n"', '') | $put =y
-/^TEST_4
-ENDTEST
-
-TEST_4:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_4:\"
-:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '') | $put =y
-:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '') | $put =y
-:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", " ", "")', '') | $put =y
-:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\ ", "")', '') | $put =y
-:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\ ", "")', '') | $put =y
-:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '') | $put =y
-:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '') | $put =y
-:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '') | $put =y
-:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '') | $put =y
-/^TEST_5
-ENDTEST
-
-TEST_5:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_5:\"
-:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
-:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])', '')
-/^TEST_6
-ENDTEST
-
-TEST_6:
-
-STARTTEST
-:set magic&
-:$put =\"\n\nTEST_6:\"
-:set cpo+=/
-:$put =substitute('A', 'A', 'a', '')
-:$put =substitute('B', 'B', '%', '')
-:set cpo-=/
-:$put =substitute('C', 'C', 'c', '')
-:$put =substitute('D', 'D', '%', '')
-/^TEST_7
-ENDTEST
-
-TEST_7:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_7:\"
-:$put =substitute('A A', 'A.', '\=submatch(0)', '')
-:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
-:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
-:$put =substitute('-bb', '\zeb', 'a', 'g')
-:$put =substitute('-bb', '\ze', 'c', 'g')
-/^TEST_8
-ENDTEST
-
-TEST_8:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_8:\"
-:$put =',,X'
-:s/\(^\|,\)\ze\(,\|X\)/\1N/g
-:$put =',,Y'
-:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
-a:$put =',,Z'
-:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
-yy/^TEST_9:
-ENDTEST
-
-TEST_9:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_9:\"
-:$put ='xxx'
-:s/x/X/gc
-yyq/^TEST_10:
-ENDTEST
-
-TEST_10:
-
-STARTTEST
-:set magic&
-:set cpo&
-:$put =\"\n\nTEST_10:\"
-:let y = substitute('123', '\zs', 'a', 'g') | $put =y
-:let y = substitute('123', '\zs.', 'a', 'g') | $put =y
-:let y = substitute('123', '.\zs', 'a', 'g') | $put =y
-:let y = substitute('123', '\ze', 'a', 'g') | $put =y
-:let y = substitute('123', '\ze.', 'a', 'g') | $put =y
-:let y = substitute('123', '.\ze', 'a', 'g') | $put =y
-:let y = substitute('123', '1\|\ze', 'a', 'g') | $put =y
-:let y = substitute('123', '1\zs\|[23]', 'a', 'g') | $put =y
-/^TEST_11
-ENDTEST
-
-TEST_11:
-
-STARTTEST
-:/^Results/,$wq! test.out
-ENDTEST
-
-Results of test72:
diff --git a/src/testdir/test80.ok b/src/testdir/test80.ok
deleted file mode 100644
index b42f604a07..0000000000
--- a/src/testdir/test80.ok
+++ /dev/null
@@ -1,131 +0,0 @@
-Results of test72:
-
-
-TEST_1:
-AA
-&
-C123456789987654321
-d
-~
-~
-Gg
-Hh
-iI
-jJ
-Kk
-l l
-m m
-n n
-o
-o
-pp
-q q
-r\r
-scs
-u
-u
-vv
-w\w
-x x
-YyyY
-zZZz
-
-
-TEST_2:
-AA
-&
-C123456789987654321
-d
-~
-~
-Gg
-Hh
-iI
-jJ
-Kk
-l l
-m m
-n n
-o
-o
-pp
-q q
-r\r
-scs
-t t
-u
-u
-vv
-w\w
-XxxX
-yYYy
-
-
-TEST_3:
-a\a
-b\\b
-c c
-d\ d
-e\\ e
-f\rf
-j\nj
-k k
-l
-l
-
-
-TEST_4:
-a\a
-b\b
-c c
-d d
-e\ e
-f f
-j
-j
-k k
-l
-l
-
-
-TEST_5:
-A123456789987654321
-[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]
-
-
-TEST_6:
-a
-%
-c
-%
-
-
-TEST_7:
-A A
-B
-B
-['B
-']B
--abab
-c-cbcbc
-
-
-TEST_8:
-N,,NX
-N,,NY
-N,,NZ
-
-
-TEST_9:
-XXx
-
-
-TEST_10:
-a1a2a3a
-aaa
-1a2a3a
-a1a2a3a
-a1a2a3
-aaa
-aa2a3a
-1aaa
diff --git a/src/testdir/test81.in b/src/testdir/test81.in
deleted file mode 100644
index 82a6892a1d..0000000000
--- a/src/testdir/test81.in
+++ /dev/null
@@ -1,22 +0,0 @@
-Test for t movement command and 'cpo-;' setting
-
-STARTTEST
-:set nocompatible viminfo+=nviminfo
-:set cpo-=;
-/firstline/
-j0tt;D
-0fz;D
-$Fy;D
-$Ty;D:set cpo+=;
-j0tt;;D
-$Ty;;D:?firstline?+1,$w! test.out
-:qa!
-ENDTEST
-
-firstline
-aaa two three four
- zzz
-yyy
-bbb yee yoo four
-ccc two three four
-ddd yee yoo four
diff --git a/src/testdir/test81.ok b/src/testdir/test81.ok
deleted file mode 100644
index e9f17dc4f8..0000000000
--- a/src/testdir/test81.ok
+++ /dev/null
@@ -1,6 +0,0 @@
-aaa two
- z
-y
-bbb y
-ccc
-ddd yee y
diff --git a/src/testdir/test82.in b/src/testdir/test82.in
deleted file mode 100644
index 8503f5488f..0000000000
--- a/src/testdir/test82.in
+++ /dev/null
@@ -1,103 +0,0 @@
-Tests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
-Also test "g~ap".
-
-STARTTEST
-:so small.vim
-:if !has("multi_byte")
-: e! test.ok
-: w! test.out
-: qa!
-:endif
-:set enc=utf8
-ggdG
-:
-:function! Ch(a, op, b, expected)
-: if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
-: call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))
-: else
-: let b:passed += 1
-: endif
-:endfunction
-:
-:function! Chk(a, b, result)
-: if a:result == 0
-: call Ch(a:a, '==?', a:b, 1)
-: call Ch(a:a, '!=?', a:b, 0)
-: call Ch(a:a, '<=?', a:b, 1)
-: call Ch(a:a, '>=?', a:b, 1)
-: call Ch(a:a, '<?', a:b, 0)
-: call Ch(a:a, '>?', a:b, 0)
-: elseif a:result > 0
-: call Ch(a:a, '==?', a:b, 0)
-: call Ch(a:a, '!=?', a:b, 1)
-: call Ch(a:a, '<=?', a:b, 0)
-: call Ch(a:a, '>=?', a:b, 1)
-: call Ch(a:a, '<?', a:b, 0)
-: call Ch(a:a, '>?', a:b, 1)
-: else
-: call Ch(a:a, '==?', a:b, 0)
-: call Ch(a:a, '!=?', a:b, 1)
-: call Ch(a:a, '<=?', a:b, 1)
-: call Ch(a:a, '>=?', a:b, 0)
-: call Ch(a:a, '<?', a:b, 1)
-: call Ch(a:a, '>?', a:b, 0)
-: endif
-:endfunction
-:
-:function! Check(a, b, result)
-: call Chk(a:a, a:b, a:result)
-: call Chk(a:b, a:a, -a:result)
-:endfunction
-:
-:function! LT(a, b)
-: call Check(a:a, a:b, -1)
-:endfunction
-:
-:function! GT(a, b)
-: call Check(a:a, a:b, 1)
-:endfunction
-:
-:function! EQ(a, b)
-: call Check(a:a, a:b, 0)
-:endfunction
-:
-:let b:passed=0
-:call EQ('', '')
-:call LT('', 'a')
-:call EQ('abc', 'abc')
-:call EQ('Abc', 'abC')
-:call LT('ab', 'abc')
-:call LT('AB', 'abc')
-:call LT('ab', 'aBc')
-:call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xd0\x95\xd0\xbd')
-:call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd')
-:call EQ('\xe2\x84\xaa', 'k')
-:call LT('\xe2\x84\xaa', 'kkkkkk')
-:call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
-:call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
-:call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6')
-:call EQ('Abc\x80', 'AbC\x80')
-:call LT('Abc\x80', 'AbC\x81')
-:call LT('Abc', 'AbC\x80')
-:call LT('abc\x80DEF', 'abc\x80def') " case folding stops at the first bad character
-:call LT('\xc3XYZ', '\xc3xyz')
-:call EQ('\xef\xbc\xba', '\xef\xbd\x9a') " FF3A (upper), FF5A (lower)
-:call GT('\xef\xbc\xba', '\xef\xbc\xff') " first string is ok and equals \xef\xbd\x9a after folding, second string is illegal and was left unchanged, then the strings were bytewise compared
-:call LT('\xc3', '\xc3\x83')
-:call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
-:for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfor
-:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
-:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw', n)) | endfor
-:call append(0, printf('%d checks passed', b:passed))
-:"
-:" test that g~ap changes one paragraph only.
-:new
-iabcd
-
-defggg0g~ap:let lns = getline(1,3)
-:q!
-:call append(line('$'), lns)
-:"
-:wq! test.out
-ENDTEST
-
diff --git a/src/testdir/test82.ok b/src/testdir/test82.ok
deleted file mode 100644
index 3f1866a0fb..0000000000
--- a/src/testdir/test82.ok
+++ /dev/null
@@ -1,5 +0,0 @@
-3732 checks passed
-
-ABCD
-
-defg
diff --git a/src/testdir/test83-tags2 b/src/testdir/test83-tags2
deleted file mode 100644
index 7f9f21b0eb..0000000000
--- a/src/testdir/test83-tags2
+++ /dev/null
@@ -1,2 +0,0 @@
-!_TAG_FILE_ENCODING cp932 //
-`ab Xtags2.txt /`ab
diff --git a/src/testdir/test83-tags3 b/src/testdir/test83-tags3
deleted file mode 100644
index 0cb6591562..0000000000
--- a/src/testdir/test83-tags3
+++ /dev/null
@@ -1,102 +0,0 @@
-!_TAG_FILE_SORTED 1 //
-!_TAG_FILE_ENCODING cp932 //
-abc1 Xtags3.txt /`ab
-abc2 Xtags3.txt /`ab
-abc3 Xtags3.txt /`ab
-abc4 Xtags3.txt /`ab
-abc5 Xtags3.txt /`ab
-abc6 Xtags3.txt /`ab
-abc7 Xtags3.txt /`ab
-abc8 Xtags3.txt /`ab
-abc9 Xtags3.txt /`ab
-abc10 Xtags3.txt /`ab
-abc11 Xtags3.txt /`ab
-abc12 Xtags3.txt /`ab
-abc13 Xtags3.txt /`ab
-abc14 Xtags3.txt /`ab
-abc15 Xtags3.txt /`ab
-abc16 Xtags3.txt /`ab
-abc17 Xtags3.txt /`ab
-abc18 Xtags3.txt /`ab
-abc19 Xtags3.txt /`ab
-abc20 Xtags3.txt /`ab
-abc21 Xtags3.txt /`ab
-abc22 Xtags3.txt /`ab
-abc23 Xtags3.txt /`ab
-abc24 Xtags3.txt /`ab
-abc25 Xtags3.txt /`ab
-abc26 Xtags3.txt /`ab
-abc27 Xtags3.txt /`ab
-abc28 Xtags3.txt /`ab
-abc29 Xtags3.txt /`ab
-abc30 Xtags3.txt /`ab
-abc31 Xtags3.txt /`ab
-abc32 Xtags3.txt /`ab
-abc33 Xtags3.txt /`ab
-abc34 Xtags3.txt /`ab
-abc35 Xtags3.txt /`ab
-abc36 Xtags3.txt /`ab
-abc37 Xtags3.txt /`ab
-abc38 Xtags3.txt /`ab
-abc39 Xtags3.txt /`ab
-abc40 Xtags3.txt /`ab
-abc41 Xtags3.txt /`ab
-abc42 Xtags3.txt /`ab
-abc43 Xtags3.txt /`ab
-abc44 Xtags3.txt /`ab
-abc45 Xtags3.txt /`ab
-abc46 Xtags3.txt /`ab
-abc47 Xtags3.txt /`ab
-abc48 Xtags3.txt /`ab
-abc49 Xtags3.txt /`ab
-abc50 Xtags3.txt /`ab
-abc51 Xtags3.txt /`ab
-abc52 Xtags3.txt /`ab
-abc53 Xtags3.txt /`ab
-abc54 Xtags3.txt /`ab
-abc55 Xtags3.txt /`ab
-abc56 Xtags3.txt /`ab
-abc57 Xtags3.txt /`ab
-abc58 Xtags3.txt /`ab
-abc59 Xtags3.txt /`ab
-abc60 Xtags3.txt /`ab
-abc61 Xtags3.txt /`ab
-abc62 Xtags3.txt /`ab
-abc63 Xtags3.txt /`ab
-abc64 Xtags3.txt /`ab
-abc65 Xtags3.txt /`ab
-abc66 Xtags3.txt /`ab
-abc67 Xtags3.txt /`ab
-abc68 Xtags3.txt /`ab
-abc69 Xtags3.txt /`ab
-abc70 Xtags3.txt /`ab
-abc71 Xtags3.txt /`ab
-abc72 Xtags3.txt /`ab
-abc73 Xtags3.txt /`ab
-abc74 Xtags3.txt /`ab
-abc75 Xtags3.txt /`ab
-abc76 Xtags3.txt /`ab
-abc77 Xtags3.txt /`ab
-abc78 Xtags3.txt /`ab
-abc79 Xtags3.txt /`ab
-abc80 Xtags3.txt /`ab
-abc81 Xtags3.txt /`ab
-abc82 Xtags3.txt /`ab
-abc83 Xtags3.txt /`ab
-abc84 Xtags3.txt /`ab
-abc85 Xtags3.txt /`ab
-abc86 Xtags3.txt /`ab
-abc87 Xtags3.txt /`ab
-abc88 Xtags3.txt /`ab
-abc89 Xtags3.txt /`ab
-abc90 Xtags3.txt /`ab
-abc91 Xtags3.txt /`ab
-abc92 Xtags3.txt /`ab
-abc93 Xtags3.txt /`ab
-abc94 Xtags3.txt /`ab
-abc95 Xtags3.txt /`ab
-abc96 Xtags3.txt /`ab
-abc97 Xtags3.txt /`ab
-abc98 Xtags3.txt /`ab
-abc99 Xtags3.txt /`ab
-abc100 Xtags3.txt /`ab
diff --git a/src/testdir/test83.in b/src/testdir/test83.in
deleted file mode 100644
index 297d560d2f..0000000000
--- a/src/testdir/test83.in
+++ /dev/null
@@ -1,76 +0,0 @@
-Tests for tag search with !_TAG_FILE_ENCODING.
-
-STARTTEST
-:so mbyte.vim
-:set enc=utf8
-:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
-: e! test.ok
-: w! test.out
-: qa!
-:endif
-
-:/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
-:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
-:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
-:/^tags1$/+1,/^tags1-end$/-1w! Xtags1
-
-ggdG
-
-:call setline('.', 'Results of test83')
-
-:" case1:
-:new
-:set tags=Xtags1
-:let v:errmsg = ''
-:tag abcdefghijklmnopqrs
-:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
-: close
-: put ='case1: failed'
-:else
-: close
-: put ='case1: ok'
-:endif
-
-:" case2:
-:new
-:set tags=test83-tags2
-:let v:errmsg = ''
-:tag /.BC
-:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
-: close
-: put ='case2: failed'
-:else
-: close
-: put ='case2: ok'
-:endif
-
-:" case3:
-:new
-:set tags=test83-tags3
-:let v:errmsg = ''
-:tag abc50
-:if v:errmsg =~ 'E426:' || getline('.') != 'ABC'
-: close
-: put ='case3: failed'
-:else
-: close
-: put ='case3: ok'
-:endif
-:close
-
-:wq! test.out
-ENDTEST
-
-text for tags1
-abcdefghijklmnopqrs
-
-text for tags2
-ABC
-
-text for tags3
-ABC
-
-tags1
-!_TAG_FILE_ENCODING utf-8 //
-abcdefghijklmnopqrs Xtags1.txt /abcdefghijklmnopqrs
-tags1-end
diff --git a/src/testdir/test83.ok b/src/testdir/test83.ok
deleted file mode 100644
index 61a1a04a18..0000000000
--- a/src/testdir/test83.ok
+++ /dev/null
@@ -1,4 +0,0 @@
-Results of test83
-case1: ok
-case2: ok
-case3: ok
diff --git a/src/testdir/test84.in b/src/testdir/test84.in
deleted file mode 100644
index 25482db54c..0000000000
--- a/src/testdir/test84.in
+++ /dev/null
@@ -1,35 +0,0 @@
-Tests for curswant not changing when setting an option
-
-STARTTEST
-:so small.vim
-:/^start target options$/+1,/^end target options$/-1 yank
-:let target_option_names = split(@0)
-:function TestCurswant(option_name)
-: normal! ggf8j
-: let curswant_before = winsaveview().curswant
-: execute 'let' '&'.a:option_name '=' '&'.a:option_name
-: let curswant_after = winsaveview().curswant
-: return [a:option_name, curswant_before, curswant_after]
-:endfunction
-:
-:new
-:put =['1234567890', '12345']
-:1 delete _
-:let result = []
-:for option_name in target_option_names
-: call add(result, TestCurswant(option_name))
-:endfor
-:
-:new
-:put =map(copy(result), 'join(v:val, '' '')')
-:1 delete _
-:write test.out
-:
-:qall!
-ENDTEST
-
-start target options
- tabstop
- timeoutlen
- ttimeoutlen
-end target options
diff --git a/src/testdir/test84.ok b/src/testdir/test84.ok
deleted file mode 100644
index 8b8e4ee824..0000000000
--- a/src/testdir/test84.ok
+++ /dev/null
@@ -1,3 +0,0 @@
-tabstop 7 4
-timeoutlen 7 7
-ttimeoutlen 7 7
diff --git a/src/testdir/test85.in b/src/testdir/test85.in
deleted file mode 100644
index c5ca873a49..0000000000
--- a/src/testdir/test85.in
+++ /dev/null
@@ -1,85 +0,0 @@
-Test for Lua interface and luaeval() function
-
-STARTTEST
-:so small.vim
-:so lua.vim
-:set nocompatible viminfo+=nviminfo
-:lua l = vim.list():add"item0":add"dictionary with list OK":add"item2"
-:lua h = vim.dict(); h.list = l
-:call garbagecollect()
-/^1
-:" change buffer contents
-:lua curbuf = vim.buffer()
-:lua curline = vim.eval"line('.')"
-:lua curbuf[curline] = "1 changed line 1"
-:" scalar test
-:let tmp_string = luaeval('"string"')
-:let tmp_1000 = luaeval('1000')
-:if printf("%s%.0f", tmp_string, tmp_1000) == "string1000"
-:let scalar_res = "OK"
-:else
-:let scalar_res = "FAILED"
-:endif
-:call append(search("^1"), "scalar test " . scalar_res)
-:" dictionary containing a list
-:let tmp = luaeval("h").list[1]
-:/^2/put =tmp
-:" circular list (at the same time test lists containing lists)
-:lua l[2] = l
-:let l2 = luaeval("h").list
-:if l2[2] == l2
-:let res = "OK"
-:else
-:let res = "FAILED"
-:endif
-:call setline(search("^3"), "circular test " . res)
-
-:let l = []
-:lua l = vim.eval("l")
-:lua l:add(123)
-:lua l:add("abc")
-:lua l:add(vim.eval("[1, 2, 3]"))
-:lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
-:lua l:insert(123)
-:lua l:insert("abc")
-:lua l:insert(vim.eval("[1, 2, 3]"))
-:lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
-:lua l[0] = l[0]
-:lua l[1] = l[1]
-:lua l[2] = l[2]
-:lua l[3] = l[3]
-:lua l[0] = 123
-:lua l[1] = "abc"
-:lua l[2] = vim.eval("[1, 2, 3]")
-:lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
-:lua l[3] = nil
-:lua l[2] = nil
-:lua l[1] = nil
-:lua l[0] = nil
-:lua l = nil
-:$put =string(l)
-
-:let d = {}
-:lua d = vim.eval("d")
-:lua d[0] = 123
-:lua d[1] = "abc"
-:lua d[2] = vim.eval("[1, 2, 3]")
-:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
-:lua d[4] = d[0]
-:lua d[5] = d[1]
-:lua d[6] = d[2]
-:lua d[7] = d[3]
-:lua d[3] = nil
-:lua d[2] = nil
-:lua d[1] = nil
-:lua d[0] = nil
-:lua d = nil
-:$put =string(d)
-
-:?^1?,$w! test.out
-:qa!
-ENDTEST
-
-1 line 1
-2 line 2
-3 line 3
diff --git a/src/testdir/test85.ok b/src/testdir/test85.ok
deleted file mode 100644
index 4753483240..0000000000
--- a/src/testdir/test85.ok
+++ /dev/null
@@ -1,7 +0,0 @@
-1 changed line 1
-scalar test OK
-2 line 2
-dictionary with list OK
-circular test OK
-[123.0, 'abc', [1, 2, 3], {'a': 1, 'b': 2, 'c': 3}]
-{'4': 123.0, '5': 'abc', '6': [1, 2, 3], '7': {'a': 1, 'b': 2, 'c': 3}}
diff --git a/src/testdir/test86.in b/src/testdir/test86.in
deleted file mode 100644
index 240e07e477..0000000000
--- a/src/testdir/test86.in
+++ /dev/null
@@ -1,1429 +0,0 @@
-Tests for various python features. vim: set ft=vim :
-
-NOTE: This will cause errors when run under valgrind.
-This would require recompiling Python with:
- ./configure --without-pymalloc
-See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup
-
-STARTTEST
-:so small.vim
-:set encoding=latin1
-:set noswapfile
-:if !has('python') | e! test.ok | wq! test.out | endif
-:lang C
-:fun Test()
-:py import vim
-:let l = []
-:py l=vim.bindeval('l')
-:py f=vim.bindeval('function("strlen")')
-:" Extending List directly with different types
-:py l.extend([1, "as'd", [1, 2, f, {'a': 1}]])
-:$put =string(l)
-:$put =string(l[-1])
-:try
-: $put =string(l[-4])
-:catch
-: $put =v:exception[:13]
-:endtry
-:" List assignment
-:py l[0]=0
-:$put =string(l)
-:py l[-2]=f
-:$put =string(l)
-:"
-:" Extending Dictionary directly with different types
-:let d = {}
-:fun d.f()
-: return 1
-:endfun
-py << EOF
-d=vim.bindeval('d')
-d['1']='asd'
-d.update(b=[1, 2, f])
-d.update((('-1', {'a': 1}),))
-d.update({'0': -1})
-dk = d.keys()
-dv = d.values()
-di = d.items()
-cmpfun = lambda a, b: cmp(repr(a), repr(b))
-dk.sort(cmpfun)
-dv.sort(cmpfun)
-di.sort(cmpfun)
-EOF
-:$put =pyeval('d[''f''](self={})')
-:$put =pyeval('repr(dk)')
-:$put =substitute(pyeval('repr(dv)'),'0x\x\+','','g')
-:$put =substitute(pyeval('repr(di)'),'0x\x\+','','g')
-:for [key, Val] in sort(items(d))
-: $put =string(key) . ' : ' . string(Val)
-: unlet key Val
-:endfor
-:py del dk
-:py del di
-:py del dv
-:"
-:" removing items with del
-:py del l[2]
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:try
-: py del l[:3]
-: py del l[1:]
-:catch
-: $put =v:exception
-:endtry
-:$put =string(l)
-:"
-:py del d['-1']
-:py del d['f']
-:$put =string(pyeval('d.get(''b'', 1)'))
-:$put =string(pyeval('d.pop(''b'')'))
-:$put =string(pyeval('d.get(''b'', 1)'))
-:$put =string(pyeval('d.pop(''1'', 2)'))
-:$put =string(pyeval('d.pop(''1'', 2)'))
-:$put =pyeval('repr(d.has_key(''0''))')
-:$put =pyeval('repr(d.has_key(''1''))')
-:$put =pyeval('repr(''0'' in d)')
-:$put =pyeval('repr(''1'' in d)')
-:$put =pyeval('repr(list(iter(d)))')
-:$put =string(d)
-:$put =pyeval('repr(d.popitem())')
-:$put =pyeval('repr(d.get(''0''))')
-:$put =pyeval('repr(list(iter(d)))')
-:"
-:" removing items out of range: silently skip items that don't exist
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:" The following two ranges delete nothing as they match empty list:
-:py del l[2:1]
-:$put =string(l)
-:py del l[2:2]
-:$put =string(l)
-:py del l[2:3]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[2:4]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[2:5]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[2:6]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:" The following two ranges delete nothing as they match empty list:
-:py del l[-1:2]
-:$put =string(l)
-:py del l[-2:2]
-:$put =string(l)
-:py del l[-3:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[-4:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[-5:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[-6:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[::2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[3:0:-2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py del l[2:4:-2]
-:$put =string(l)
-:"
-:" Slice assignment to a list
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[0:0]=['a']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[1:2]=['b']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[2:4]=['c']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[4:4]=['d']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[-1:2]=['e']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[-10:2]=['f']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:py l[2:-10]=['g']
-:$put =string(l)
-:let l = []
-:py l=vim.bindeval('l')
-:py l[0:0]=['h']
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:py l[2:6:2] = [10, 20]
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:py l[6:2:-2] = [10, 20]
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:py l[6:2] = ()
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:py l[6:2:1] = ()
-:$put =string(l)
-:let l = range(8)
-:py l=vim.bindeval('l')
-:py l[2:2:1] = ()
-:$put =string(l)
-:"
-:" Locked variables
-:let l = [0, 1, 2, 3]
-:py l=vim.bindeval('l')
-:lockvar! l
-:py l[2]='i'
-:$put =string(l)
-:unlockvar! l
-:"
-:" Function calls
-py << EOF
-import sys
-def ee(expr, g=globals(), l=locals()):
- try:
- exec(expr, g, l)
- except:
- ei = sys.exc_info()
- msg = sys.exc_info()[0].__name__ + ':' + repr(sys.exc_info()[1].args)
- msg = msg.replace('TypeError:(\'argument 1 ', 'TypeError:(\'')
- if expr.find('None') > -1:
- msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
- 'TypeError:("\'NoneType\' object is not iterable",)')
- if expr.find('FailingNumber') > -1:
- msg = msg.replace(', not \'FailingNumber\'', '').replace('"', '\'')
- msg = msg.replace('TypeError:(\'iteration over non-sequence\',)',
- 'TypeError:("\'FailingNumber\' object is not iterable",)')
- if msg.find('(\'\'') > -1 or msg.find('(\'can\'t') > -1:
- msg = msg.replace('(\'', '("').replace('\',)', '",)')
- if expr == 'fd(self=[])':
- # HACK: PyMapping_Check changed meaning
- msg = msg.replace('AttributeError:(\'keys\',)',
- 'TypeError:(\'unable to convert list to vim dictionary\',)')
- vim.current.buffer.append(expr + ':' + msg)
- else:
- vim.current.buffer.append(expr + ':NOT FAILED')
-EOF
-:fun New(...)
-: return ['NewStart']+a:000+['NewEnd']
-:endfun
-:fun DictNew(...) dict
-: return ['DictNewStart']+a:000+['DictNewEnd', self]
-:endfun
-:let l=[function('New'), function('DictNew')]
-:py l=vim.bindeval('l')
-:py l.extend(list(l[0](1, 2, 3)))
-:$put =string(l)
-:py l.extend(list(l[1](1, 2, 3, self={'a': 'b'})))
-:$put =string(l)
-:py l.extend([l[0].name])
-:$put =string(l)
-:py ee('l[1](1, 2, 3)')
-:py f=l[0]
-:delfunction New
-:py ee('f(1, 2, 3)')
-:if has('float')
-: let l=[0.0]
-: py l=vim.bindeval('l')
-: py l.extend([0.0])
-: $put =string(l)
-:else
-: $put ='[0.0, 0.0]'
-:endif
-:let messages=[]
-:delfunction DictNew
-py <<EOF
-d=vim.bindeval('{}')
-m=vim.bindeval('messages')
-def em(expr, g=globals(), l=locals()):
- try:
- exec(expr, g, l)
- except:
- m.extend([sys.exc_type.__name__])
-
-em('d["abc1"]')
-em('d["abc1"]="\\0"')
-em('d["abc1"]=vim')
-em('d[""]=1')
-em('d["a\\0b"]=1')
-em('d[u"a\\0b"]=1')
-
-em('d.pop("abc1")')
-em('d.popitem()')
-del em
-del m
-EOF
-:$put =messages
-:unlet messages
-:" locked and scope attributes
-:let d={} | let dl={} | lockvar dl
-:for s in split("d dl v: g:")
-: let name=tr(s, ':', 's')
-: execute 'py '.name.'=vim.bindeval("'.s.'")'
-: let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".pyeval(name.".".v:val)'), ';')
-: $put =toput
-:endfor
-:silent! let d.abc2=1
-:silent! let dl.abc3=1
-:py d.locked=True
-:py dl.locked=False
-:silent! let d.def=1
-:silent! let dl.def=1
-:put ='d:'.string(d)
-:put ='dl:'.string(dl)
-:unlet d dl
-:
-:let l=[] | let ll=[] | lockvar ll
-:for s in split("l ll")
-: let name=tr(s, ':', 's')
-: execute 'py '.name.'=vim.bindeval("'.s.'")'
-: let toput=s.' : locked:'.pyeval(name.'.locked')
-: $put =toput
-:endfor
-:silent! call extend(l, [0])
-:silent! call extend(ll, [0])
-:py l.locked=True
-:py ll.locked=False
-:silent! call extend(l, [1])
-:silent! call extend(ll, [1])
-:put ='l:'.string(l)
-:put ='ll:'.string(ll)
-:unlet l ll
-:"
-:" pyeval()
-:let l=pyeval('range(3)')
-:$put =string(l)
-:let d=pyeval('{"a": "b", "c": 1, "d": ["e"]}')
-:$put =sort(items(d))
-:if has('float')
-: let f=pyeval('0.0')
-: $put =string(f)
-:else
-: $put ='0.0'
-:endif
-:" Invalid values:
-:for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']
-: try
-: let v=pyeval(e)
-: catch
-: let toput=e.":\t".v:exception[:13]
-: $put =toput
-: endtry
-:endfor
-:"
-:" threading
-:let l = [0]
-:py l=vim.bindeval('l')
-py <<EOF
-import threading
-import time
-
-class T(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
- self.t = 0
- self.running = True
-
- def run(self):
- while self.running:
- self.t += 1
- time.sleep(0.1)
-
-t = T()
-del T
-t.start()
-EOF
-:sleep 1
-:py t.running = False
-:py t.join()
-:py l[0] = t.t > 8 # check if the background thread is working
-:py del time
-:py del threading
-:py del t
-:$put =string(l)
-:"
-:" settrace
-:let l = []
-:py l=vim.bindeval('l')
-py <<EOF
-import sys
-
-def traceit(frame, event, arg):
- global l
- if event == "line":
- l.extend([frame.f_lineno])
- return traceit
-
-def trace_main():
- for i in range(5):
- pass
-EOF
-:py sys.settrace(traceit)
-:py trace_main()
-:py sys.settrace(None)
-:py del traceit
-:py del trace_main
-:$put =string(l)
-:"
-:" Slice
-:py ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')
-:py l = ll[:4]
-:$put =string(pyeval('l'))
-:py l = ll[2:]
-:$put =string(pyeval('l'))
-:py l = ll[:-4]
-:$put =string(pyeval('l'))
-:py l = ll[-2:]
-:$put =string(pyeval('l'))
-:py l = ll[2:4]
-:$put =string(pyeval('l'))
-:py l = ll[4:2]
-:$put =string(pyeval('l'))
-:py l = ll[-4:-2]
-:$put =string(pyeval('l'))
-:py l = ll[-2:-4]
-:$put =string(pyeval('l'))
-:py l = ll[:]
-:$put =string(pyeval('l'))
-:py l = ll[0:6]
-:$put =string(pyeval('l'))
-:py l = ll[-10:10]
-:$put =string(pyeval('l'))
-:py l = ll[4:2:-1]
-:$put =string(pyeval('l'))
-:py l = ll[::2]
-:$put =string(pyeval('l'))
-:py l = ll[4:2:1]
-:$put =string(pyeval('l'))
-:py del l
-:"
-:" Vars
-:let g:foo = 'bac'
-:let w:abc3 = 'def'
-:let b:baz = 'bar'
-:let t:bar = 'jkl'
-:try
-: throw "Abc"
-:catch
-: put =pyeval('vim.vvars[''exception'']')
-:endtry
-:put =pyeval('vim.vars[''foo'']')
-:put =pyeval('vim.current.window.vars[''abc3'']')
-:put =pyeval('vim.current.buffer.vars[''baz'']')
-:put =pyeval('vim.current.tabpage.vars[''bar'']')
-:"
-:" Options
-:" paste: boolean, global
-:" previewheight number, global
-:" operatorfunc: string, global
-:" number: boolean, window-local
-:" numberwidth: number, window-local
-:" colorcolumn: string, window-local
-:" statusline: string, window-local/global
-:" autoindent: boolean, buffer-local
-:" shiftwidth: number, buffer-local
-:" omnifunc: string, buffer-local
-:" preserveindent: boolean, buffer-local/global
-:" path: string, buffer-local/global
-:let g:bufs=[bufnr('%')]
-:new
-:let g:bufs+=[bufnr('%')]
-:vnew
-:let g:bufs+=[bufnr('%')]
-:wincmd j
-:vnew
-:let g:bufs+=[bufnr('%')]
-:wincmd l
-:fun RecVars(opt)
-: let gval =string(eval('&g:'.a:opt))
-: let wvals=join(map(range(1, 4), 'v:val.":".string(getwinvar(v:val, "&".a:opt))'))
-: let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:val, "&".a:opt))'))
-: put =' G: '.gval
-: put =' W: '.wvals
-: put =' B: '.wvals
-:endfun
-py << EOF
-def e(s, g=globals(), l=locals()):
- try:
- exec(s, g, l)
- except:
- vim.command('return ' + repr(sys.exc_type.__name__))
-
-def ev(s, g=globals(), l=locals()):
- try:
- return eval(s, g, l)
- except:
- vim.command('let exc=' + repr(sys.exc_type.__name__))
- return 0
-EOF
-:fun E(s)
-: python e(vim.eval('a:s'))
-:endfun
-:fun Ev(s)
-: let r=pyeval('ev(vim.eval("a:s"))')
-: if exists('exc')
-: throw exc
-: endif
-: return r
-:endfun
-:py gopts1=vim.options
-:py wopts1=vim.windows[2].options
-:py wopts2=vim.windows[0].options
-:py wopts3=vim.windows[1].options
-:py bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options
-:py bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options
-:py bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options
-:$put ='wopts iters equal: '.pyeval('list(wopts1) == list(wopts2)')
-:$put ='bopts iters equal: '.pyeval('list(bopts1) == list(bopts2)')
-:py gset=set(iter(gopts1))
-:py wset=set(iter(wopts1))
-:py bset=set(iter(bopts1))
-:set path=.,..,,
-:let lst=[]
-:let lst+=[['paste', 1, 0, 1, 2, 1, 1, 0 ]]
-:let lst+=[['previewheight', 5, 1, 6, 'a', 0, 1, 0 ]]
-:let lst+=[['operatorfunc', 'A', 'B', 'C', 2, 0, 1, 0 ]]
-:let lst+=[['number', 0, 1, 1, 0, 1, 0, 1 ]]
-:let lst+=[['numberwidth', 2, 3, 5, -100, 0, 0, 1 ]]
-:let lst+=[['colorcolumn', '+1', '+2', '+3', 'abc4', 0, 0, 1 ]]
-:let lst+=[['statusline', '1', '2', '4', 0, 0, 1, 1 ]]
-:let lst+=[['autoindent', 0, 1, 1, 2, 1, 0, 2 ]]
-:let lst+=[['shiftwidth', 0, 2, 1, 3, 0, 0, 2 ]]
-:let lst+=[['omnifunc', 'A', 'B', 'C', 1, 0, 0, 2 ]]
-:let lst+=[['preserveindent', 0, 1, 1, 2, 1, 1, 2 ]]
-:let lst+=[['path', '.,,', ',,', '.', 0, 0, 1, 2 ]]
-:for [oname, oval1, oval2, oval3, invval, bool, global, local] in lst
-: py oname=vim.eval('oname')
-: py oval1=vim.bindeval('oval1')
-: py oval2=vim.bindeval('oval2')
-: py oval3=vim.bindeval('oval3')
-: if invval is 0 || invval is 1
-: py invval=bool(vim.bindeval('invval'))
-: else
-: py invval=vim.bindeval('invval')
-: endif
-: if bool
-: py oval1=bool(oval1)
-: py oval2=bool(oval2)
-: py oval3=bool(oval3)
-: endif
-: put ='>>> '.oname
-: $put =' g/w/b:'.pyeval('oname in gset').'/'.pyeval('oname in wset').'/'.pyeval('oname in bset')
-: $put =' g/w/b (in):'.pyeval('oname in gopts1').'/'.pyeval('oname in wopts1').'/'.pyeval('oname in bopts1')
-: for v in ['gopts1', 'wopts1', 'bopts1']
-: try
-: put =' p/'.v.': '.Ev('repr('.v.'['''.oname.'''])')
-: catch
-: put =' p/'.v.'! '.v:exception
-: endtry
-: let r=E(v.'['''.oname.''']=invval')
-: if r isnot 0
-: put =' inv: '.string(invval).'! '.r
-: endif
-: for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[:-2].'3'])
-: let val=substitute(vv, '^.opts', 'oval', '')
-: let r=E(vv.'['''.oname.''']='.val)
-: if r isnot 0
-: put =' '.vv.'! '.r
-: endif
-: endfor
-: endfor
-: call RecVars(oname)
-: for v in ['wopts3', 'bopts3']
-: let r=E('del '.v.'["'.oname.'"]')
-: if r isnot 0
-: put =' del '.v.'! '.r
-: endif
-: endfor
-: call RecVars(oname)
-:endfor
-:delfunction RecVars
-:delfunction E
-:delfunction Ev
-:py del ev
-:py del e
-:only
-:for buf in g:bufs[1:]
-: execute 'bwipeout!' buf
-:endfor
-:py del gopts1
-:py del wopts1
-:py del wopts2
-:py del wopts3
-:py del bopts1
-:py del bopts2
-:py del bopts3
-:py del oval1
-:py del oval2
-:py del oval3
-:py del oname
-:py del invval
-:"
-:" Test buffer object
-:vnew
-:put ='First line'
-:put ='Second line'
-:put ='Third line'
-:1 delete _
-:py b=vim.current.buffer
-:wincmd w
-:mark a
-:augroup BUFS
-: autocmd BufFilePost * python cb.append(vim.eval('expand("<abuf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))
-: autocmd BufFilePre * python cb.append(vim.eval('expand("<abuf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))
-:augroup END
-py << EOF
-cb = vim.current.buffer
-# Tests BufferAppend and BufferItem
-cb.append(b[0])
-# Tests BufferSlice and BufferAssSlice
-cb.append('abc5') # Will be overwritten
-cb[-1:] = b[:-2]
-# Test BufferLength and BufferAssSlice
-cb.append('def') # Will not be overwritten
-cb[len(cb):] = b[:]
-# Test BufferAssItem and BufferMark
-cb.append('ghi') # Will be overwritten
-cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1]))
-# Test BufferRepr
-cb.append(repr(cb) + repr(b))
-# Modify foreign buffer
-b.append('foo')
-b[0]='bar'
-b[0:0]=['baz']
-vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number)
-# Test assigning to name property
-import os
-old_name = cb.name
-cb.name = 'foo'
-cb.append(cb.name[-11:].replace(os.path.sep, '/'))
-b.name = 'bar'
-cb.append(b.name[-11:].replace(os.path.sep, '/'))
-cb.name = old_name
-cb.append(cb.name[-17:].replace(os.path.sep, '/'))
-del old_name
-# Test CheckBuffer
-for _b in vim.buffers:
- if _b is not cb:
- vim.command('bwipeout! ' + str(_b.number))
-del _b
-cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid)))
-for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc6")', 'b.name = "!"'):
- try:
- exec(expr)
- except vim.error:
- pass
- else:
- # Usually a SEGV here
- # Should not happen in any case
- cb.append('No exception for ' + expr)
-vim.command('cd .')
-del b
-EOF
-:augroup BUFS
-: autocmd!
-:augroup END
-:augroup! BUFS
-:"
-:" Test vim.buffers object
-:set hidden
-:edit a
-:buffer #
-:edit b
-:buffer #
-:edit c
-:buffer #
-py << EOF
-try:
- from __builtin__ import next
-except ImportError:
- next = lambda o: o.next()
-# Check GCing iterator that was not fully exhausted
-i = iter(vim.buffers)
-cb.append('i:' + str(next(i)))
-# and also check creating more then one iterator at a time
-i2 = iter(vim.buffers)
-cb.append('i2:' + str(next(i2)))
-cb.append('i:' + str(next(i)))
-# The following should trigger GC and not cause any problems
-del i
-del i2
-i3 = iter(vim.buffers)
-cb.append('i3:' + str(next(i3)))
-del i3
-
-prevnum = 0
-for b in vim.buffers:
- # Check buffer order
- if prevnum >= b.number:
- cb.append('!!! Buffer numbers not in strictly ascending order')
- # Check indexing: vim.buffers[number].number == number
- cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) + '=' + repr(b))
- prevnum = b.number
-del prevnum
-
-cb.append(str(len(vim.buffers)))
-
-bnums = list(map(lambda b: b.number, vim.buffers))[1:]
-
-# Test wiping out buffer with existing iterator
-i4 = iter(vim.buffers)
-cb.append('i4:' + str(next(i4)))
-vim.command('bwipeout! ' + str(bnums.pop(0)))
-try:
- next(i4)
-except vim.error:
- pass
-else:
- cb.append('!!!! No vim.error')
-i4 = iter(vim.buffers)
-vim.command('bwipeout! ' + str(bnums.pop(-1)))
-vim.command('bwipeout! ' + str(bnums.pop(-1)))
-cb.append('i4:' + str(next(i4)))
-try:
- next(i4)
-except StopIteration:
- cb.append('StopIteration')
-del i4
-del bnums
-EOF
-:"
-:" Test vim.{tabpage,window}list and vim.{tabpage,window} objects
-:tabnew 0
-:tabnew 1
-:vnew a.1
-:tabnew 2
-:vnew a.2
-:vnew b.2
-:vnew c.2
-py << EOF
-cb.append('Number of tabs: ' + str(len(vim.tabpages)))
-cb.append('Current tab pages:')
-def W(w):
- if repr(w).find('(unknown)') != -1:
- return '<window object (unknown)>'
- else:
- return repr(w)
-
-start = len(cb)
-
-def Cursor(w):
- if w.buffer is cb:
- return repr((start - w.cursor[0], w.cursor[1]))
- else:
- return repr(w.cursor)
-
-for t in vim.tabpages:
- cb.append(' ' + repr(t) + '(' + str(t.number) + ')' + ': ' + str(len(t.windows)) + ' windows, current is ' + W(t.window))
- cb.append(' Windows:')
- for w in t.windows:
- cb.append(' ' + W(w) + '(' + str(w.number) + ')' + ': displays buffer ' + repr(w.buffer) + '; cursor is at ' + Cursor(w))
- # Other values depend on the size of the terminal, so they are checked partly:
- for attr in ('height', 'row', 'width', 'col'):
- try:
- aval = getattr(w, attr)
- if type(aval) is not long:
- raise TypeError
- if aval < 0:
- raise ValueError
- except Exception:
- cb.append('!!!!!! Error while getting attribute ' + attr + ': ' + sys.exc_type.__name__)
- del aval
- del attr
- w.cursor = (len(w.buffer), 0)
-del W
-del Cursor
-cb.append('Number of windows in current tab page: ' + str(len(vim.windows)))
-if list(vim.windows) != list(vim.current.tabpage.windows):
- cb.append('!!!!!! Windows differ')
-EOF
-:"
-:" Test vim.current
-py << EOF
-def H(o):
- return repr(o)
-cb.append('Current tab page: ' + repr(vim.current.tabpage))
-cb.append('Current window: ' + repr(vim.current.window) + ': ' + H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))
-cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' + H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.current.tabpage.window.buffer))
-del H
-# Assigning: fails
-try:
- vim.current.window = vim.tabpages[0].window
-except ValueError:
- cb.append('ValueError at assigning foreign tab window')
-
-for attr in ('window', 'tabpage', 'buffer'):
- try:
- setattr(vim.current, attr, None)
- except TypeError:
- cb.append('Type error at assigning None to vim.current.' + attr)
-del attr
-
-# Assigning: success
-vim.current.tabpage = vim.tabpages[-2]
-vim.current.buffer = cb
-vim.current.window = vim.windows[0]
-vim.current.window.cursor = (len(vim.current.buffer), 0)
-cb.append('Current tab page: ' + repr(vim.current.tabpage))
-cb.append('Current window: ' + repr(vim.current.window))
-cb.append('Current buffer: ' + repr(vim.current.buffer))
-cb.append('Current line: ' + repr(vim.current.line))
-ws = list(vim.windows)
-ts = list(vim.tabpages)
-for b in vim.buffers:
- if b is not cb:
- vim.command('bwipeout! ' + str(b.number))
-del b
-cb.append('w.valid: ' + repr([w.valid for w in ws]))
-cb.append('t.valid: ' + repr([t.valid for t in ts]))
-del w
-del t
-del ts
-del ws
-EOF
-:tabonly!
-:only!
-:"
-:" Test types
-py << EOF
-for expr, attr in (
- ('vim.vars', 'Dictionary'),
- ('vim.options', 'Options'),
- ('vim.bindeval("{}")', 'Dictionary'),
- ('vim.bindeval("[]")', 'List'),
- ('vim.bindeval("function(\'tr\')")', 'Function'),
- ('vim.current.buffer', 'Buffer'),
- ('vim.current.range', 'Range'),
- ('vim.current.window', 'Window'),
- ('vim.current.tabpage', 'TabPage'),
-):
- cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is getattr(vim, attr)))
-del expr
-del attr
-EOF
-:"
-:" Test __dir__() method
-py << EOF
-for name, o in (
- ('current', vim.current),
- ('buffer', vim.current.buffer),
- ('window', vim.current.window),
- ('tabpage', vim.current.tabpage),
- ('range', vim.current.range),
- ('dictionary', vim.bindeval('{}')),
- ('list', vim.bindeval('[]')),
- ('function', vim.bindeval('function("tr")')),
- ('output', sys.stdout),
- ):
- cb.append(name + ':' + ','.join(dir(o)))
-del name
-del o
-EOF
-:"
-:" Test vim.*.__new__
-:$put =string(pyeval('vim.Dictionary({})'))
-:$put =string(pyeval('vim.Dictionary(a=1)'))
-:$put =string(pyeval('vim.Dictionary(((''a'', 1),))'))
-:$put =string(pyeval('vim.List()'))
-:$put =string(pyeval('vim.List(iter(''abc7''))'))
-:$put =string(pyeval('vim.Function(''tr'')'))
-:"
-:" Test stdout/stderr
-:redir => messages
-:py sys.stdout.write('abc8') ; sys.stdout.write('def')
-:py sys.stderr.write('abc9') ; sys.stderr.write('def')
-:py sys.stdout.writelines(iter('abcA'))
-:py sys.stderr.writelines(iter('abcB'))
-:redir END
-:$put =string(substitute(messages, '\d\+', '', 'g'))
-:" Test subclassing
-:fun Put(...)
-: $put =string(a:000)
-: return a:000
-:endfun
-py << EOF
-class DupDict(vim.Dictionary):
- def __setitem__(self, key, value):
- super(DupDict, self).__setitem__(key, value)
- super(DupDict, self).__setitem__('dup_' + key, value)
-dd = DupDict()
-dd['a'] = 'b'
-
-class DupList(vim.List):
- def __getitem__(self, idx):
- return [super(DupList, self).__getitem__(idx)] * 2
-
-dl = DupList()
-dl2 = DupList(iter('abcC'))
-dl.extend(dl2[0])
-
-class DupFun(vim.Function):
- def __call__(self, arg):
- return super(DupFun, self).__call__(arg, arg)
-
-df = DupFun('Put')
-EOF
-:$put =string(sort(keys(pyeval('dd'))))
-:$put =string(pyeval('dl'))
-:$put =string(pyeval('dl2'))
-:$put =string(pyeval('df(2)'))
-:$put =string(pyeval('dl') is# pyeval('dl'))
-:$put =string(pyeval('dd') is# pyeval('dd'))
-:$put =string(pyeval('df'))
-:delfunction Put
-py << EOF
-del DupDict
-del DupList
-del DupFun
-del dd
-del dl
-del dl2
-del df
-EOF
-:"
-:" Test chdir
-py << EOF
-import os
-fnamemodify = vim.Function('fnamemodify')
-cb.append(fnamemodify('.', ':p:h:t'))
-cb.append(vim.eval('@%'))
-os.chdir('..')
-path = fnamemodify('.', ':p:h:t')
-if path != 'src':
- # Running tests from a shadow directory, so move up another level
- # This will result in @% looking like shadow/testdir/test86.in, hence the
- # extra fnamemodify
- os.chdir('..')
- cb.append(fnamemodify('.', ':p:h:t'))
- cb.append(fnamemodify(vim.eval('@%'), ':s?^%s.??' % path).replace(os.path.sep, '/'))
- os.chdir(path)
- del path
-else:
- cb.append(fnamemodify('.', ':p:h:t'))
- cb.append(vim.eval('@%').replace(os.path.sep, '/'))
-os.chdir('testdir')
-cb.append(fnamemodify('.', ':p:h:t'))
-cb.append(vim.eval('@%'))
-del fnamemodify
-EOF
-:"
-:" Test errors
-:fun F() dict
-:endfun
-:fun D()
-:endfun
-py << EOF
-d = vim.Dictionary()
-ned = vim.Dictionary(foo='bar', baz='abcD')
-dl = vim.Dictionary(a=1)
-dl.locked = True
-l = vim.List()
-ll = vim.List('abcE')
-ll.locked = True
-nel = vim.List('abcO')
-f = vim.Function('string')
-fd = vim.Function('F')
-fdel = vim.Function('D')
-vim.command('delfunction D')
-
-def subexpr_test(expr, name, subexprs):
- cb.append('>>> Testing %s using %s' % (name, expr))
- for subexpr in subexprs:
- ee(expr % subexpr)
- cb.append('<<< Finished')
-
-def stringtochars_test(expr):
- return subexpr_test(expr, 'StringToChars', (
- '1', # Fail type checks
- 'u"\\0"', # Fail PyString_AsStringAndSize(bytes, , NULL) check
- '"\\0"', # Fail PyString_AsStringAndSize(object, , NULL) check
- ))
-
-class Mapping(object):
- def __init__(self, d):
- self.d = d
-
- def __getitem__(self, key):
- return self.d[key]
-
- def keys(self):
- return self.d.keys()
-
- def items(self):
- return self.d.items()
-
-def convertfrompyobject_test(expr, recurse=True):
- # pydict_to_tv
- stringtochars_test(expr % '{%s : 1}')
- if recurse:
- convertfrompyobject_test(expr % '{"abcF" : %s}', False)
- # pymap_to_tv
- stringtochars_test(expr % 'Mapping({%s : 1})')
- if recurse:
- convertfrompyobject_test(expr % 'Mapping({"abcG" : %s})', False)
- # pyseq_to_tv
- iter_test(expr)
- return subexpr_test(expr, 'ConvertFromPyObject', (
- 'None', # Not conversible
- '{"": 1}', # Empty key not allowed
- '{u"": 1}', # Same, but with unicode object
- 'FailingMapping()', #
- 'FailingMappingKey()', #
- 'FailingNumber()', #
- ))
-
-def convertfrompymapping_test(expr):
- convertfrompyobject_test(expr)
- return subexpr_test(expr, 'ConvertFromPyMapping', (
- '[]',
- ))
-
-def iter_test(expr):
- return subexpr_test(expr, '*Iter*', (
- 'FailingIter()',
- 'FailingIterNext()',
- ))
-
-def number_test(expr, natural=False, unsigned=False):
- if natural:
- unsigned = True
- return subexpr_test(expr, 'NumberToLong', (
- '[]',
- 'None',
- ) + (unsigned and ('-1',) or ())
- + (natural and ('0',) or ()))
-
-class FailingTrue(object):
- def __nonzero__(self):
- raise NotImplementedError('bool')
-
-class FailingIter(object):
- def __iter__(self):
- raise NotImplementedError('iter')
-
-class FailingIterNext(object):
- def __iter__(self):
- return self
-
- def next(self):
- raise NotImplementedError('next')
-
-class FailingIterNextN(object):
- def __init__(self, n):
- self.n = n
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.n:
- self.n -= 1
- return 1
- else:
- raise NotImplementedError('next N')
-
-class FailingMappingKey(object):
- def __getitem__(self, item):
- raise NotImplementedError('getitem:mappingkey')
-
- def keys(self):
- return list("abcH")
-
-class FailingMapping(object):
- def __getitem__(self):
- raise NotImplementedError('getitem:mapping')
-
- def keys(self):
- raise NotImplementedError('keys')
-
-class FailingList(list):
- def __getitem__(self, idx):
- if i == 2:
- raise NotImplementedError('getitem:list')
- else:
- return super(FailingList, self).__getitem__(idx)
-
-class NoArgsCall(object):
- def __call__(self):
- pass
-
-class FailingCall(object):
- def __call__(self, path):
- raise NotImplementedError('call')
-
-class FailingNumber(object):
- def __int__(self):
- raise NotImplementedError('int')
-
-cb.append("> Output")
-cb.append(">> OutputSetattr")
-ee('del sys.stdout.softspace')
-number_test('sys.stdout.softspace = %s', unsigned=True)
-number_test('sys.stderr.softspace = %s', unsigned=True)
-ee('sys.stdout.attr = None')
-cb.append(">> OutputWrite")
-ee('sys.stdout.write(None)')
-cb.append(">> OutputWriteLines")
-ee('sys.stdout.writelines(None)')
-ee('sys.stdout.writelines([1])')
-iter_test('sys.stdout.writelines(%s)')
-cb.append("> VimCommand")
-stringtochars_test('vim.command(%s)')
-ee('vim.command("", 2)')
-#! Not checked: vim->python exceptions translating: checked later
-cb.append("> VimToPython")
-#! Not checked: everything: needs errors in internal python functions
-cb.append("> VimEval")
-stringtochars_test('vim.eval(%s)')
-ee('vim.eval("", FailingTrue())')
-#! Not checked: everything: needs errors in internal python functions
-cb.append("> VimEvalPy")
-stringtochars_test('vim.bindeval(%s)')
-ee('vim.eval("", 2)')
-#! Not checked: vim->python exceptions translating: checked later
-cb.append("> VimStrwidth")
-stringtochars_test('vim.strwidth(%s)')
-cb.append("> VimForeachRTP")
-ee('vim.foreach_rtp(None)')
-ee('vim.foreach_rtp(NoArgsCall())')
-ee('vim.foreach_rtp(FailingCall())')
-ee('vim.foreach_rtp(int, 2)')
-cb.append('> import')
-old_rtp = vim.options['rtp']
-vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
-ee('import xxx_no_such_module_xxx')
-ee('import failing_import')
-ee('import failing')
-vim.options['rtp'] = old_rtp
-del old_rtp
-cb.append("> Options")
-cb.append(">> OptionsItem")
-ee('vim.options["abcQ"]')
-ee('vim.options[""]')
-stringtochars_test('vim.options[%s]')
-cb.append(">> OptionsContains")
-stringtochars_test('%s in vim.options')
-cb.append("> Dictionary")
-cb.append(">> DictionaryConstructor")
-ee('vim.Dictionary("abcI")')
-##! Not checked: py_dict_alloc failure
-cb.append(">> DictionarySetattr")
-ee('del d.locked')
-ee('d.locked = FailingTrue()')
-ee('vim.vvars.locked = False')
-ee('d.scope = True')
-ee('d.xxx = True')
-cb.append(">> _DictionaryItem")
-ee('d.get("a", 2, 3)')
-stringtochars_test('d.get(%s)')
-ee('d.pop("a")')
-ee('dl.pop("a")')
-cb.append(">> DictionaryContains")
-ee('"" in d')
-ee('0 in d')
-cb.append(">> DictionaryIterNext")
-ee('for i in ned: ned["a"] = 1')
-del i
-cb.append(">> DictionaryAssItem")
-ee('dl["b"] = 1')
-stringtochars_test('d[%s] = 1')
-convertfrompyobject_test('d["a"] = %s')
-cb.append(">> DictionaryUpdate")
-cb.append(">>> kwargs")
-cb.append(">>> iter")
-ee('d.update(FailingMapping())')
-ee('d.update([FailingIterNext()])')
-ee('d.update([FailingIterNextN(1)])')
-iter_test('d.update(%s)')
-convertfrompyobject_test('d.update(%s)')
-stringtochars_test('d.update(((%s, 0),))')
-convertfrompyobject_test('d.update((("a", %s),))')
-cb.append(">> DictionaryPopItem")
-ee('d.popitem(1, 2)')
-cb.append(">> DictionaryHasKey")
-ee('d.has_key()')
-cb.append("> List")
-cb.append(">> ListConstructor")
-ee('vim.List(1, 2)')
-ee('vim.List(a=1)')
-iter_test('vim.List(%s)')
-convertfrompyobject_test('vim.List([%s])')
-cb.append(">> ListItem")
-ee('l[1000]')
-cb.append(">> ListAssItem")
-ee('ll[1] = 2')
-ee('l[1000] = 3')
-cb.append(">> ListAssSlice")
-ee('ll[1:100] = "abcJ"')
-iter_test('l[:] = %s')
-ee('nel[1:10:2] = "abcK"')
-cb.append(repr(tuple(nel)))
-ee('nel[1:10:2] = "a"')
-cb.append(repr(tuple(nel)))
-ee('nel[1:1:-1] = "a"')
-cb.append(repr(tuple(nel)))
-ee('nel[:] = FailingIterNextN(2)')
-cb.append(repr(tuple(nel)))
-convertfrompyobject_test('l[:] = [%s]')
-cb.append(">> ListConcatInPlace")
-iter_test('l.extend(%s)')
-convertfrompyobject_test('l.extend([%s])')
-cb.append(">> ListSetattr")
-ee('del l.locked')
-ee('l.locked = FailingTrue()')
-ee('l.xxx = True')
-cb.append("> Function")
-cb.append(">> FunctionConstructor")
-ee('vim.Function("123")')
-ee('vim.Function("xxx_non_existent_function_xxx")')
-ee('vim.Function("xxx#non#existent#function#xxx")')
-cb.append(">> FunctionCall")
-convertfrompyobject_test('f(%s)')
-convertfrompymapping_test('fd(self=%s)')
-cb.append("> TabPage")
-cb.append(">> TabPageAttr")
-ee('vim.current.tabpage.xxx')
-cb.append("> TabList")
-cb.append(">> TabListItem")
-ee('vim.tabpages[1000]')
-cb.append("> Window")
-cb.append(">> WindowAttr")
-ee('vim.current.window.xxx')
-cb.append(">> WindowSetattr")
-ee('vim.current.window.buffer = 0')
-ee('vim.current.window.cursor = (100000000, 100000000)')
-ee('vim.current.window.cursor = True')
-number_test('vim.current.window.height = %s', unsigned=True)
-number_test('vim.current.window.width = %s', unsigned=True)
-ee('vim.current.window.xxxxxx = True')
-cb.append("> WinList")
-cb.append(">> WinListItem")
-ee('vim.windows[1000]')
-cb.append("> Buffer")
-cb.append(">> StringToLine (indirect)")
-ee('vim.current.buffer[0] = u"\\na"')
-ee('vim.current.buffer[0] = "\\na"')
-cb.append(">> SetBufferLine (indirect)")
-ee('vim.current.buffer[0] = True')
-cb.append(">> SetBufferLineList (indirect)")
-ee('vim.current.buffer[:] = True')
-ee('vim.current.buffer[:] = ["\\na", "bc"]')
-cb.append(">> InsertBufferLines (indirect)")
-ee('vim.current.buffer.append(None)')
-ee('vim.current.buffer.append(["\\na", "bc"])')
-ee('vim.current.buffer.append("\\nbc")')
-cb.append(">> RBItem")
-ee('vim.current.buffer[100000000]')
-cb.append(">> RBAsItem")
-ee('vim.current.buffer[100000000] = ""')
-cb.append(">> BufferAttr")
-ee('vim.current.buffer.xxx')
-cb.append(">> BufferSetattr")
-ee('vim.current.buffer.name = True')
-ee('vim.current.buffer.xxx = True')
-cb.append(">> BufferMark")
-ee('vim.current.buffer.mark(0)')
-ee('vim.current.buffer.mark("abcM")')
-ee('vim.current.buffer.mark("!")')
-cb.append(">> BufferRange")
-ee('vim.current.buffer.range(1, 2, 3)')
-cb.append("> BufMap")
-cb.append(">> BufMapItem")
-ee('vim.buffers[100000000]')
-number_test('vim.buffers[%s]', natural=True)
-cb.append("> Current")
-cb.append(">> CurrentGetattr")
-ee('vim.current.xxx')
-cb.append(">> CurrentSetattr")
-ee('vim.current.line = True')
-ee('vim.current.buffer = True')
-ee('vim.current.window = True')
-ee('vim.current.tabpage = True')
-ee('vim.current.xxx = True')
-del d
-del ned
-del dl
-del l
-del ll
-del nel
-del f
-del fd
-del fdel
-del subexpr_test
-del stringtochars_test
-del Mapping
-del convertfrompyobject_test
-del convertfrompymapping_test
-del iter_test
-del number_test
-del FailingTrue
-del FailingIter
-del FailingIterNext
-del FailingIterNextN
-del FailingMapping
-del FailingMappingKey
-del FailingList
-del NoArgsCall
-del FailingCall
-del FailingNumber
-EOF
-:delfunction F
-:"
-:" Test import
-py << EOF
-sys.path.insert(0, os.path.join(os.getcwd(), 'python_before'))
-sys.path.append(os.path.join(os.getcwd(), 'python_after'))
-vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
-l = []
-def callback(path):
- l.append(path[-len('/testdir'):].replace(os.path.sep, '/'))
-vim.foreach_rtp(callback)
-cb.append(repr(l))
-del l
-def callback(path):
- return path[-len('/testdir'):].replace(os.path.sep, '/')
-cb.append(repr(vim.foreach_rtp(callback)))
-del callback
-from module import dir as d
-from modulex import ddir
-cb.append(d + ',' + ddir)
-import before
-cb.append(before.dir)
-import after
-cb.append(after.dir)
-import topmodule as tm
-import topmodule.submodule as tms
-import topmodule.submodule.subsubmodule.subsubsubmodule as tmsss
-cb.append(tm.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/__init__.py'):])
-cb.append(tms.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/__init__.py'):])
-cb.append(tmsss.__file__.replace('.pyc', '.py').replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])
-del before
-del after
-del d
-del ddir
-del tm
-del tms
-del tmsss
-EOF
-:"
-:" Test exceptions
-:fun Exe(e)
-: execute a:e
-:endfun
-py << EOF
-Exe = vim.bindeval('function("Exe")')
-ee('vim.command("throw \'abcN\'")')
-ee('Exe("throw \'def\'")')
-ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
-ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
-ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
-ee('vim.eval("xxx_unknown_function_xxx()")')
-ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
-del Exe
-EOF
-:delfunction Exe
-:"
-:" Regression: interrupting vim.command propagates to next vim.command
-py << EOF
-def test_keyboard_interrupt():
- try:
- vim.command('while 1 | endwhile')
- except KeyboardInterrupt:
- cb.append('Caught KeyboardInterrupt')
- except Exception:
- cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info))
- else:
- cb.append('!!!!!!!! No exception')
- try:
- vim.command('$ put =\'Running :put\'')
- except KeyboardInterrupt:
- cb.append('!!!!!!!! Caught KeyboardInterrupt')
- except Exception:
- cb.append('!!!!!!!! Caught exception: ' + repr(sys.exc_info))
- else:
- cb.append('No exception')
-EOF
-:debuggreedy
-:call inputsave()
-:call feedkeys("s\ns\ns\ns\nq\n")
-:redir => output
-:debug silent! py test_keyboard_interrupt()
-:redir END
-:0 debuggreedy
-:silent $put =output
-:unlet output
-:py del test_keyboard_interrupt
-:"
-:" Cleanup
-py << EOF
-del cb
-del ee
-del sys
-del os
-del vim
-EOF
-:endfun
-:"
-:fun RunTest()
-:let checkrefs = !empty($PYTHONDUMPREFS)
-:let start = getline(1, '$')
-:for i in range(checkrefs ? 10 : 1)
-: if i != 0
-: %d _
-: call setline(1, start)
-: endif
-: call Test()
-: if i == 0
-: let result = getline(1, '$')
-: endif
-:endfor
-:if checkrefs
-: %d _
-: call setline(1, result)
-:endif
-:endfun
-:"
-:call RunTest()
-:delfunction RunTest
-:delfunction Test
-:call garbagecollect(1)
-:"
-:/^start:/,$wq! test.out
-:" vim: et ts=4 isk-=\:
-:call getchar()
-ENDTEST
-
-start:
diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok
deleted file mode 100644
index 257a5ee4cd..0000000000
--- a/src/testdir/test86.ok
+++ /dev/null
@@ -1,1266 +0,0 @@
-start:
-[1, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
-[1, 2, function('strlen'), {'a': 1}]
-Vim(put):E684:
-[0, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
-[0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]]
-1
-['-1', '0', '1', 'b', 'f']
-['asd', -1L, <vim.Function '1'>, <vim.dictionary object at >, <vim.list object at >]
-[('-1', <vim.dictionary object at >), ('0', -1L), ('1', 'asd'), ('b', <vim.list object at >), ('f', <vim.Function '1'>)]
-'-1' : {'a': 1}
-'0' : -1
-'1' : 'asd'
-'b' : [1, 2, function('strlen')]
-'f' : function('1')
-[0, function('strlen')]
-[3]
-[1, 2, function('strlen')]
-[1, 2, function('strlen')]
-1
-'asd'
-2
-True
-False
-True
-False
-['0']
-{'0': -1}
-('0', -1L)
-None
-[]
-[0, 1, 2, 3]
-[0, 1, 2, 3]
-[0, 1, 3]
-[0, 1]
-[0, 1]
-[0, 1]
-[0, 1, 2, 3]
-[0, 1, 2, 3]
-[0, 2, 3]
-[2, 3]
-[2, 3]
-[2, 3]
-[1, 3]
-[0, 2]
-[0, 1, 2, 3]
-['a', 0, 1, 2, 3]
-[0, 'b', 2, 3]
-[0, 1, 'c']
-[0, 1, 2, 3, 'd']
-[0, 1, 2, 'e', 3]
-['f', 2, 3]
-[0, 1, 'g', 2, 3]
-['h']
-[0, 1, 10, 3, 20, 5, 6, 7]
-[0, 1, 2, 3, 20, 5, 10, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3]
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
-l[1](1, 2, 3):error:('Vim:E725: Calling dict function without Dictionary: DictNew',)
-f(1, 2, 3):error:('Vim:E117: Unknown function: New',)
-[0.0, 0.0]
-KeyError
-TypeError
-TypeError
-ValueError
-TypeError
-TypeError
-KeyError
-KeyError
-d : locked:0;scope:0
-dl : locked:1;scope:0
-v: : locked:2;scope:1
-g: : locked:0;scope:2
-d:{'abc2': 1}
-dl:{'def': 1}
-l : locked:0
-ll : locked:1
-l:[0]
-ll:[1]
-[0, 1, 2]
-['a', 'b']
-['c', 1]
-['d', ['e']]
-0.0
-"\0": Vim(let):E859:
-{"\0": 1}: Vim(let):E859:
-undefined_name: Vim(let):Trace
-vim: Vim(let):E859:
-[1]
-[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
-[0, 1, 2, 3]
-[2, 3, 4, 5]
-[0, 1]
-[4, 5]
-[2, 3]
-[]
-[2, 3]
-[]
-[0, 1, 2, 3, 4, 5]
-[0, 1, 2, 3, 4, 5]
-[0, 1, 2, 3, 4, 5]
-[4, 3]
-[0, 2, 4]
-[]
-Abc
-bac
-def
-bar
-jkl
-wopts iters equal: 1
-bopts iters equal: 1
->>> paste
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: False
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 2! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 1
- W: 1:1 2:1 3:1 4:1
- B: 1:1 2:1 3:1 4:1
- del wopts3! KeyError
- del bopts3! KeyError
- G: 1
- W: 1:1 2:1 3:1 4:1
- B: 1:1 2:1 3:1 4:1
->>> previewheight
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: 12
- inv: 'a'! TypeError
- p/wopts1! KeyError
- inv: 'a'! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 'a'! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 5
- W: 1:5 2:5 3:5 4:5
- B: 1:5 2:5 3:5 4:5
- del wopts3! KeyError
- del bopts3! KeyError
- G: 5
- W: 1:5 2:5 3:5 4:5
- B: 1:5 2:5 3:5 4:5
->>> operatorfunc
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: ''
- inv: 2! TypeError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 2! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 'A'
- W: 1:'A' 2:'A' 3:'A' 4:'A'
- B: 1:'A' 2:'A' 3:'A' 4:'A'
- del wopts3! KeyError
- del bopts3! KeyError
- G: 'A'
- W: 1:'A' 2:'A' 3:'A' 4:'A'
- B: 1:'A' 2:'A' 3:'A' 4:'A'
->>> number
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: 0! KeyError
- gopts1! KeyError
- p/wopts1: False
- p/bopts1! KeyError
- inv: 0! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 0
- W: 1:1 2:1 3:0 4:0
- B: 1:1 2:1 3:0 4:0
- del wopts3! ValueError
- del bopts3! KeyError
- G: 0
- W: 1:1 2:1 3:0 4:0
- B: 1:1 2:1 3:0 4:0
->>> numberwidth
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: -100! KeyError
- gopts1! KeyError
- p/wopts1: 8
- inv: -100! error
- p/bopts1! KeyError
- inv: -100! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 8
- W: 1:3 2:5 3:2 4:8
- B: 1:3 2:5 3:2 4:8
- del wopts3! ValueError
- del bopts3! KeyError
- G: 8
- W: 1:3 2:5 3:2 4:8
- B: 1:3 2:5 3:2 4:8
->>> colorcolumn
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: 'abc4'! KeyError
- gopts1! KeyError
- p/wopts1: ''
- inv: 'abc4'! error
- p/bopts1! KeyError
- inv: 'abc4'! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: ''
- W: 1:'+2' 2:'+3' 3:'+1' 4:''
- B: 1:'+2' 2:'+3' 3:'+1' 4:''
- del wopts3! ValueError
- del bopts3! KeyError
- G: ''
- W: 1:'+2' 2:'+3' 3:'+1' 4:''
- B: 1:'+2' 2:'+3' 3:'+1' 4:''
->>> statusline
- g/w/b:1/1/0
- g/w/b (in):1/1/0
- p/gopts1: ''
- inv: 0! TypeError
- p/wopts1: None
- inv: 0! TypeError
- p/bopts1! KeyError
- inv: 0! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: '1'
- W: 1:'2' 2:'4' 3:'1' 4:'1'
- B: 1:'2' 2:'4' 3:'1' 4:'1'
- del bopts3! KeyError
- G: '1'
- W: 1:'2' 2:'1' 3:'1' 4:'1'
- B: 1:'2' 2:'1' 3:'1' 4:'1'
->>> autoindent
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 2! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: False
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
->>> shiftwidth
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 3! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 3! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: 8
- G: 8
- W: 1:0 2:2 3:8 4:1
- B: 1:0 2:2 3:8 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 8
- W: 1:0 2:2 3:8 4:1
- B: 1:0 2:2 3:8 4:1
->>> omnifunc
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 1! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 1! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: ''
- inv: 1! TypeError
- G: ''
- W: 1:'A' 2:'B' 3:'' 4:'C'
- B: 1:'A' 2:'B' 3:'' 4:'C'
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- W: 1:'A' 2:'B' 3:'' 4:'C'
- B: 1:'A' 2:'B' 3:'' 4:'C'
->>> preserveindent
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 2! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: False
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
->>> path
- g/w/b:1/0/1
- g/w/b (in):1/0/1
- p/gopts1: '.,..,,'
- inv: 0! TypeError
- p/wopts1! KeyError
- inv: 0! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: None
- inv: 0! TypeError
- G: '.,,'
- W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- del wopts3! KeyError
- G: '.,,'
- W: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- B: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
-First line
-First line
-def
-First line
-Second line
-Third line
-(7, 2)
-<buffer test86.in><buffer >
-baz
-bar
-Second line
-Third line
-foo
-1:BufFilePre:1
-1:BufFilePost:1
-testdir/foo
-5:BufFilePre:5
-5:BufFilePost:5
-testdir/bar
-1:BufFilePre:1
-1:BufFilePost:1
-testdir/test86.in
-valid: b:False, cb:True
-i:<buffer test86.in>
-i2:<buffer test86.in>
-i:<buffer a>
-i3:<buffer test86.in>
-1:<buffer test86.in>=<buffer test86.in>
-8:<buffer a>=<buffer a>
-9:<buffer b>=<buffer b>
-10:<buffer c>=<buffer c>
-4
-i4:<buffer test86.in>
-i4:<buffer test86.in>
-StopIteration
-Number of tabs: 4
-Current tab pages:
- <tabpage 0>(1): 1 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (37, 0)
- <tabpage 1>(2): 1 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
- <tabpage 2>(3): 2 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer a.1>; cursor is at (1, 0)
- <window object (unknown)>(2): displays buffer <buffer 1>; cursor is at (1, 0)
- <tabpage 3>(4): 4 windows, current is <window 0>
- Windows:
- <window 0>(1): displays buffer <buffer c.2>; cursor is at (1, 0)
- <window 1>(2): displays buffer <buffer b.2>; cursor is at (1, 0)
- <window 2>(3): displays buffer <buffer a.2>; cursor is at (1, 0)
- <window 3>(4): displays buffer <buffer 2>; cursor is at (1, 0)
-Number of windows in current tab page: 4
-Current tab page: <tabpage 3>
-Current window: <window 0>: <window 0> is <window 0>
-Current buffer: <buffer c.2>: <buffer c.2> is <buffer c.2> is <buffer c.2>
-ValueError at assigning foreign tab window
-Type error at assigning None to vim.current.window
-Type error at assigning None to vim.current.tabpage
-Type error at assigning None to vim.current.buffer
-Current tab page: <tabpage 2>
-Current window: <window 0>
-Current buffer: <buffer test86.in>
-Current line: 'Type error at assigning None to vim.current.buffer'
-w.valid: [True, False]
-t.valid: [True, False, True, False]
-vim.vars:Dictionary:True
-vim.options:Options:True
-vim.bindeval("{}"):Dictionary:True
-vim.bindeval("[]"):List:True
-vim.bindeval("function('tr')"):Function:True
-vim.current.buffer:Buffer:True
-vim.current.range:Range:True
-vim.current.window:Window:True
-vim.current.tabpage:TabPage:True
-current:__dir__,__members__,buffer,line,range,tabpage,window
-buffer:__dir__,__members__,append,mark,name,number,options,range,valid,vars
-window:__dir__,__members__,buffer,col,cursor,height,number,options,row,tabpage,valid,vars
-tabpage:__dir__,__members__,number,valid,vars,window,windows
-range:__dir__,__members__,append,end,start
-dictionary:__dir__,__members__,get,has_key,items,keys,locked,pop,popitem,scope,update,values
-list:__dir__,__members__,extend,locked
-function:__dir__,__members__,softspace
-output:__dir__,__members__,flush,softspace,write,writelines
-{}
-{'a': 1}
-{'a': 1}
-[]
-['a', 'b', 'c', '7']
-function('tr')
-'
-abcdef
-line :
-abcdef
-abcA
-line :
-abcB'
-['a', 'dup_a']
-['a', 'a']
-['a', 'b', 'c', 'C']
-[2, 2]
-[2, 2]
-1
-1
-function('Put')
-testdir
-test86.in
-src
-testdir/test86.in
-testdir
-test86.in
-> Output
->> OutputSetattr
-del sys.stdout.softspace:AttributeError:("can't delete OutputObject attributes",)
->>> Testing NumberToLong using sys.stdout.softspace = %s
-sys.stdout.softspace = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
-sys.stdout.softspace = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
-sys.stdout.softspace = -1:ValueError:('number must be greater or equal to zero',)
-<<< Finished
->>> Testing NumberToLong using sys.stderr.softspace = %s
-sys.stderr.softspace = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
-sys.stderr.softspace = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
-sys.stderr.softspace = -1:ValueError:('number must be greater or equal to zero',)
-<<< Finished
-sys.stdout.attr = None:AttributeError:('invalid attribute: attr',)
->> OutputWrite
-sys.stdout.write(None):TypeError:('coercing to Unicode: need string or buffer, NoneType found',)
->> OutputWriteLines
-sys.stdout.writelines(None):TypeError:("'NoneType' object is not iterable",)
-sys.stdout.writelines([1]):TypeError:('coercing to Unicode: need string or buffer, int found',)
->>> Testing *Iter* using sys.stdout.writelines(%s)
-sys.stdout.writelines(FailingIter()):NotImplementedError:('iter',)
-sys.stdout.writelines(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
-> VimCommand
->>> Testing StringToChars using vim.command(%s)
-vim.command(1):TypeError:('expected str() or unicode() instance, but got int',)
-vim.command(u"\0"):TypeError:('expected string without null bytes',)
-vim.command("\0"):TypeError:('expected string without null bytes',)
-<<< Finished
-vim.command("", 2):TypeError:('command() takes exactly one argument (2 given)',)
-> VimToPython
-> VimEval
->>> Testing StringToChars using vim.eval(%s)
-vim.eval(1):TypeError:('expected str() or unicode() instance, but got int',)
-vim.eval(u"\0"):TypeError:('expected string without null bytes',)
-vim.eval("\0"):TypeError:('expected string without null bytes',)
-<<< Finished
-vim.eval("", FailingTrue()):TypeError:('function takes exactly 1 argument (2 given)',)
-> VimEvalPy
->>> Testing StringToChars using vim.bindeval(%s)
-vim.bindeval(1):TypeError:('expected str() or unicode() instance, but got int',)
-vim.bindeval(u"\0"):TypeError:('expected string without null bytes',)
-vim.bindeval("\0"):TypeError:('expected string without null bytes',)
-<<< Finished
-vim.eval("", 2):TypeError:('function takes exactly 1 argument (2 given)',)
-> VimStrwidth
->>> Testing StringToChars using vim.strwidth(%s)
-vim.strwidth(1):TypeError:('expected str() or unicode() instance, but got int',)
-vim.strwidth(u"\0"):TypeError:('expected string without null bytes',)
-vim.strwidth("\0"):TypeError:('expected string without null bytes',)
-<<< Finished
-> VimForeachRTP
-vim.foreach_rtp(None):TypeError:("'NoneType' object is not callable",)
-vim.foreach_rtp(NoArgsCall()):TypeError:('__call__() takes exactly 1 argument (2 given)',)
-vim.foreach_rtp(FailingCall()):NotImplementedError:('call',)
-vim.foreach_rtp(int, 2):TypeError:('foreach_rtp() takes exactly one argument (2 given)',)
-> import
-import xxx_no_such_module_xxx:ImportError:('No module named xxx_no_such_module_xxx',)
-import failing_import:ImportError:('No module named failing_import',)
-import failing:NotImplementedError:()
-> Options
->> OptionsItem
-vim.options["abcQ"]:KeyError:('abcQ',)
-vim.options[""]:ValueError:('empty keys are not allowed',)
->>> Testing StringToChars using vim.options[%s]
-vim.options[1]:TypeError:('expected str() or unicode() instance, but got int',)
-vim.options[u"\0"]:TypeError:('expected string without null bytes',)
-vim.options["\0"]:TypeError:('expected string without null bytes',)
-<<< Finished
->> OptionsContains
->>> Testing StringToChars using %s in vim.options
-1 in vim.options:TypeError:('expected str() or unicode() instance, but got int',)
-u"\0" in vim.options:TypeError:('expected string without null bytes',)
-"\0" in vim.options:TypeError:('expected string without null bytes',)
-<<< Finished
-> Dictionary
->> DictionaryConstructor
-vim.Dictionary("abcI"):ValueError:('expected sequence element of size 2, but got sequence of size 1',)
->> DictionarySetattr
-del d.locked:AttributeError:('cannot delete vim.Dictionary attributes',)
-d.locked = FailingTrue():NotImplementedError:('bool',)
-vim.vvars.locked = False:TypeError:('cannot modify fixed dictionary',)
-d.scope = True:AttributeError:('cannot set attribute scope',)
-d.xxx = True:AttributeError:('cannot set attribute xxx',)
->> _DictionaryItem
-d.get("a", 2, 3):TypeError:('function takes at most 2 arguments (3 given)',)
->>> Testing StringToChars using d.get(%s)
-d.get(1):TypeError:('expected str() or unicode() instance, but got int',)
-d.get(u"\0"):TypeError:('expected string without null bytes',)
-d.get("\0"):TypeError:('expected string without null bytes',)
-<<< Finished
-d.pop("a"):KeyError:('a',)
-dl.pop("a"):error:('dictionary is locked',)
->> DictionaryContains
-"" in d:ValueError:('empty keys are not allowed',)
-0 in d:TypeError:('expected str() or unicode() instance, but got int',)
->> DictionaryIterNext
-for i in ned: ned["a"] = 1:RuntimeError:('hashtab changed during iteration',)
->> DictionaryAssItem
-dl["b"] = 1:error:('dictionary is locked',)
->>> Testing StringToChars using d[%s] = 1
-d[1] = 1:TypeError:('expected str() or unicode() instance, but got int',)
-d[u"\0"] = 1:TypeError:('expected string without null bytes',)
-d["\0"] = 1:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d["a"] = {%s : 1}
-d["a"] = {1 : 1}:TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = {u"\0" : 1}:TypeError:('expected string without null bytes',)
-d["a"] = {"\0" : 1}:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d["a"] = {"abcF" : {%s : 1}}
-d["a"] = {"abcF" : {1 : 1}}:TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = {"abcF" : {u"\0" : 1}}:TypeError:('expected string without null bytes',)
-d["a"] = {"abcF" : {"\0" : 1}}:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d["a"] = {"abcF" : Mapping({%s : 1})}
-d["a"] = {"abcF" : Mapping({1 : 1})}:TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = {"abcF" : Mapping({u"\0" : 1})}:TypeError:('expected string without null bytes',)
-d["a"] = {"abcF" : Mapping({"\0" : 1})}:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d["a"] = {"abcF" : %s}
-d["a"] = {"abcF" : FailingIter()}:TypeError:('unable to convert FailingIter to vim structure',)
-d["a"] = {"abcF" : FailingIterNext()}:NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = {"abcF" : %s}
-d["a"] = {"abcF" : None}:TypeError:('unable to convert NoneType to vim structure',)
-d["a"] = {"abcF" : {"": 1}}:ValueError:('empty keys are not allowed',)
-d["a"] = {"abcF" : {u"": 1}}:ValueError:('empty keys are not allowed',)
-d["a"] = {"abcF" : FailingMapping()}:NotImplementedError:('keys',)
-d["a"] = {"abcF" : FailingMappingKey()}:NotImplementedError:('getitem:mappingkey',)
-d["a"] = {"abcF" : FailingNumber()}:TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({%s : 1})
-d["a"] = Mapping({1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = Mapping({u"\0" : 1}):TypeError:('expected string without null bytes',)
-d["a"] = Mapping({"\0" : 1}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({"abcG" : {%s : 1}})
-d["a"] = Mapping({"abcG" : {1 : 1}}):TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = Mapping({"abcG" : {u"\0" : 1}}):TypeError:('expected string without null bytes',)
-d["a"] = Mapping({"abcG" : {"\0" : 1}}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({"abcG" : Mapping({%s : 1})})
-d["a"] = Mapping({"abcG" : Mapping({1 : 1})}):TypeError:('expected str() or unicode() instance, but got int',)
-d["a"] = Mapping({"abcG" : Mapping({u"\0" : 1})}):TypeError:('expected string without null bytes',)
-d["a"] = Mapping({"abcG" : Mapping({"\0" : 1})}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d["a"] = Mapping({"abcG" : %s})
-d["a"] = Mapping({"abcG" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
-d["a"] = Mapping({"abcG" : FailingIterNext()}):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = Mapping({"abcG" : %s})
-d["a"] = Mapping({"abcG" : None}):TypeError:('unable to convert NoneType to vim structure',)
-d["a"] = Mapping({"abcG" : {"": 1}}):ValueError:('empty keys are not allowed',)
-d["a"] = Mapping({"abcG" : {u"": 1}}):ValueError:('empty keys are not allowed',)
-d["a"] = Mapping({"abcG" : FailingMapping()}):NotImplementedError:('keys',)
-d["a"] = Mapping({"abcG" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
-d["a"] = Mapping({"abcG" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using d["a"] = %s
-d["a"] = FailingIter():TypeError:('unable to convert FailingIter to vim structure',)
-d["a"] = FailingIterNext():NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = %s
-d["a"] = None:TypeError:('unable to convert NoneType to vim structure',)
-d["a"] = {"": 1}:ValueError:('empty keys are not allowed',)
-d["a"] = {u"": 1}:ValueError:('empty keys are not allowed',)
-d["a"] = FailingMapping():NotImplementedError:('keys',)
-d["a"] = FailingMappingKey():NotImplementedError:('getitem:mappingkey',)
-d["a"] = FailingNumber():TypeError:('long() argument must be a string or a number',)
-<<< Finished
->> DictionaryUpdate
->>> kwargs
->>> iter
-d.update(FailingMapping()):NotImplementedError:('keys',)
-d.update([FailingIterNext()]):NotImplementedError:('next',)
-d.update([FailingIterNextN(1)]):NotImplementedError:('next N',)
->>> Testing *Iter* using d.update(%s)
-d.update(FailingIter()):NotImplementedError:('iter',)
-d.update(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
->>> Testing StringToChars using d.update({%s : 1})
-d.update({1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
-d.update({u"\0" : 1}):TypeError:('expected string without null bytes',)
-d.update({"\0" : 1}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update({"abcF" : {%s : 1}})
-d.update({"abcF" : {1 : 1}}):TypeError:('expected str() or unicode() instance, but got int',)
-d.update({"abcF" : {u"\0" : 1}}):TypeError:('expected string without null bytes',)
-d.update({"abcF" : {"\0" : 1}}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update({"abcF" : Mapping({%s : 1})})
-d.update({"abcF" : Mapping({1 : 1})}):TypeError:('expected str() or unicode() instance, but got int',)
-d.update({"abcF" : Mapping({u"\0" : 1})}):TypeError:('expected string without null bytes',)
-d.update({"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d.update({"abcF" : %s})
-d.update({"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
-d.update({"abcF" : FailingIterNext()}):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update({"abcF" : %s})
-d.update({"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
-d.update({"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
-d.update({"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
-d.update({"abcF" : FailingMapping()}):NotImplementedError:('keys',)
-d.update({"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
-d.update({"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({%s : 1}))
-d.update(Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
-d.update(Mapping({u"\0" : 1})):TypeError:('expected string without null bytes',)
-d.update(Mapping({"\0" : 1})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({"abcG" : {%s : 1}}))
-d.update(Mapping({"abcG" : {1 : 1}})):TypeError:('expected str() or unicode() instance, but got int',)
-d.update(Mapping({"abcG" : {u"\0" : 1}})):TypeError:('expected string without null bytes',)
-d.update(Mapping({"abcG" : {"\0" : 1}})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({"abcG" : Mapping({%s : 1})}))
-d.update(Mapping({"abcG" : Mapping({1 : 1})})):TypeError:('expected str() or unicode() instance, but got int',)
-d.update(Mapping({"abcG" : Mapping({u"\0" : 1})})):TypeError:('expected string without null bytes',)
-d.update(Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d.update(Mapping({"abcG" : %s}))
-d.update(Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
-d.update(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update(Mapping({"abcG" : %s}))
-d.update(Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
-d.update(Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
-d.update(Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
-d.update(Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
-d.update(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
-d.update(Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using d.update(%s)
-d.update(FailingIter()):NotImplementedError:('iter',)
-d.update(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update(%s)
-d.update(None):TypeError:("'NoneType' object is not iterable",)
-d.update({"": 1}):ValueError:('empty keys are not allowed',)
-d.update({u"": 1}):ValueError:('empty keys are not allowed',)
-d.update(FailingMapping()):NotImplementedError:('keys',)
-d.update(FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
-d.update(FailingNumber()):TypeError:("'FailingNumber' object is not iterable",)
-<<< Finished
->>> Testing StringToChars using d.update(((%s, 0),))
-d.update(((1, 0),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update(((u"\0", 0),)):TypeError:('expected string without null bytes',)
-d.update((("\0", 0),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", {%s : 1}),))
-d.update((("a", {1 : 1}),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", {u"\0" : 1}),)):TypeError:('expected string without null bytes',)
-d.update((("a", {"\0" : 1}),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", {"abcF" : {%s : 1}}),))
-d.update((("a", {"abcF" : {1 : 1}}),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", {"abcF" : {u"\0" : 1}}),)):TypeError:('expected string without null bytes',)
-d.update((("a", {"abcF" : {"\0" : 1}}),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", {"abcF" : Mapping({%s : 1})}),))
-d.update((("a", {"abcF" : Mapping({1 : 1})}),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", {"abcF" : Mapping({u"\0" : 1})}),)):TypeError:('expected string without null bytes',)
-d.update((("a", {"abcF" : Mapping({"\0" : 1})}),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d.update((("a", {"abcF" : %s}),))
-d.update((("a", {"abcF" : FailingIter()}),)):TypeError:('unable to convert FailingIter to vim structure',)
-d.update((("a", {"abcF" : FailingIterNext()}),)):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", {"abcF" : %s}),))
-d.update((("a", {"abcF" : None}),)):TypeError:('unable to convert NoneType to vim structure',)
-d.update((("a", {"abcF" : {"": 1}}),)):ValueError:('empty keys are not allowed',)
-d.update((("a", {"abcF" : {u"": 1}}),)):ValueError:('empty keys are not allowed',)
-d.update((("a", {"abcF" : FailingMapping()}),)):NotImplementedError:('keys',)
-d.update((("a", {"abcF" : FailingMappingKey()}),)):NotImplementedError:('getitem:mappingkey',)
-d.update((("a", {"abcF" : FailingNumber()}),)):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
-d.update((("a", Mapping({1 : 1})),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", Mapping({u"\0" : 1})),)):TypeError:('expected string without null bytes',)
-d.update((("a", Mapping({"\0" : 1})),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({"abcG" : {%s : 1}})),))
-d.update((("a", Mapping({"abcG" : {1 : 1}})),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", Mapping({"abcG" : {u"\0" : 1}})),)):TypeError:('expected string without null bytes',)
-d.update((("a", Mapping({"abcG" : {"\0" : 1}})),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({"abcG" : Mapping({%s : 1})})),))
-d.update((("a", Mapping({"abcG" : Mapping({1 : 1})})),)):TypeError:('expected str() or unicode() instance, but got int',)
-d.update((("a", Mapping({"abcG" : Mapping({u"\0" : 1})})),)):TypeError:('expected string without null bytes',)
-d.update((("a", Mapping({"abcG" : Mapping({"\0" : 1})})),)):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using d.update((("a", Mapping({"abcG" : %s})),))
-d.update((("a", Mapping({"abcG" : FailingIter()})),)):TypeError:('unable to convert FailingIter to vim structure',)
-d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abcG" : %s})),))
-d.update((("a", Mapping({"abcG" : None})),)):TypeError:('unable to convert NoneType to vim structure',)
-d.update((("a", Mapping({"abcG" : {"": 1}})),)):ValueError:('empty keys are not allowed',)
-d.update((("a", Mapping({"abcG" : {u"": 1}})),)):ValueError:('empty keys are not allowed',)
-d.update((("a", Mapping({"abcG" : FailingMapping()})),)):NotImplementedError:('keys',)
-d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):NotImplementedError:('getitem:mappingkey',)
-d.update((("a", Mapping({"abcG" : FailingNumber()})),)):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using d.update((("a", %s),))
-d.update((("a", FailingIter()),)):TypeError:('unable to convert FailingIter to vim structure',)
-d.update((("a", FailingIterNext()),)):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", %s),))
-d.update((("a", None),)):TypeError:('unable to convert NoneType to vim structure',)
-d.update((("a", {"": 1}),)):ValueError:('empty keys are not allowed',)
-d.update((("a", {u"": 1}),)):ValueError:('empty keys are not allowed',)
-d.update((("a", FailingMapping()),)):NotImplementedError:('keys',)
-d.update((("a", FailingMappingKey()),)):NotImplementedError:('getitem:mappingkey',)
-d.update((("a", FailingNumber()),)):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->> DictionaryPopItem
-d.popitem(1, 2):TypeError:('popitem() takes no arguments (2 given)',)
->> DictionaryHasKey
-d.has_key():TypeError:('has_key() takes exactly one argument (0 given)',)
-> List
->> ListConstructor
-vim.List(1, 2):TypeError:('function takes at most 1 argument (2 given)',)
-vim.List(a=1):TypeError:('list constructor does not accept keyword arguments',)
->>> Testing *Iter* using vim.List(%s)
-vim.List(FailingIter()):NotImplementedError:('iter',)
-vim.List(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
->>> Testing StringToChars using vim.List([{%s : 1}])
-vim.List([{1 : 1}]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([{u"\0" : 1}]):TypeError:('expected string without null bytes',)
-vim.List([{"\0" : 1}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using vim.List([{"abcF" : {%s : 1}}])
-vim.List([{"abcF" : {1 : 1}}]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([{"abcF" : {u"\0" : 1}}]):TypeError:('expected string without null bytes',)
-vim.List([{"abcF" : {"\0" : 1}}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using vim.List([{"abcF" : Mapping({%s : 1})}])
-vim.List([{"abcF" : Mapping({1 : 1})}]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([{"abcF" : Mapping({u"\0" : 1})}]):TypeError:('expected string without null bytes',)
-vim.List([{"abcF" : Mapping({"\0" : 1})}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using vim.List([{"abcF" : %s}])
-vim.List([{"abcF" : FailingIter()}]):TypeError:('unable to convert FailingIter to vim structure',)
-vim.List([{"abcF" : FailingIterNext()}]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([{"abcF" : %s}])
-vim.List([{"abcF" : None}]):TypeError:('unable to convert NoneType to vim structure',)
-vim.List([{"abcF" : {"": 1}}]):ValueError:('empty keys are not allowed',)
-vim.List([{"abcF" : {u"": 1}}]):ValueError:('empty keys are not allowed',)
-vim.List([{"abcF" : FailingMapping()}]):NotImplementedError:('keys',)
-vim.List([{"abcF" : FailingMappingKey()}]):NotImplementedError:('getitem:mappingkey',)
-vim.List([{"abcF" : FailingNumber()}]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({%s : 1})])
-vim.List([Mapping({1 : 1})]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([Mapping({u"\0" : 1})]):TypeError:('expected string without null bytes',)
-vim.List([Mapping({"\0" : 1})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({"abcG" : {%s : 1}})])
-vim.List([Mapping({"abcG" : {1 : 1}})]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([Mapping({"abcG" : {u"\0" : 1}})]):TypeError:('expected string without null bytes',)
-vim.List([Mapping({"abcG" : {"\0" : 1}})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({"abcG" : Mapping({%s : 1})})])
-vim.List([Mapping({"abcG" : Mapping({1 : 1})})]):TypeError:('expected str() or unicode() instance, but got int',)
-vim.List([Mapping({"abcG" : Mapping({u"\0" : 1})})]):TypeError:('expected string without null bytes',)
-vim.List([Mapping({"abcG" : Mapping({"\0" : 1})})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using vim.List([Mapping({"abcG" : %s})])
-vim.List([Mapping({"abcG" : FailingIter()})]):TypeError:('unable to convert FailingIter to vim structure',)
-vim.List([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([Mapping({"abcG" : %s})])
-vim.List([Mapping({"abcG" : None})]):TypeError:('unable to convert NoneType to vim structure',)
-vim.List([Mapping({"abcG" : {"": 1}})]):ValueError:('empty keys are not allowed',)
-vim.List([Mapping({"abcG" : {u"": 1}})]):ValueError:('empty keys are not allowed',)
-vim.List([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:('keys',)
-vim.List([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:('getitem:mappingkey',)
-vim.List([Mapping({"abcG" : FailingNumber()})]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using vim.List([%s])
-vim.List([FailingIter()]):TypeError:('unable to convert FailingIter to vim structure',)
-vim.List([FailingIterNext()]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([%s])
-vim.List([None]):TypeError:('unable to convert NoneType to vim structure',)
-vim.List([{"": 1}]):ValueError:('empty keys are not allowed',)
-vim.List([{u"": 1}]):ValueError:('empty keys are not allowed',)
-vim.List([FailingMapping()]):NotImplementedError:('keys',)
-vim.List([FailingMappingKey()]):NotImplementedError:('getitem:mappingkey',)
-vim.List([FailingNumber()]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->> ListItem
-l[1000]:IndexError:('list index out of range',)
->> ListAssItem
-ll[1] = 2:error:('list is locked',)
-l[1000] = 3:IndexError:('list index out of range',)
->> ListAssSlice
-ll[1:100] = "abcJ":error:('list is locked',)
->>> Testing *Iter* using l[:] = %s
-l[:] = FailingIter():NotImplementedError:('iter',)
-l[:] = FailingIterNext():NotImplementedError:('next',)
-<<< Finished
-nel[1:10:2] = "abcK":ValueError:('attempt to assign sequence of size greater then 2 to extended slice',)
-('a', 'b', 'c', 'O')
-nel[1:10:2] = "a":ValueError:('attempt to assign sequence of size 1 to extended slice of size 2',)
-('a', 'b', 'c', 'O')
-nel[1:1:-1] = "a":ValueError:('attempt to assign sequence of size greater then 0 to extended slice',)
-('a', 'b', 'c', 'O')
-nel[:] = FailingIterNextN(2):NotImplementedError:('next N',)
-('a', 'b', 'c', 'O')
->>> Testing StringToChars using l[:] = [{%s : 1}]
-l[:] = [{1 : 1}]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [{u"\0" : 1}]:TypeError:('expected string without null bytes',)
-l[:] = [{"\0" : 1}]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l[:] = [{"abcF" : {%s : 1}}]
-l[:] = [{"abcF" : {1 : 1}}]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [{"abcF" : {u"\0" : 1}}]:TypeError:('expected string without null bytes',)
-l[:] = [{"abcF" : {"\0" : 1}}]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l[:] = [{"abcF" : Mapping({%s : 1})}]
-l[:] = [{"abcF" : Mapping({1 : 1})}]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [{"abcF" : Mapping({u"\0" : 1})}]:TypeError:('expected string without null bytes',)
-l[:] = [{"abcF" : Mapping({"\0" : 1})}]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using l[:] = [{"abcF" : %s}]
-l[:] = [{"abcF" : FailingIter()}]:TypeError:('unable to convert FailingIter to vim structure',)
-l[:] = [{"abcF" : FailingIterNext()}]:NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [{"abcF" : %s}]
-l[:] = [{"abcF" : None}]:TypeError:('unable to convert NoneType to vim structure',)
-l[:] = [{"abcF" : {"": 1}}]:ValueError:('empty keys are not allowed',)
-l[:] = [{"abcF" : {u"": 1}}]:ValueError:('empty keys are not allowed',)
-l[:] = [{"abcF" : FailingMapping()}]:NotImplementedError:('keys',)
-l[:] = [{"abcF" : FailingMappingKey()}]:NotImplementedError:('getitem:mappingkey',)
-l[:] = [{"abcF" : FailingNumber()}]:TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
-l[:] = [Mapping({1 : 1})]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [Mapping({u"\0" : 1})]:TypeError:('expected string without null bytes',)
-l[:] = [Mapping({"\0" : 1})]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({"abcG" : {%s : 1}})]
-l[:] = [Mapping({"abcG" : {1 : 1}})]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [Mapping({"abcG" : {u"\0" : 1}})]:TypeError:('expected string without null bytes',)
-l[:] = [Mapping({"abcG" : {"\0" : 1}})]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({"abcG" : Mapping({%s : 1})})]
-l[:] = [Mapping({"abcG" : Mapping({1 : 1})})]:TypeError:('expected str() or unicode() instance, but got int',)
-l[:] = [Mapping({"abcG" : Mapping({u"\0" : 1})})]:TypeError:('expected string without null bytes',)
-l[:] = [Mapping({"abcG" : Mapping({"\0" : 1})})]:TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using l[:] = [Mapping({"abcG" : %s})]
-l[:] = [Mapping({"abcG" : FailingIter()})]:TypeError:('unable to convert FailingIter to vim structure',)
-l[:] = [Mapping({"abcG" : FailingIterNext()})]:NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [Mapping({"abcG" : %s})]
-l[:] = [Mapping({"abcG" : None})]:TypeError:('unable to convert NoneType to vim structure',)
-l[:] = [Mapping({"abcG" : {"": 1}})]:ValueError:('empty keys are not allowed',)
-l[:] = [Mapping({"abcG" : {u"": 1}})]:ValueError:('empty keys are not allowed',)
-l[:] = [Mapping({"abcG" : FailingMapping()})]:NotImplementedError:('keys',)
-l[:] = [Mapping({"abcG" : FailingMappingKey()})]:NotImplementedError:('getitem:mappingkey',)
-l[:] = [Mapping({"abcG" : FailingNumber()})]:TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using l[:] = [%s]
-l[:] = [FailingIter()]:TypeError:('unable to convert FailingIter to vim structure',)
-l[:] = [FailingIterNext()]:NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [%s]
-l[:] = [None]:TypeError:('unable to convert NoneType to vim structure',)
-l[:] = [{"": 1}]:ValueError:('empty keys are not allowed',)
-l[:] = [{u"": 1}]:ValueError:('empty keys are not allowed',)
-l[:] = [FailingMapping()]:NotImplementedError:('keys',)
-l[:] = [FailingMappingKey()]:NotImplementedError:('getitem:mappingkey',)
-l[:] = [FailingNumber()]:TypeError:('long() argument must be a string or a number',)
-<<< Finished
->> ListConcatInPlace
->>> Testing *Iter* using l.extend(%s)
-l.extend(FailingIter()):NotImplementedError:('iter',)
-l.extend(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
->>> Testing StringToChars using l.extend([{%s : 1}])
-l.extend([{1 : 1}]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([{u"\0" : 1}]):TypeError:('expected string without null bytes',)
-l.extend([{"\0" : 1}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l.extend([{"abcF" : {%s : 1}}])
-l.extend([{"abcF" : {1 : 1}}]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([{"abcF" : {u"\0" : 1}}]):TypeError:('expected string without null bytes',)
-l.extend([{"abcF" : {"\0" : 1}}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l.extend([{"abcF" : Mapping({%s : 1})}])
-l.extend([{"abcF" : Mapping({1 : 1})}]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([{"abcF" : Mapping({u"\0" : 1})}]):TypeError:('expected string without null bytes',)
-l.extend([{"abcF" : Mapping({"\0" : 1})}]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using l.extend([{"abcF" : %s}])
-l.extend([{"abcF" : FailingIter()}]):TypeError:('unable to convert FailingIter to vim structure',)
-l.extend([{"abcF" : FailingIterNext()}]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([{"abcF" : %s}])
-l.extend([{"abcF" : None}]):TypeError:('unable to convert NoneType to vim structure',)
-l.extend([{"abcF" : {"": 1}}]):ValueError:('empty keys are not allowed',)
-l.extend([{"abcF" : {u"": 1}}]):ValueError:('empty keys are not allowed',)
-l.extend([{"abcF" : FailingMapping()}]):NotImplementedError:('keys',)
-l.extend([{"abcF" : FailingMappingKey()}]):NotImplementedError:('getitem:mappingkey',)
-l.extend([{"abcF" : FailingNumber()}]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({%s : 1})])
-l.extend([Mapping({1 : 1})]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([Mapping({u"\0" : 1})]):TypeError:('expected string without null bytes',)
-l.extend([Mapping({"\0" : 1})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({"abcG" : {%s : 1}})])
-l.extend([Mapping({"abcG" : {1 : 1}})]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([Mapping({"abcG" : {u"\0" : 1}})]):TypeError:('expected string without null bytes',)
-l.extend([Mapping({"abcG" : {"\0" : 1}})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({"abcG" : Mapping({%s : 1})})])
-l.extend([Mapping({"abcG" : Mapping({1 : 1})})]):TypeError:('expected str() or unicode() instance, but got int',)
-l.extend([Mapping({"abcG" : Mapping({u"\0" : 1})})]):TypeError:('expected string without null bytes',)
-l.extend([Mapping({"abcG" : Mapping({"\0" : 1})})]):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using l.extend([Mapping({"abcG" : %s})])
-l.extend([Mapping({"abcG" : FailingIter()})]):TypeError:('unable to convert FailingIter to vim structure',)
-l.extend([Mapping({"abcG" : FailingIterNext()})]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([Mapping({"abcG" : %s})])
-l.extend([Mapping({"abcG" : None})]):TypeError:('unable to convert NoneType to vim structure',)
-l.extend([Mapping({"abcG" : {"": 1}})]):ValueError:('empty keys are not allowed',)
-l.extend([Mapping({"abcG" : {u"": 1}})]):ValueError:('empty keys are not allowed',)
-l.extend([Mapping({"abcG" : FailingMapping()})]):NotImplementedError:('keys',)
-l.extend([Mapping({"abcG" : FailingMappingKey()})]):NotImplementedError:('getitem:mappingkey',)
-l.extend([Mapping({"abcG" : FailingNumber()})]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using l.extend([%s])
-l.extend([FailingIter()]):TypeError:('unable to convert FailingIter to vim structure',)
-l.extend([FailingIterNext()]):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([%s])
-l.extend([None]):TypeError:('unable to convert NoneType to vim structure',)
-l.extend([{"": 1}]):ValueError:('empty keys are not allowed',)
-l.extend([{u"": 1}]):ValueError:('empty keys are not allowed',)
-l.extend([FailingMapping()]):NotImplementedError:('keys',)
-l.extend([FailingMappingKey()]):NotImplementedError:('getitem:mappingkey',)
-l.extend([FailingNumber()]):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->> ListSetattr
-del l.locked:AttributeError:('cannot delete vim.List attributes',)
-l.locked = FailingTrue():NotImplementedError:('bool',)
-l.xxx = True:AttributeError:('cannot set attribute xxx',)
-> Function
->> FunctionConstructor
-vim.Function("123"):ValueError:('unnamed function 123 does not exist',)
-vim.Function("xxx_non_existent_function_xxx"):ValueError:('function xxx_non_existent_function_xxx does not exist',)
-vim.Function("xxx#non#existent#function#xxx"):NOT FAILED
->> FunctionCall
->>> Testing StringToChars using f({%s : 1})
-f({1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
-f({u"\0" : 1}):TypeError:('expected string without null bytes',)
-f({"\0" : 1}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using f({"abcF" : {%s : 1}})
-f({"abcF" : {1 : 1}}):TypeError:('expected str() or unicode() instance, but got int',)
-f({"abcF" : {u"\0" : 1}}):TypeError:('expected string without null bytes',)
-f({"abcF" : {"\0" : 1}}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using f({"abcF" : Mapping({%s : 1})})
-f({"abcF" : Mapping({1 : 1})}):TypeError:('expected str() or unicode() instance, but got int',)
-f({"abcF" : Mapping({u"\0" : 1})}):TypeError:('expected string without null bytes',)
-f({"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using f({"abcF" : %s})
-f({"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
-f({"abcF" : FailingIterNext()}):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using f({"abcF" : %s})
-f({"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
-f({"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
-f({"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
-f({"abcF" : FailingMapping()}):NotImplementedError:('keys',)
-f({"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
-f({"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using f(Mapping({%s : 1}))
-f(Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
-f(Mapping({u"\0" : 1})):TypeError:('expected string without null bytes',)
-f(Mapping({"\0" : 1})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using f(Mapping({"abcG" : {%s : 1}}))
-f(Mapping({"abcG" : {1 : 1}})):TypeError:('expected str() or unicode() instance, but got int',)
-f(Mapping({"abcG" : {u"\0" : 1}})):TypeError:('expected string without null bytes',)
-f(Mapping({"abcG" : {"\0" : 1}})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using f(Mapping({"abcG" : Mapping({%s : 1})}))
-f(Mapping({"abcG" : Mapping({1 : 1})})):TypeError:('expected str() or unicode() instance, but got int',)
-f(Mapping({"abcG" : Mapping({u"\0" : 1})})):TypeError:('expected string without null bytes',)
-f(Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using f(Mapping({"abcG" : %s}))
-f(Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
-f(Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using f(Mapping({"abcG" : %s}))
-f(Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
-f(Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
-f(Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
-f(Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
-f(Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
-f(Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using f(%s)
-f(FailingIter()):TypeError:('unable to convert FailingIter to vim structure',)
-f(FailingIterNext()):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using f(%s)
-f(None):TypeError:('unable to convert NoneType to vim structure',)
-f({"": 1}):ValueError:('empty keys are not allowed',)
-f({u"": 1}):ValueError:('empty keys are not allowed',)
-f(FailingMapping()):NotImplementedError:('keys',)
-f(FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
-f(FailingNumber()):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using fd(self={%s : 1})
-fd(self={1 : 1}):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self={u"\0" : 1}):TypeError:('expected string without null bytes',)
-fd(self={"\0" : 1}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using fd(self={"abcF" : {%s : 1}})
-fd(self={"abcF" : {1 : 1}}):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self={"abcF" : {u"\0" : 1}}):TypeError:('expected string without null bytes',)
-fd(self={"abcF" : {"\0" : 1}}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using fd(self={"abcF" : Mapping({%s : 1})})
-fd(self={"abcF" : Mapping({1 : 1})}):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self={"abcF" : Mapping({u"\0" : 1})}):TypeError:('expected string without null bytes',)
-fd(self={"abcF" : Mapping({"\0" : 1})}):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using fd(self={"abcF" : %s})
-fd(self={"abcF" : FailingIter()}):TypeError:('unable to convert FailingIter to vim structure',)
-fd(self={"abcF" : FailingIterNext()}):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self={"abcF" : %s})
-fd(self={"abcF" : None}):TypeError:('unable to convert NoneType to vim structure',)
-fd(self={"abcF" : {"": 1}}):ValueError:('empty keys are not allowed',)
-fd(self={"abcF" : {u"": 1}}):ValueError:('empty keys are not allowed',)
-fd(self={"abcF" : FailingMapping()}):NotImplementedError:('keys',)
-fd(self={"abcF" : FailingMappingKey()}):NotImplementedError:('getitem:mappingkey',)
-fd(self={"abcF" : FailingNumber()}):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({%s : 1}))
-fd(self=Mapping({1 : 1})):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self=Mapping({u"\0" : 1})):TypeError:('expected string without null bytes',)
-fd(self=Mapping({"\0" : 1})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({"abcG" : {%s : 1}}))
-fd(self=Mapping({"abcG" : {1 : 1}})):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self=Mapping({"abcG" : {u"\0" : 1}})):TypeError:('expected string without null bytes',)
-fd(self=Mapping({"abcG" : {"\0" : 1}})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({"abcG" : Mapping({%s : 1})}))
-fd(self=Mapping({"abcG" : Mapping({1 : 1})})):TypeError:('expected str() or unicode() instance, but got int',)
-fd(self=Mapping({"abcG" : Mapping({u"\0" : 1})})):TypeError:('expected string without null bytes',)
-fd(self=Mapping({"abcG" : Mapping({"\0" : 1})})):TypeError:('expected string without null bytes',)
-<<< Finished
->>> Testing *Iter* using fd(self=Mapping({"abcG" : %s}))
-fd(self=Mapping({"abcG" : FailingIter()})):TypeError:('unable to convert FailingIter to vim structure',)
-fd(self=Mapping({"abcG" : FailingIterNext()})):NotImplementedError:('next',)
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self=Mapping({"abcG" : %s}))
-fd(self=Mapping({"abcG" : None})):TypeError:('unable to convert NoneType to vim structure',)
-fd(self=Mapping({"abcG" : {"": 1}})):ValueError:('empty keys are not allowed',)
-fd(self=Mapping({"abcG" : {u"": 1}})):ValueError:('empty keys are not allowed',)
-fd(self=Mapping({"abcG" : FailingMapping()})):NotImplementedError:('keys',)
-fd(self=Mapping({"abcG" : FailingMappingKey()})):NotImplementedError:('getitem:mappingkey',)
-fd(self=Mapping({"abcG" : FailingNumber()})):TypeError:('long() argument must be a string or a number',)
-<<< Finished
->>> Testing *Iter* using fd(self=%s)
-fd(self=FailingIter()):TypeError:('unable to convert FailingIter to vim dictionary',)
-fd(self=FailingIterNext()):TypeError:('unable to convert FailingIterNext to vim dictionary',)
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self=%s)
-fd(self=None):TypeError:('unable to convert NoneType to vim dictionary',)
-fd(self={"": 1}):ValueError:('empty keys are not allowed',)
-fd(self={u"": 1}):ValueError:('empty keys are not allowed',)
-fd(self=FailingMapping()):NotImplementedError:('keys',)
-fd(self=FailingMappingKey()):NotImplementedError:('getitem:mappingkey',)
-fd(self=FailingNumber()):TypeError:('unable to convert FailingNumber to vim dictionary',)
-<<< Finished
->>> Testing ConvertFromPyMapping using fd(self=%s)
-fd(self=[]):TypeError:('unable to convert list to vim dictionary',)
-<<< Finished
-> TabPage
->> TabPageAttr
-vim.current.tabpage.xxx:AttributeError:('xxx',)
-> TabList
->> TabListItem
-vim.tabpages[1000]:IndexError:('no such tab page',)
-> Window
->> WindowAttr
-vim.current.window.xxx:AttributeError:('xxx',)
->> WindowSetattr
-vim.current.window.buffer = 0:TypeError:('readonly attribute: buffer',)
-vim.current.window.cursor = (100000000, 100000000):error:('cursor position outside buffer',)
-vim.current.window.cursor = True:TypeError:('argument must be 2-item sequence, not bool',)
->>> Testing NumberToLong using vim.current.window.height = %s
-vim.current.window.height = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
-vim.current.window.height = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
-vim.current.window.height = -1:ValueError:('number must be greater or equal to zero',)
-<<< Finished
->>> Testing NumberToLong using vim.current.window.width = %s
-vim.current.window.width = []:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
-vim.current.window.width = None:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
-vim.current.window.width = -1:ValueError:('number must be greater or equal to zero',)
-<<< Finished
-vim.current.window.xxxxxx = True:AttributeError:('xxxxxx',)
-> WinList
->> WinListItem
-vim.windows[1000]:IndexError:('no such window',)
-> Buffer
->> StringToLine (indirect)
-vim.current.buffer[0] = u"\na":error:('string cannot contain newlines',)
-vim.current.buffer[0] = "\na":error:('string cannot contain newlines',)
->> SetBufferLine (indirect)
-vim.current.buffer[0] = True:TypeError:('bad argument type for built-in operation',)
->> SetBufferLineList (indirect)
-vim.current.buffer[:] = True:TypeError:('bad argument type for built-in operation',)
-vim.current.buffer[:] = ["\na", "bc"]:error:('string cannot contain newlines',)
->> InsertBufferLines (indirect)
-vim.current.buffer.append(None):TypeError:('bad argument type for built-in operation',)
-vim.current.buffer.append(["\na", "bc"]):error:('string cannot contain newlines',)
-vim.current.buffer.append("\nbc"):error:('string cannot contain newlines',)
->> RBItem
-vim.current.buffer[100000000]:IndexError:('line number out of range',)
->> RBAsItem
-vim.current.buffer[100000000] = "":IndexError:('line number out of range',)
->> BufferAttr
-vim.current.buffer.xxx:AttributeError:('xxx',)
->> BufferSetattr
-vim.current.buffer.name = True:TypeError:('expected str() or unicode() instance, but got bool',)
-vim.current.buffer.xxx = True:AttributeError:('xxx',)
->> BufferMark
-vim.current.buffer.mark(0):TypeError:('expected str() or unicode() instance, but got int',)
-vim.current.buffer.mark("abcM"):ValueError:('mark name must be a single character',)
-vim.current.buffer.mark("!"):error:('invalid mark name',)
->> BufferRange
-vim.current.buffer.range(1, 2, 3):TypeError:('function takes exactly 2 arguments (3 given)',)
-> BufMap
->> BufMapItem
-vim.buffers[100000000]:KeyError:(100000000,)
->>> Testing NumberToLong using vim.buffers[%s]
-vim.buffers[[]]:TypeError:('expected int(), long() or something supporting coercing to long(), but got list',)
-vim.buffers[None]:TypeError:('expected int(), long() or something supporting coercing to long(), but got NoneType',)
-vim.buffers[-1]:ValueError:('number must be greater then zero',)
-vim.buffers[0]:ValueError:('number must be greater then zero',)
-<<< Finished
-> Current
->> CurrentGetattr
-vim.current.xxx:AttributeError:('xxx',)
->> CurrentSetattr
-vim.current.line = True:TypeError:('bad argument type for built-in operation',)
-vim.current.buffer = True:TypeError:('expected vim.Buffer object, but got bool',)
-vim.current.window = True:TypeError:('expected vim.Window object, but got bool',)
-vim.current.tabpage = True:TypeError:('expected vim.TabPage object, but got bool',)
-vim.current.xxx = True:AttributeError:('xxx',)
-['/testdir']
-'/testdir'
-2,xx
-before
-after
-pythonx/topmodule/__init__.py
-pythonx/topmodule/submodule/__init__.py
-pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
-vim.command("throw 'abcN'"):error:('abcN',)
-Exe("throw 'def'"):error:('def',)
-vim.eval("Exe('throw ''ghi''')"):error:('ghi',)
-vim.eval("Exe('echoerr ''jkl''')"):error:('Vim(echoerr):jkl',)
-vim.eval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
-vim.eval("xxx_unknown_function_xxx()"):error:('Vim:E117: Unknown function: xxx_unknown_function_xxx',)
-vim.bindeval("Exe('xxx_non_existent_command_xxx')"):error:('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',)
-Caught KeyboardInterrupt
-Running :put
-No exception
-
diff --git a/src/testdir/test87.in b/src/testdir/test87.in
deleted file mode 100644
index e45883b59d..0000000000
--- a/src/testdir/test87.in
+++ /dev/null
@@ -1,1406 +0,0 @@
-Tests for various python features. vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:set noswapfile
-:if !has('python3') | e! test.ok | wq! test.out | endif
-:lang C
-:fun Test()
-:py3 import vim
-:let l = []
-:py3 l=vim.bindeval('l')
-:py3 f=vim.bindeval('function("strlen")')
-:" Extending List directly with different types
-:py3 l+=[1, "as'd", [1, 2, f, {'a': 1}]]
-:$put =string(l)
-:$put =string(l[-1])
-:try
-: $put =string(l[-4])
-:catch
-: $put =v:exception[:13]
-:endtry
-:" List assignment
-:py3 l[0]=0
-:$put =string(l)
-:py3 l[-2]=f
-:$put =string(l)
-:"
-:" Extending Dictionary directly with different types
-:let d = {}
-:fun d.f()
-: return 1
-:endfun
-py3 << EOF
-d=vim.bindeval('d')
-d['1']='asd'
-d.update(b=[1, 2, f])
-d.update((('-1', {'a': 1}),))
-d.update({'0': -1})
-dk = d.keys()
-dv = d.values()
-di = d.items()
-dk.sort(key=repr)
-dv.sort(key=repr)
-di.sort(key=repr)
-EOF
-:$put =py3eval('d[''f''](self={})')
-:$put =py3eval('repr(dk)')
-:$put =substitute(py3eval('repr(dv)'),'0x\x\+','','g')
-:$put =substitute(py3eval('repr(di)'),'0x\x\+','','g')
-:for [key, Val] in sort(items(d))
-: $put =string(key) . ' : ' . string(Val)
-: unlet key Val
-:endfor
-:py3 del dk
-:py3 del di
-:py3 del dv
-:"
-:" removing items with del
-:py3 del l[2]
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:try
-: py3 del l[:3]
-: py3 del l[1:]
-:catch
-: $put =v:exception
-:endtry
-:$put =string(l)
-:"
-:py3 del d['-1']
-:py3 del d['f']
-:$put =string(py3eval('d.get(''b'', 1)'))
-:$put =string(py3eval('d.pop(''b'')'))
-:$put =string(py3eval('d.get(''b'', 1)'))
-:$put =string(py3eval('d.pop(''1'', 2)'))
-:$put =string(py3eval('d.pop(''1'', 2)'))
-:$put =py3eval('repr(d.has_key(''0''))')
-:$put =py3eval('repr(d.has_key(''1''))')
-:$put =py3eval('repr(''0'' in d)')
-:$put =py3eval('repr(''1'' in d)')
-:$put =py3eval('repr(list(iter(d)))')
-:$put =string(d)
-:$put =py3eval('repr(d.popitem())')
-:$put =py3eval('repr(d.get(''0''))')
-:$put =py3eval('repr(list(iter(d)))')
-:"
-:" removing items out of range: silently skip items that don't exist
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:" The following two ranges delete nothing as they match empty list:
-:py3 del l[2:1]
-:$put =string(l)
-:py3 del l[2:2]
-:$put =string(l)
-:py3 del l[2:3]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[2:4]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[2:5]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[2:6]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:" The following two ranges delete nothing as they match empty list:
-:py3 del l[-1:2]
-:$put =string(l)
-:py3 del l[-2:2]
-:$put =string(l)
-:py3 del l[-3:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[-4:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[-5:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[-6:2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[::2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[3:0:-2]
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 del l[2:4:-2]
-:$put =string(l)
-:"
-:" Slice assignment to a list
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[0:0]=['a']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[1:2]=['b']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[2:4]=['c']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[4:4]=['d']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[-1:2]=['e']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[-10:2]=['f']
-:$put =string(l)
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:py3 l[2:-10]=['g']
-:$put =string(l)
-:let l = []
-:py3 l=vim.bindeval('l')
-:py3 l[0:0]=['h']
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:py3 l[2:6:2] = [10, 20]
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:py3 l[6:2:-2] = [10, 20]
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:py3 l[6:2] = ()
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:py3 l[6:2:1] = ()
-:$put =string(l)
-:let l = range(8)
-:py3 l=vim.bindeval('l')
-:py3 l[2:2:1] = ()
-:$put =string(l)
-:"
-:" Locked variables
-:let l = [0, 1, 2, 3]
-:py3 l=vim.bindeval('l')
-:lockvar! l
-:py3 l[2]='i'
-:$put =string(l)
-:unlockvar! l
-:"
-:" Function calls
-py3 << EOF
-import sys
-import re
-
-py33_type_error_pattern = re.compile('^__call__\(\) takes (\d+) positional argument but (\d+) were given$')
-
-def ee(expr, g=globals(), l=locals()):
- cb = vim.current.buffer
- try:
- try:
- exec(expr, g, l)
- except Exception as e:
- if sys.version_info >= (3, 3) and e.__class__ is AttributeError and str(e).find('has no attribute')>=0 and not str(e).startswith("'vim."):
- cb.append(expr + ':' + repr((e.__class__, AttributeError(str(e)[str(e).rfind(" '") + 2:-1]))))
- elif sys.version_info >= (3, 3) and e.__class__ is ImportError and str(e).find('No module named \'') >= 0:
- cb.append(expr + ':' + repr((e.__class__, ImportError(str(e).replace("'", '')))))
- elif sys.version_info >= (3, 3) and e.__class__ is TypeError:
- m = py33_type_error_pattern.search(str(e))
- if m:
- msg = '__call__() takes exactly {0} positional argument ({1} given)'.format(m.group(1), m.group(2))
- cb.append(expr + ':' + repr((e.__class__, TypeError(msg))))
- else:
- cb.append(expr + ':' + repr((e.__class__, e)))
- else:
- cb.append(expr + ':' + repr((e.__class__, e)))
- else:
- cb.append(expr + ':NOT FAILED')
- except Exception as e:
- cb.append(expr + '::' + repr((e.__class__, e)))
-EOF
-:fun New(...)
-: return ['NewStart']+a:000+['NewEnd']
-:endfun
-:fun DictNew(...) dict
-: return ['DictNewStart']+a:000+['DictNewEnd', self]
-:endfun
-:let l=[function('New'), function('DictNew')]
-:py3 l=vim.bindeval('l')
-:py3 l.extend(list(l[0](1, 2, 3)))
-:$put =string(l)
-:py3 l.extend(list(l[1](1, 2, 3, self={'a': 'b'})))
-:$put =string(l)
-:py3 l+=[l[0].name]
-:$put =string(l)
-:py3 ee('l[1](1, 2, 3)')
-:py3 f=l[0]
-:delfunction New
-:py3 ee('f(1, 2, 3)')
-:if has('float')
-: let l=[0.0]
-: py3 l=vim.bindeval('l')
-: py3 l.extend([0.0])
-: $put =string(l)
-:else
-: $put ='[0.0, 0.0]'
-:endif
-:let messages=[]
-:delfunction DictNew
-py3 <<EOF
-d=vim.bindeval('{}')
-m=vim.bindeval('messages')
-def em(expr, g=globals(), l=locals()):
- try:
- exec(expr, g, l)
- except Exception as e:
- m.extend([e.__class__.__name__])
-
-em('d["abc1"]')
-em('d["abc1"]="\\0"')
-em('d["abc1"]=vim')
-em('d[""]=1')
-em('d["a\\0b"]=1')
-em('d[b"a\\0b"]=1')
-
-em('d.pop("abc1")')
-em('d.popitem()')
-del em
-del m
-EOF
-:$put =messages
-:unlet messages
-:" locked and scope attributes
-:let d={} | let dl={} | lockvar dl
-:for s in split("d dl v: g:")
-: let name=tr(s, ':', 's')
-: execute 'py3 '.name.'=vim.bindeval("'.s.'")'
-: let toput=s.' : '.join(map(['locked', 'scope'], 'v:val.":".py3eval(name.".".v:val)'), ';')
-: $put =toput
-:endfor
-:silent! let d.abc2=1
-:silent! let dl.abc3=1
-:py3 d.locked=True
-:py3 dl.locked=False
-:silent! let d.def=1
-:silent! let dl.def=1
-:put ='d:'.string(d)
-:put ='dl:'.string(dl)
-:unlet d dl
-:
-:let l=[] | let ll=[] | lockvar ll
-:for s in split("l ll")
-: let name=tr(s, ':', 's')
-: execute 'py3 '.name.'=vim.bindeval("'.s.'")'
-: let toput=s.' : locked:'.py3eval(name.'.locked')
-: $put =toput
-:endfor
-:silent! call extend(l, [0])
-:silent! call extend(ll, [0])
-:py3 l.locked=True
-:py3 ll.locked=False
-:silent! call extend(l, [1])
-:silent! call extend(ll, [1])
-:put ='l:'.string(l)
-:put ='ll:'.string(ll)
-:unlet l ll
-:"
-:" py3eval()
-:let l=py3eval('[0, 1, 2]')
-:$put =string(l)
-:let d=py3eval('{"a": "b", "c": 1, "d": ["e"]}')
-:$put =sort(items(d))
-:if has('float')
-: let f=py3eval('0.0')
-: $put =string(f)
-:else
-: $put ='0.0'
-:endif
-:" Invalid values:
-:for e in ['"\0"', '{"\0": 1}', 'undefined_name', 'vim']
-: try
-: let v=py3eval(e)
-: catch
-: let toput=e.":\t".v:exception[:13]
-: $put =toput
-: endtry
-:endfor
-:"
-:" threading
-:let l = [0]
-:py3 l=vim.bindeval('l')
-py3 <<EOF
-import threading
-import time
-
-class T(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
- self.t = 0
- self.running = True
-
- def run(self):
- while self.running:
- self.t += 1
- time.sleep(0.1)
-
-t = T()
-del T
-t.start()
-EOF
-:sleep 1
-:py3 t.running = False
-:py3 t.join()
-:py3 l[0] = t.t > 8 # check if the background thread is working
-:py3 del time
-:py3 del threading
-:py3 del t
-:$put =string(l)
-:"
-:" settrace
-:let l = []
-:py3 l=vim.bindeval('l')
-py3 <<EOF
-import sys
-
-def traceit(frame, event, arg):
- global l
- if event == "line":
- l += [frame.f_lineno]
- return traceit
-
-def trace_main():
- for i in range(5):
- pass
-EOF
-:py3 sys.settrace(traceit)
-:py3 trace_main()
-:py3 sys.settrace(None)
-:py3 del traceit
-:py3 del trace_main
-:$put =string(l)
-:"
-:" Slice
-:py3 ll = vim.bindeval('[0, 1, 2, 3, 4, 5]')
-:py3 l = ll[:4]
-:$put =string(py3eval('l'))
-:py3 l = ll[2:]
-:$put =string(py3eval('l'))
-:py3 l = ll[:-4]
-:$put =string(py3eval('l'))
-:py3 l = ll[-2:]
-:$put =string(py3eval('l'))
-:py3 l = ll[2:4]
-:$put =string(py3eval('l'))
-:py3 l = ll[4:2]
-:$put =string(py3eval('l'))
-:py3 l = ll[-4:-2]
-:$put =string(py3eval('l'))
-:py3 l = ll[-2:-4]
-:$put =string(py3eval('l'))
-:py3 l = ll[:]
-:$put =string(py3eval('l'))
-:py3 l = ll[0:6]
-:$put =string(py3eval('l'))
-:py3 l = ll[-10:10]
-:$put =string(py3eval('l'))
-:py3 l = ll[4:2:-1]
-:$put =string(py3eval('l'))
-:py3 l = ll[::2]
-:$put =string(py3eval('l'))
-:py3 l = ll[4:2:1]
-:$put =string(py3eval('l'))
-:py3 del l
-:"
-:" Vars
-:let g:foo = 'bac'
-:let w:abc3 = 'def'
-:let b:baz = 'bar'
-:let t:bar = 'jkl'
-:try
-: throw "Abc"
-:catch
-: put =py3eval('vim.vvars[''exception'']')
-:endtry
-:put =py3eval('vim.vars[''foo'']')
-:put =py3eval('vim.current.window.vars[''abc3'']')
-:put =py3eval('vim.current.buffer.vars[''baz'']')
-:put =py3eval('vim.current.tabpage.vars[''bar'']')
-:"
-:" Options
-:" paste: boolean, global
-:" previewheight number, global
-:" operatorfunc: string, global
-:" number: boolean, window-local
-:" numberwidth: number, window-local
-:" colorcolumn: string, window-local
-:" statusline: string, window-local/global
-:" autoindent: boolean, buffer-local
-:" shiftwidth: number, buffer-local
-:" omnifunc: string, buffer-local
-:" preserveindent: boolean, buffer-local/global
-:" path: string, buffer-local/global
-:let g:bufs=[bufnr('%')]
-:new
-:let g:bufs+=[bufnr('%')]
-:vnew
-:let g:bufs+=[bufnr('%')]
-:wincmd j
-:vnew
-:let g:bufs+=[bufnr('%')]
-:wincmd l
-:fun RecVars(opt)
-: let gval =string(eval('&g:'.a:opt))
-: let wvals=join(map(range(1, 4), 'v:val.":".string(getwinvar(v:val, "&".a:opt))'))
-: let bvals=join(map(copy(g:bufs), 'v:val.":".string(getbufvar(v:val, "&".a:opt))'))
-: put =' G: '.gval
-: put =' W: '.wvals
-: put =' B: '.wvals
-:endfun
-py3 << EOF
-def e(s, g=globals(), l=locals()):
- try:
- exec(s, g, l)
- except Exception as e:
- vim.command('return ' + repr(e.__class__.__name__))
-
-def ev(s, g=globals(), l=locals()):
- try:
- return eval(s, g, l)
- except Exception as e:
- vim.command('let exc=' + repr(e.__class__.__name__))
- return 0
-EOF
-:fun E(s)
-: python3 e(vim.eval('a:s'))
-:endfun
-:fun Ev(s)
-: let r=py3eval('ev(vim.eval("a:s"))')
-: if exists('exc')
-: throw exc
-: endif
-: return r
-:endfun
-:py3 gopts1=vim.options
-:py3 wopts1=vim.windows[2].options
-:py3 wopts2=vim.windows[0].options
-:py3 wopts3=vim.windows[1].options
-:py3 bopts1=vim.buffers[vim.bindeval("g:bufs")[2]].options
-:py3 bopts2=vim.buffers[vim.bindeval("g:bufs")[1]].options
-:py3 bopts3=vim.buffers[vim.bindeval("g:bufs")[0]].options
-:$put ='wopts iters equal: '.py3eval('list(wopts1) == list(wopts2)')
-:$put ='bopts iters equal: '.py3eval('list(bopts1) == list(bopts2)')
-:py3 gset=set(iter(gopts1))
-:py3 wset=set(iter(wopts1))
-:py3 bset=set(iter(bopts1))
-:set path=.,..,,
-:let lst=[]
-:let lst+=[['paste', 1, 0, 1, 2, 1, 1, 0 ]]
-:let lst+=[['previewheight', 5, 1, 6, 'a', 0, 1, 0 ]]
-:let lst+=[['operatorfunc', 'A', 'B', 'C', 2, 0, 1, 0 ]]
-:let lst+=[['number', 0, 1, 1, 0, 1, 0, 1 ]]
-:let lst+=[['numberwidth', 2, 3, 5, -100, 0, 0, 1 ]]
-:let lst+=[['colorcolumn', '+1', '+2', '+3', 'abc4', 0, 0, 1 ]]
-:let lst+=[['statusline', '1', '2', '4', 0, 0, 1, 1 ]]
-:let lst+=[['autoindent', 0, 1, 1, 2, 1, 0, 2 ]]
-:let lst+=[['shiftwidth', 0, 2, 1, 3, 0, 0, 2 ]]
-:let lst+=[['omnifunc', 'A', 'B', 'C', 1, 0, 0, 2 ]]
-:let lst+=[['preserveindent', 0, 1, 1, 2, 1, 1, 2 ]]
-:let lst+=[['path', '.,,', ',,', '.', 0, 0, 1, 2 ]]
-:for [oname, oval1, oval2, oval3, invval, bool, global, local] in lst
-: py3 oname=vim.eval('oname')
-: py3 oval1=vim.bindeval('oval1')
-: py3 oval2=vim.bindeval('oval2')
-: py3 oval3=vim.bindeval('oval3')
-: if invval is 0 || invval is 1
-: py3 invval=bool(vim.bindeval('invval'))
-: else
-: py3 invval=vim.bindeval('invval')
-: endif
-: if bool
-: py3 oval1=bool(oval1)
-: py3 oval2=bool(oval2)
-: py3 oval3=bool(oval3)
-: endif
-: put ='>>> '.oname
-: $put =' g/w/b:'.py3eval('oname in gset').'/'.py3eval('oname in wset').'/'.py3eval('oname in bset')
-: $put =' g/w/b (in):'.py3eval('oname in gopts1').'/'.py3eval('oname in wopts1').'/'.py3eval('oname in bopts1')
-: for v in ['gopts1', 'wopts1', 'bopts1']
-: try
-: put =' p/'.v.': '.Ev('repr('.v.'['''.oname.'''])')
-: catch
-: put =' p/'.v.'! '.v:exception
-: endtry
-: let r=E(v.'['''.oname.''']=invval')
-: if r isnot 0
-: put =' inv: '.string(invval).'! '.r
-: endif
-: for vv in (v is# 'gopts1' ? [v] : [v, v[:-2].'2', v[:-2].'3'])
-: let val=substitute(vv, '^.opts', 'oval', '')
-: let r=E(vv.'['''.oname.''']='.val)
-: if r isnot 0
-: put =' '.vv.'! '.r
-: endif
-: endfor
-: endfor
-: call RecVars(oname)
-: for v in ['wopts3', 'bopts3']
-: let r=E('del '.v.'["'.oname.'"]')
-: if r isnot 0
-: put =' del '.v.'! '.r
-: endif
-: endfor
-: call RecVars(oname)
-:endfor
-:delfunction RecVars
-:delfunction E
-:delfunction Ev
-:py3 del ev
-:py3 del e
-:only
-:for buf in g:bufs[1:]
-: execute 'bwipeout!' buf
-:endfor
-:py3 del gopts1
-:py3 del wopts1
-:py3 del wopts2
-:py3 del wopts3
-:py3 del bopts1
-:py3 del bopts2
-:py3 del bopts3
-:py3 del oval1
-:py3 del oval2
-:py3 del oval3
-:py3 del oname
-:py3 del invval
-:"
-:" Test buffer object
-:vnew
-:put ='First line'
-:put ='Second line'
-:put ='Third line'
-:1 delete _
-:py3 b=vim.current.buffer
-:wincmd w
-:mark a
-:augroup BUFS
-: autocmd BufFilePost * python3 cb.append(vim.eval('expand("<abuf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))
-: autocmd BufFilePre * python3 cb.append(vim.eval('expand("<abuf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))
-:augroup END
-py3 << EOF
-cb = vim.current.buffer
-# Tests BufferAppend and BufferItem
-cb.append(b[0])
-# Tests BufferSlice and BufferAssSlice
-cb.append('abc5') # Will be overwritten
-cb[-1:] = b[:-2]
-# Test BufferLength and BufferAssSlice
-cb.append('def') # Will not be overwritten
-cb[len(cb):] = b[:]
-# Test BufferAssItem and BufferMark
-cb.append('ghi') # Will be overwritten
-cb[-1] = repr((len(cb) - cb.mark('a')[0], cb.mark('a')[1]))
-# Test BufferRepr
-cb.append(repr(cb) + repr(b))
-# Modify foreign buffer
-b.append('foo')
-b[0]='bar'
-b[0:0]=['baz']
-vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number)
-# Test assigning to name property
-import os
-old_name = cb.name
-cb.name = 'foo'
-cb.append(cb.name[-11:].replace(os.path.sep, '/'))
-b.name = 'bar'
-cb.append(b.name[-11:].replace(os.path.sep, '/'))
-cb.name = old_name
-cb.append(cb.name[-17:].replace(os.path.sep, '/'))
-del old_name
-# Test CheckBuffer
-for _b in vim.buffers:
- if _b is not cb:
- vim.command('bwipeout! ' + str(_b.number))
-del _b
-cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid)))
-for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc6")'):
- try:
- exec(expr)
- except vim.error:
- pass
- else:
- # Usually a SEGV here
- # Should not happen in any case
- cb.append('No exception for ' + expr)
-vim.command('cd .')
-del b
-EOF
-:"
-:" Test vim.buffers object
-:set hidden
-:edit a
-:buffer #
-:edit b
-:buffer #
-:edit c
-:buffer #
-py3 << EOF
-# Check GCing iterator that was not fully exhausted
-i = iter(vim.buffers)
-cb.append('i:' + str(next(i)))
-# and also check creating more then one iterator at a time
-i2 = iter(vim.buffers)
-cb.append('i2:' + str(next(i2)))
-cb.append('i:' + str(next(i)))
-# The following should trigger GC and not cause any problems
-del i
-del i2
-i3 = iter(vim.buffers)
-cb.append('i3:' + str(next(i3)))
-del i3
-
-prevnum = 0
-for b in vim.buffers:
- # Check buffer order
- if prevnum >= b.number:
- cb.append('!!! Buffer numbers not in strictly ascending order')
- # Check indexing: vim.buffers[number].number == number
- cb.append(str(b.number) + ':' + repr(vim.buffers[b.number]) + '=' + repr(b))
- prevnum = b.number
-del prevnum
-
-cb.append(str(len(vim.buffers)))
-
-bnums = list(map(lambda b: b.number, vim.buffers))[1:]
-
-# Test wiping out buffer with existing iterator
-i4 = iter(vim.buffers)
-cb.append('i4:' + str(next(i4)))
-vim.command('bwipeout! ' + str(bnums.pop(0)))
-try:
- next(i4)
-except vim.error:
- pass
-else:
- cb.append('!!!! No vim.error')
-i4 = iter(vim.buffers)
-vim.command('bwipeout! ' + str(bnums.pop(-1)))
-vim.command('bwipeout! ' + str(bnums.pop(-1)))
-cb.append('i4:' + str(next(i4)))
-try:
- next(i4)
-except StopIteration:
- cb.append('StopIteration')
-del i4
-del bnums
-EOF
-:"
-:" Test vim.{tabpage,window}list and vim.{tabpage,window} objects
-:tabnew 0
-:tabnew 1
-:vnew a.1
-:tabnew 2
-:vnew a.2
-:vnew b.2
-:vnew c.2
-py3 << EOF
-cb.append('Number of tabs: ' + str(len(vim.tabpages)))
-cb.append('Current tab pages:')
-
-def W(w):
- if '(unknown)' in repr(w):
- return '<window object (unknown)>'
- else:
- return repr(w)
-
-def Cursor(w, start=len(cb)):
- if w.buffer is cb:
- return repr((start - w.cursor[0], w.cursor[1]))
- else:
- return repr(w.cursor)
-
-for t in vim.tabpages:
- cb.append(' ' + repr(t) + '(' + str(t.number) + ')' + ': ' + str(len(t.windows)) + ' windows, current is ' + W(t.window))
- cb.append(' Windows:')
- for w in t.windows:
- cb.append(' ' + W(w) + '(' + str(w.number) + ')' + ': displays buffer ' + repr(w.buffer) + '; cursor is at ' + Cursor(w))
- # Other values depend on the size of the terminal, so they are checked partly:
- for attr in ('height', 'row', 'width', 'col'):
- try:
- aval = getattr(w, attr)
- if type(aval) is not int:
- raise TypeError
- if aval < 0:
- raise ValueError
- except Exception as e:
- cb.append('!!!!!! Error while getting attribute ' + attr + ': ' + e.__class__.__name__)
- del aval
- del attr
- w.cursor = (len(w.buffer), 0)
-del W
-del Cursor
-cb.append('Number of windows in current tab page: ' + str(len(vim.windows)))
-if list(vim.windows) != list(vim.current.tabpage.windows):
- cb.append('!!!!!! Windows differ')
-EOF
-:"
-:" Test vim.current
-py3 << EOF
-def H(o):
- return repr(o)
-cb.append('Current tab page: ' + repr(vim.current.tabpage))
-cb.append('Current window: ' + repr(vim.current.window) + ': ' + H(vim.current.window) + ' is ' + H(vim.current.tabpage.window))
-cb.append('Current buffer: ' + repr(vim.current.buffer) + ': ' + H(vim.current.buffer) + ' is ' + H(vim.current.window.buffer)+ ' is ' + H(vim.current.tabpage.window.buffer))
-del H
-# Assigning: fails
-try:
- vim.current.window = vim.tabpages[0].window
-except ValueError:
- cb.append('ValueError at assigning foreign tab window')
-
-for attr in ('window', 'tabpage', 'buffer'):
- try:
- setattr(vim.current, attr, None)
- except TypeError:
- cb.append('Type error at assigning None to vim.current.' + attr)
-del attr
-
-# Assigning: success
-vim.current.tabpage = vim.tabpages[-2]
-vim.current.buffer = cb
-vim.current.window = vim.windows[0]
-vim.current.window.cursor = (len(vim.current.buffer), 0)
-cb.append('Current tab page: ' + repr(vim.current.tabpage))
-cb.append('Current window: ' + repr(vim.current.window))
-cb.append('Current buffer: ' + repr(vim.current.buffer))
-cb.append('Current line: ' + repr(vim.current.line))
-ws = list(vim.windows)
-ts = list(vim.tabpages)
-for b in vim.buffers:
- if b is not cb:
- vim.command('bwipeout! ' + str(b.number))
-del b
-cb.append('w.valid: ' + repr([w.valid for w in ws]))
-cb.append('t.valid: ' + repr([t.valid for t in ts]))
-del w
-del t
-del ts
-del ws
-EOF
-:tabonly!
-:only!
-:"
-:" Test types
-py3 << EOF
-for expr, attr in (
- ('vim.vars', 'Dictionary'),
- ('vim.options', 'Options'),
- ('vim.bindeval("{}")', 'Dictionary'),
- ('vim.bindeval("[]")', 'List'),
- ('vim.bindeval("function(\'tr\')")', 'Function'),
- ('vim.current.buffer', 'Buffer'),
- ('vim.current.range', 'Range'),
- ('vim.current.window', 'Window'),
- ('vim.current.tabpage', 'TabPage'),
-):
- cb.append(expr + ':' + attr + ':' + repr(type(eval(expr)) is getattr(vim, attr)))
-del expr
-del attr
-EOF
-:"
-:" Test __dir__() method
-py3 << EOF
-for name, o in (
- ('current', vim.current),
- ('buffer', vim.current.buffer),
- ('window', vim.current.window),
- ('tabpage', vim.current.tabpage),
- ('range', vim.current.range),
- ('dictionary', vim.bindeval('{}')),
- ('list', vim.bindeval('[]')),
- ('function', vim.bindeval('function("tr")')),
- ('output', sys.stdout),
- ):
- cb.append(name + ':' + ','.join(dir(o)))
-del name
-del o
-EOF
-:"
-:" Test vim.*.__new__
-:$put =string(py3eval('vim.Dictionary({})'))
-:$put =string(py3eval('vim.Dictionary(a=1)'))
-:$put =string(py3eval('vim.Dictionary(((''a'', 1),))'))
-:$put =string(py3eval('vim.List()'))
-:$put =string(py3eval('vim.List(iter(''abc7''))'))
-:$put =string(py3eval('vim.Function(''tr'')'))
-:"
-:" Test stdout/stderr
-:redir => messages
-:py3 sys.stdout.write('abc8') ; sys.stdout.write('def')
-:py3 sys.stderr.write('abc9') ; sys.stderr.write('def')
-:py3 sys.stdout.writelines(iter('abcA'))
-:py3 sys.stderr.writelines(iter('abcB'))
-:redir END
-:$put =string(substitute(messages, '\d\+', '', 'g'))
-:" Test subclassing
-:fun Put(...)
-: $put =string(a:000)
-: return a:000
-:endfun
-py3 << EOF
-class DupDict(vim.Dictionary):
- def __setitem__(self, key, value):
- super(DupDict, self).__setitem__(key, value)
- super(DupDict, self).__setitem__('dup_' + key, value)
-dd = DupDict()
-dd['a'] = 'b'
-
-class DupList(vim.List):
- def __getitem__(self, idx):
- return [super(DupList, self).__getitem__(idx)] * 2
-
-dl = DupList()
-dl2 = DupList(iter('abcC'))
-dl.extend(dl2[0])
-
-class DupFun(vim.Function):
- def __call__(self, arg):
- return super(DupFun, self).__call__(arg, arg)
-
-df = DupFun('Put')
-EOF
-:$put =string(sort(keys(py3eval('dd'))))
-:$put =string(py3eval('dl'))
-:$put =string(py3eval('dl2'))
-:$put =string(py3eval('df(2)'))
-:$put =string(py3eval('dl') is# py3eval('dl'))
-:$put =string(py3eval('dd') is# py3eval('dd'))
-:$put =string(py3eval('df'))
-:delfunction Put
-py3 << EOF
-del DupDict
-del DupList
-del DupFun
-del dd
-del dl
-del dl2
-del df
-EOF
-:"
-:" Test chdir
-py3 << EOF
-import os
-fnamemodify = vim.Function('fnamemodify')
-cb.append(str(fnamemodify('.', ':p:h:t')))
-cb.append(vim.eval('@%'))
-os.chdir('..')
-cb.append(str(fnamemodify('.', ':p:h:t')))
-cb.append(vim.eval('@%').replace(os.path.sep, '/'))
-os.chdir('testdir')
-cb.append(str(fnamemodify('.', ':p:h:t')))
-cb.append(vim.eval('@%'))
-del fnamemodify
-EOF
-:"
-:" Test errors
-:fun F() dict
-:endfun
-:fun D()
-:endfun
-py3 << EOF
-d = vim.Dictionary()
-ned = vim.Dictionary(foo='bar', baz='abcD')
-dl = vim.Dictionary(a=1)
-dl.locked = True
-l = vim.List()
-ll = vim.List('abcE')
-ll.locked = True
-nel = vim.List('abcO')
-f = vim.Function('string')
-fd = vim.Function('F')
-fdel = vim.Function('D')
-vim.command('delfunction D')
-
-def subexpr_test(expr, name, subexprs):
- cb.append('>>> Testing %s using %s' % (name, expr))
- for subexpr in subexprs:
- ee(expr % subexpr)
- cb.append('<<< Finished')
-
-def stringtochars_test(expr):
- return subexpr_test(expr, 'StringToChars', (
- '1', # Fail type checks
- 'b"\\0"', # Fail PyString_AsStringAndSize(object, , NULL) check
- '"\\0"', # Fail PyString_AsStringAndSize(bytes, , NULL) check
- ))
-
-class Mapping(object):
- def __init__(self, d):
- self.d = d
-
- def __getitem__(self, key):
- return self.d[key]
-
- def keys(self):
- return self.d.keys()
-
- def items(self):
- return self.d.items()
-
-def convertfrompyobject_test(expr, recurse=True):
- # pydict_to_tv
- stringtochars_test(expr % '{%s : 1}')
- if recurse:
- convertfrompyobject_test(expr % '{"abcF" : %s}', False)
- # pymap_to_tv
- stringtochars_test(expr % 'Mapping({%s : 1})')
- if recurse:
- convertfrompyobject_test(expr % 'Mapping({"abcG" : %s})', False)
- # pyseq_to_tv
- iter_test(expr)
- return subexpr_test(expr, 'ConvertFromPyObject', (
- 'None', # Not conversible
- '{b"": 1}', # Empty key not allowed
- '{"": 1}', # Same, but with unicode object
- 'FailingMapping()', #
- 'FailingMappingKey()', #
- 'FailingNumber()', #
- ))
-
-def convertfrompymapping_test(expr):
- convertfrompyobject_test(expr)
- return subexpr_test(expr, 'ConvertFromPyMapping', (
- '[]',
- ))
-
-def iter_test(expr):
- return subexpr_test(expr, '*Iter*', (
- 'FailingIter()',
- 'FailingIterNext()',
- ))
-
-def number_test(expr, natural=False, unsigned=False):
- if natural:
- unsigned = True
- return subexpr_test(expr, 'NumberToLong', (
- '[]',
- 'None',
- ) + (('-1',) if unsigned else ())
- + (('0',) if natural else ()))
-
-class FailingTrue(object):
- def __bool__(self):
- raise NotImplementedError('bool')
-
-class FailingIter(object):
- def __iter__(self):
- raise NotImplementedError('iter')
-
-class FailingIterNext(object):
- def __iter__(self):
- return self
-
- def __next__(self):
- raise NotImplementedError('next')
-
-class FailingIterNextN(object):
- def __init__(self, n):
- self.n = n
-
- def __iter__(self):
- return self
-
- def __next__(self):
- if self.n:
- self.n -= 1
- return 1
- else:
- raise NotImplementedError('next N')
-
-class FailingMappingKey(object):
- def __getitem__(self, item):
- raise NotImplementedError('getitem:mappingkey')
-
- def keys(self):
- return list("abcH")
-
-class FailingMapping(object):
- def __getitem__(self):
- raise NotImplementedError('getitem:mapping')
-
- def keys(self):
- raise NotImplementedError('keys')
-
-class FailingList(list):
- def __getitem__(self, idx):
- if i == 2:
- raise NotImplementedError('getitem:list')
- else:
- return super(FailingList, self).__getitem__(idx)
-
-class NoArgsCall(object):
- def __call__(self):
- pass
-
-class FailingCall(object):
- def __call__(self, path):
- raise NotImplementedError('call')
-
-class FailingNumber(object):
- def __int__(self):
- raise NotImplementedError('int')
-
-cb.append("> Output")
-cb.append(">> OutputSetattr")
-ee('del sys.stdout.softspace')
-number_test('sys.stdout.softspace = %s', unsigned=True)
-number_test('sys.stderr.softspace = %s', unsigned=True)
-ee('sys.stdout.attr = None')
-cb.append(">> OutputWrite")
-ee('sys.stdout.write(None)')
-cb.append(">> OutputWriteLines")
-ee('sys.stdout.writelines(None)')
-ee('sys.stdout.writelines([1])')
-iter_test('sys.stdout.writelines(%s)')
-cb.append("> VimCommand")
-stringtochars_test('vim.command(%s)')
-ee('vim.command("", 2)')
-#! Not checked: vim->python exceptions translating: checked later
-cb.append("> VimToPython")
-#! Not checked: everything: needs errors in internal python functions
-cb.append("> VimEval")
-stringtochars_test('vim.eval(%s)')
-ee('vim.eval("", FailingTrue())')
-#! Not checked: everything: needs errors in internal python functions
-cb.append("> VimEvalPy")
-stringtochars_test('vim.bindeval(%s)')
-ee('vim.eval("", 2)')
-#! Not checked: vim->python exceptions translating: checked later
-cb.append("> VimStrwidth")
-stringtochars_test('vim.strwidth(%s)')
-cb.append("> VimForeachRTP")
-ee('vim.foreach_rtp(None)')
-ee('vim.foreach_rtp(NoArgsCall())')
-ee('vim.foreach_rtp(FailingCall())')
-ee('vim.foreach_rtp(int, 2)')
-cb.append('> import')
-old_rtp = vim.options['rtp']
-vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
-ee('import xxx_no_such_module_xxx')
-ee('import failing_import')
-ee('import failing')
-vim.options['rtp'] = old_rtp
-del old_rtp
-cb.append("> Options")
-cb.append(">> OptionsItem")
-ee('vim.options["abcQ"]')
-ee('vim.options[""]')
-stringtochars_test('vim.options[%s]')
-cb.append(">> OptionsContains")
-stringtochars_test('%s in vim.options')
-cb.append("> Dictionary")
-cb.append(">> DictionaryConstructor")
-ee('vim.Dictionary("abcI")')
-##! Not checked: py_dict_alloc failure
-cb.append(">> DictionarySetattr")
-ee('del d.locked')
-ee('d.locked = FailingTrue()')
-ee('vim.vvars.locked = False')
-ee('d.scope = True')
-ee('d.xxx = True')
-cb.append(">> _DictionaryItem")
-ee('d.get("a", 2, 3)')
-stringtochars_test('d.get(%s)')
-ee('d.pop("a")')
-ee('dl.pop("a")')
-cb.append(">> DictionaryContains")
-ee('"" in d')
-ee('0 in d')
-cb.append(">> DictionaryIterNext")
-ee('for i in ned: ned["a"] = 1')
-del i
-cb.append(">> DictionaryAssItem")
-ee('dl["b"] = 1')
-stringtochars_test('d[%s] = 1')
-convertfrompyobject_test('d["a"] = %s')
-cb.append(">> DictionaryUpdate")
-cb.append(">>> kwargs")
-cb.append(">>> iter")
-ee('d.update(FailingMapping())')
-ee('d.update([FailingIterNext()])')
-ee('d.update([FailingIterNextN(1)])')
-iter_test('d.update(%s)')
-convertfrompyobject_test('d.update(%s)')
-stringtochars_test('d.update(((%s, 0),))')
-convertfrompyobject_test('d.update((("a", %s),))')
-cb.append(">> DictionaryPopItem")
-ee('d.popitem(1, 2)')
-cb.append(">> DictionaryHasKey")
-ee('d.has_key()')
-cb.append("> List")
-cb.append(">> ListConstructor")
-ee('vim.List(1, 2)')
-ee('vim.List(a=1)')
-iter_test('vim.List(%s)')
-convertfrompyobject_test('vim.List([%s])')
-cb.append(">> ListItem")
-ee('l[1000]')
-cb.append(">> ListAssItem")
-ee('ll[1] = 2')
-ee('l[1000] = 3')
-cb.append(">> ListAssSlice")
-ee('ll[1:100] = "abcJ"')
-iter_test('l[:] = %s')
-ee('nel[1:10:2] = "abcK"')
-cb.append(repr(tuple(nel)))
-ee('nel[1:10:2] = "a"')
-cb.append(repr(tuple(nel)))
-ee('nel[1:1:-1] = "a"')
-cb.append(repr(tuple(nel)))
-ee('nel[:] = FailingIterNextN(2)')
-cb.append(repr(tuple(nel)))
-convertfrompyobject_test('l[:] = [%s]')
-cb.append(">> ListConcatInPlace")
-iter_test('l.extend(%s)')
-convertfrompyobject_test('l.extend([%s])')
-cb.append(">> ListSetattr")
-ee('del l.locked')
-ee('l.locked = FailingTrue()')
-ee('l.xxx = True')
-cb.append("> Function")
-cb.append(">> FunctionConstructor")
-ee('vim.Function("123")')
-ee('vim.Function("xxx_non_existent_function_xxx")')
-ee('vim.Function("xxx#non#existent#function#xxx")')
-cb.append(">> FunctionCall")
-convertfrompyobject_test('f(%s)')
-convertfrompymapping_test('fd(self=%s)')
-cb.append("> TabPage")
-cb.append(">> TabPageAttr")
-ee('vim.current.tabpage.xxx')
-cb.append("> TabList")
-cb.append(">> TabListItem")
-ee('vim.tabpages[1000]')
-cb.append("> Window")
-cb.append(">> WindowAttr")
-ee('vim.current.window.xxx')
-cb.append(">> WindowSetattr")
-ee('vim.current.window.buffer = 0')
-ee('vim.current.window.cursor = (100000000, 100000000)')
-ee('vim.current.window.cursor = True')
-number_test('vim.current.window.height = %s', unsigned=True)
-number_test('vim.current.window.width = %s', unsigned=True)
-ee('vim.current.window.xxxxxx = True')
-cb.append("> WinList")
-cb.append(">> WinListItem")
-ee('vim.windows[1000]')
-cb.append("> Buffer")
-cb.append(">> StringToLine (indirect)")
-ee('vim.current.buffer[0] = "\\na"')
-ee('vim.current.buffer[0] = b"\\na"')
-cb.append(">> SetBufferLine (indirect)")
-ee('vim.current.buffer[0] = True')
-cb.append(">> SetBufferLineList (indirect)")
-ee('vim.current.buffer[:] = True')
-ee('vim.current.buffer[:] = ["\\na", "bc"]')
-cb.append(">> InsertBufferLines (indirect)")
-ee('vim.current.buffer.append(None)')
-ee('vim.current.buffer.append(["\\na", "bc"])')
-ee('vim.current.buffer.append("\\nbc")')
-cb.append(">> RBItem")
-ee('vim.current.buffer[100000000]')
-cb.append(">> RBAsItem")
-ee('vim.current.buffer[100000000] = ""')
-cb.append(">> BufferAttr")
-ee('vim.current.buffer.xxx')
-cb.append(">> BufferSetattr")
-ee('vim.current.buffer.name = True')
-ee('vim.current.buffer.xxx = True')
-cb.append(">> BufferMark")
-ee('vim.current.buffer.mark(0)')
-ee('vim.current.buffer.mark("abcM")')
-ee('vim.current.buffer.mark("!")')
-cb.append(">> BufferRange")
-ee('vim.current.buffer.range(1, 2, 3)')
-cb.append("> BufMap")
-cb.append(">> BufMapItem")
-ee('vim.buffers[100000000]')
-number_test('vim.buffers[%s]', natural=True)
-cb.append("> Current")
-cb.append(">> CurrentGetattr")
-ee('vim.current.xxx')
-cb.append(">> CurrentSetattr")
-ee('vim.current.line = True')
-ee('vim.current.buffer = True')
-ee('vim.current.window = True')
-ee('vim.current.tabpage = True')
-ee('vim.current.xxx = True')
-del d
-del ned
-del dl
-del l
-del ll
-del nel
-del f
-del fd
-del fdel
-del subexpr_test
-del stringtochars_test
-del Mapping
-del convertfrompyobject_test
-del convertfrompymapping_test
-del iter_test
-del number_test
-del FailingTrue
-del FailingIter
-del FailingIterNext
-del FailingIterNextN
-del FailingMapping
-del FailingMappingKey
-del FailingList
-del NoArgsCall
-del FailingCall
-del FailingNumber
-EOF
-:delfunction F
-:"
-:" Test import
-py3 << EOF
-sys.path.insert(0, os.path.join(os.getcwd(), 'python_before'))
-sys.path.append(os.path.join(os.getcwd(), 'python_after'))
-vim.options['rtp'] = os.getcwd().replace(',', '\\,').replace('\\', '\\\\')
-l = []
-def callback(path):
- l.append(os.path.relpath(path))
-vim.foreach_rtp(callback)
-cb.append(repr(l))
-del l
-def callback(path):
- return os.path.relpath(path)
-cb.append(repr(vim.foreach_rtp(callback)))
-del callback
-from module import dir as d
-from modulex import ddir
-cb.append(d + ',' + ddir)
-import before
-cb.append(before.dir)
-import after
-cb.append(after.dir)
-import topmodule as tm
-import topmodule.submodule as tms
-import topmodule.submodule.subsubmodule.subsubsubmodule as tmsss
-cb.append(tm.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/__init__.py'):])
-cb.append(tms.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/__init__.py'):])
-cb.append(tmsss.__file__.replace(os.path.sep, '/')[-len('modulex/topmodule/submodule/subsubmodule/subsubsubmodule.py'):])
-del before
-del after
-del d
-del ddir
-del tm
-del tms
-del tmsss
-EOF
-:"
-:" Test exceptions
-:fun Exe(e)
-: execute a:e
-:endfun
-py3 << EOF
-Exe = vim.bindeval('function("Exe")')
-ee('vim.command("throw \'abcN\'")')
-ee('Exe("throw \'def\'")')
-ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
-ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
-ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
-ee('vim.eval("xxx_unknown_function_xxx()")')
-ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
-del Exe
-EOF
-:delfunction Exe
-:"
-:" Regression: interrupting vim.command propagates to next vim.command
-py3 << EOF
-def test_keyboard_interrupt():
- try:
- vim.command('while 1 | endwhile')
- except KeyboardInterrupt:
- cb.append('Caught KeyboardInterrupt')
- except Exception as e:
- cb.append('!!!!!!!! Caught exception: ' + repr(e))
- else:
- cb.append('!!!!!!!! No exception')
- try:
- vim.command('$ put =\'Running :put\'')
- except KeyboardInterrupt:
- cb.append('!!!!!!!! Caught KeyboardInterrupt')
- except Exception as e:
- cb.append('!!!!!!!! Caught exception: ' + repr(e))
- else:
- cb.append('No exception')
-EOF
-:debuggreedy
-:call inputsave()
-:call feedkeys("s\ns\ns\ns\nq\n")
-:redir => output
-:debug silent! py3 test_keyboard_interrupt()
-:redir END
-:0 debuggreedy
-:silent $put =output
-:unlet output
-:py3 del test_keyboard_interrupt
-:"
-:" Cleanup
-py3 << EOF
-del cb
-del ee
-del sys
-del os
-del vim
-EOF
-:endfun
-:"
-:fun RunTest()
-:let checkrefs = !empty($PYTHONDUMPREFS)
-:let start = getline(1, '$')
-:for i in range(checkrefs ? 10 : 1)
-: if i != 0
-: %d _
-: call setline(1, start)
-: endif
-: call Test()
-: if i == 0
-: let result = getline(1, '$')
-: endif
-:endfor
-:if checkrefs
-: %d _
-: call setline(1, result)
-:endif
-:endfun
-:"
-:call RunTest()
-:delfunction RunTest
-:delfunction Test
-:call garbagecollect(1)
-:"
-:/^start:/,$wq! test.out
-:" vim: et ts=4 isk-=\:
-:call getchar()
-ENDTEST
-
-start:
diff --git a/src/testdir/test87.ok b/src/testdir/test87.ok
deleted file mode 100644
index d1ec84c6b8..0000000000
--- a/src/testdir/test87.ok
+++ /dev/null
@@ -1,1266 +0,0 @@
-start:
-[1, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
-[1, 2, function('strlen'), {'a': 1}]
-Vim(put):E684:
-[0, 'as''d', [1, 2, function('strlen'), {'a': 1}]]
-[0, function('strlen'), [1, 2, function('strlen'), {'a': 1}]]
-1
-[b'-1', b'0', b'1', b'b', b'f']
-[-1, <vim.Function '1'>, <vim.dictionary object at >, <vim.list object at >, b'asd']
-[(b'-1', <vim.dictionary object at >), (b'0', -1), (b'1', b'asd'), (b'b', <vim.list object at >), (b'f', <vim.Function '1'>)]
-'-1' : {'a': 1}
-'0' : -1
-'1' : 'asd'
-'b' : [1, 2, function('strlen')]
-'f' : function('1')
-[0, function('strlen')]
-[3]
-[1, 2, function('strlen')]
-[1, 2, function('strlen')]
-1
-'asd'
-2
-True
-False
-True
-False
-[b'0']
-{'0': -1}
-(b'0', -1)
-None
-[]
-[0, 1, 2, 3]
-[0, 1, 2, 3]
-[0, 1, 3]
-[0, 1]
-[0, 1]
-[0, 1]
-[0, 1, 2, 3]
-[0, 1, 2, 3]
-[0, 2, 3]
-[2, 3]
-[2, 3]
-[2, 3]
-[1, 3]
-[0, 2]
-[0, 1, 2, 3]
-['a', 0, 1, 2, 3]
-[0, 'b', 2, 3]
-[0, 1, 'c']
-[0, 1, 2, 3, 'd']
-[0, 1, 2, 'e', 3]
-['f', 2, 3]
-[0, 1, 'g', 2, 3]
-['h']
-[0, 1, 10, 3, 20, 5, 6, 7]
-[0, 1, 2, 3, 20, 5, 10, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3, 4, 5, 6, 7]
-[0, 1, 2, 3]
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd']
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}]
-[function('New'), function('DictNew'), 'NewStart', 1, 2, 3, 'NewEnd', 'DictNewStart', 1, 2, 3, 'DictNewEnd', {'a': 'b'}, 'New']
-l[1](1, 2, 3):(<class 'vim.error'>, error('Vim:E725: Calling dict function without Dictionary: DictNew',))
-f(1, 2, 3):(<class 'vim.error'>, error('Vim:E117: Unknown function: New',))
-[0.0, 0.0]
-KeyError
-TypeError
-TypeError
-ValueError
-TypeError
-TypeError
-KeyError
-KeyError
-d : locked:0;scope:0
-dl : locked:1;scope:0
-v: : locked:2;scope:1
-g: : locked:0;scope:2
-d:{'abc2': 1}
-dl:{'def': 1}
-l : locked:0
-ll : locked:1
-l:[0]
-ll:[1]
-[0, 1, 2]
-['a', 'b']
-['c', 1]
-['d', ['e']]
-0.0
-"\0": Vim(let):E859:
-{"\0": 1}: Vim(let):E859:
-undefined_name: Vim(let):Trace
-vim: Vim(let):E859:
-[1]
-[1, 10, 11, 10, 11, 10, 11, 10, 11, 10, 11, 10, 1]
-[0, 1, 2, 3]
-[2, 3, 4, 5]
-[0, 1]
-[4, 5]
-[2, 3]
-[]
-[2, 3]
-[]
-[0, 1, 2, 3, 4, 5]
-[0, 1, 2, 3, 4, 5]
-[0, 1, 2, 3, 4, 5]
-[4, 3]
-[0, 2, 4]
-[]
-Abc
-bac
-def
-bar
-jkl
-wopts iters equal: 1
-bopts iters equal: 1
->>> paste
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: False
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 2! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 1
- W: 1:1 2:1 3:1 4:1
- B: 1:1 2:1 3:1 4:1
- del wopts3! KeyError
- del bopts3! KeyError
- G: 1
- W: 1:1 2:1 3:1 4:1
- B: 1:1 2:1 3:1 4:1
->>> previewheight
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: 12
- inv: 'a'! TypeError
- p/wopts1! KeyError
- inv: 'a'! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 'a'! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 5
- W: 1:5 2:5 3:5 4:5
- B: 1:5 2:5 3:5 4:5
- del wopts3! KeyError
- del bopts3! KeyError
- G: 5
- W: 1:5 2:5 3:5 4:5
- B: 1:5 2:5 3:5 4:5
->>> operatorfunc
- g/w/b:1/0/0
- g/w/b (in):1/0/0
- p/gopts1: b''
- inv: 2! TypeError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1! KeyError
- inv: 2! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 'A'
- W: 1:'A' 2:'A' 3:'A' 4:'A'
- B: 1:'A' 2:'A' 3:'A' 4:'A'
- del wopts3! KeyError
- del bopts3! KeyError
- G: 'A'
- W: 1:'A' 2:'A' 3:'A' 4:'A'
- B: 1:'A' 2:'A' 3:'A' 4:'A'
->>> number
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: 0! KeyError
- gopts1! KeyError
- p/wopts1: False
- p/bopts1! KeyError
- inv: 0! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 0
- W: 1:1 2:1 3:0 4:0
- B: 1:1 2:1 3:0 4:0
- del wopts3! ValueError
- del bopts3! KeyError
- G: 0
- W: 1:1 2:1 3:0 4:0
- B: 1:1 2:1 3:0 4:0
->>> numberwidth
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: -100! KeyError
- gopts1! KeyError
- p/wopts1: 8
- inv: -100! error
- p/bopts1! KeyError
- inv: -100! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: 8
- W: 1:3 2:5 3:2 4:8
- B: 1:3 2:5 3:2 4:8
- del wopts3! ValueError
- del bopts3! KeyError
- G: 8
- W: 1:3 2:5 3:2 4:8
- B: 1:3 2:5 3:2 4:8
->>> colorcolumn
- g/w/b:0/1/0
- g/w/b (in):0/1/0
- p/gopts1! KeyError
- inv: 'abc4'! KeyError
- gopts1! KeyError
- p/wopts1: b''
- inv: 'abc4'! error
- p/bopts1! KeyError
- inv: 'abc4'! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: ''
- W: 1:'+2' 2:'+3' 3:'+1' 4:''
- B: 1:'+2' 2:'+3' 3:'+1' 4:''
- del wopts3! ValueError
- del bopts3! KeyError
- G: ''
- W: 1:'+2' 2:'+3' 3:'+1' 4:''
- B: 1:'+2' 2:'+3' 3:'+1' 4:''
->>> statusline
- g/w/b:1/1/0
- g/w/b (in):1/1/0
- p/gopts1: b''
- inv: 0! TypeError
- p/wopts1: None
- inv: 0! TypeError
- p/bopts1! KeyError
- inv: 0! KeyError
- bopts1! KeyError
- bopts2! KeyError
- bopts3! KeyError
- G: '1'
- W: 1:'2' 2:'4' 3:'1' 4:'1'
- B: 1:'2' 2:'4' 3:'1' 4:'1'
- del bopts3! KeyError
- G: '1'
- W: 1:'2' 2:'1' 3:'1' 4:'1'
- B: 1:'2' 2:'1' 3:'1' 4:'1'
->>> autoindent
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 2! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: False
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
->>> shiftwidth
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 3! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 3! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: 8
- G: 8
- W: 1:0 2:2 3:8 4:1
- B: 1:0 2:2 3:8 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 8
- W: 1:0 2:2 3:8 4:1
- B: 1:0 2:2 3:8 4:1
->>> omnifunc
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 1! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 1! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: b''
- inv: 1! TypeError
- G: ''
- W: 1:'A' 2:'B' 3:'' 4:'C'
- B: 1:'A' 2:'B' 3:'' 4:'C'
- del wopts3! KeyError
- del bopts3! ValueError
- G: ''
- W: 1:'A' 2:'B' 3:'' 4:'C'
- B: 1:'A' 2:'B' 3:'' 4:'C'
->>> preserveindent
- g/w/b:0/0/1
- g/w/b (in):0/0/1
- p/gopts1! KeyError
- inv: 2! KeyError
- gopts1! KeyError
- p/wopts1! KeyError
- inv: 2! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: False
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
- del wopts3! KeyError
- del bopts3! ValueError
- G: 0
- W: 1:0 2:1 3:0 4:1
- B: 1:0 2:1 3:0 4:1
->>> path
- g/w/b:1/0/1
- g/w/b (in):1/0/1
- p/gopts1: b'.,..,,'
- inv: 0! TypeError
- p/wopts1! KeyError
- inv: 0! KeyError
- wopts1! KeyError
- wopts2! KeyError
- wopts3! KeyError
- p/bopts1: None
- inv: 0! TypeError
- G: '.,,'
- W: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- B: 1:'.,,' 2:',,' 3:'.,,' 4:'.'
- del wopts3! KeyError
- G: '.,,'
- W: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
- B: 1:'.,,' 2:',,' 3:'.,,' 4:'.,,'
-First line
-First line
-def
-First line
-Second line
-Third line
-(7, 2)
-<buffer test87.in><buffer >
-baz
-bar
-Second line
-Third line
-foo
-1:BufFilePre:1
-1:BufFilePost:1
-testdir/foo
-5:BufFilePre:5
-5:BufFilePost:5
-testdir/bar
-1:BufFilePre:1
-1:BufFilePost:1
-testdir/test87.in
-valid: b:False, cb:True
-i:<buffer test87.in>
-i2:<buffer test87.in>
-i:<buffer a>
-i3:<buffer test87.in>
-1:<buffer test87.in>=<buffer test87.in>
-8:<buffer a>=<buffer a>
-9:<buffer b>=<buffer b>
-10:<buffer c>=<buffer c>
-4
-i4:<buffer test87.in>
-i4:<buffer test87.in>
-StopIteration
-Number of tabs: 4
-Current tab pages:
- <tabpage 0>(1): 1 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (37, 0)
- <tabpage 1>(2): 1 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
- <tabpage 2>(3): 2 windows, current is <window object (unknown)>
- Windows:
- <window object (unknown)>(1): displays buffer <buffer a.1>; cursor is at (1, 0)
- <window object (unknown)>(2): displays buffer <buffer 1>; cursor is at (1, 0)
- <tabpage 3>(4): 4 windows, current is <window 0>
- Windows:
- <window 0>(1): displays buffer <buffer c.2>; cursor is at (1, 0)
- <window 1>(2): displays buffer <buffer b.2>; cursor is at (1, 0)
- <window 2>(3): displays buffer <buffer a.2>; cursor is at (1, 0)
- <window 3>(4): displays buffer <buffer 2>; cursor is at (1, 0)
-Number of windows in current tab page: 4
-Current tab page: <tabpage 3>
-Current window: <window 0>: <window 0> is <window 0>
-Current buffer: <buffer c.2>: <buffer c.2> is <buffer c.2> is <buffer c.2>
-ValueError at assigning foreign tab window
-Type error at assigning None to vim.current.window
-Type error at assigning None to vim.current.tabpage
-Type error at assigning None to vim.current.buffer
-Current tab page: <tabpage 2>
-Current window: <window 0>
-Current buffer: <buffer test87.in>
-Current line: 'Type error at assigning None to vim.current.buffer'
-w.valid: [True, False]
-t.valid: [True, False, True, False]
-vim.vars:Dictionary:True
-vim.options:Options:True
-vim.bindeval("{}"):Dictionary:True
-vim.bindeval("[]"):List:True
-vim.bindeval("function('tr')"):Function:True
-vim.current.buffer:Buffer:True
-vim.current.range:Range:True
-vim.current.window:Window:True
-vim.current.tabpage:TabPage:True
-current:__dir__,buffer,line,range,tabpage,window
-buffer:__dir__,append,mark,name,number,options,range,valid,vars
-window:__dir__,buffer,col,cursor,height,number,options,row,tabpage,valid,vars
-tabpage:__dir__,number,valid,vars,window,windows
-range:__dir__,append,end,start
-dictionary:__dir__,get,has_key,items,keys,locked,pop,popitem,scope,update,values
-list:__dir__,extend,locked
-function:__dir__,softspace
-output:__dir__,flush,softspace,write,writelines
-{}
-{'a': 1}
-{'a': 1}
-[]
-['a', 'b', 'c', '7']
-function('tr')
-'
-abcdef
-line :
-abcdef
-abcA
-line :
-abcB'
-['a', 'dup_a']
-['a', 'a']
-['a', 'b', 'c', 'C']
-[2, 2]
-[2, 2]
-1
-1
-function('Put')
-b'testdir'
-test87.in
-b'src'
-testdir/test87.in
-b'testdir'
-test87.in
-> Output
->> OutputSetattr
-del sys.stdout.softspace:(<class 'AttributeError'>, AttributeError("can't delete OutputObject attributes",))
->>> Testing NumberToLong using sys.stdout.softspace = %s
-sys.stdout.softspace = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
-sys.stdout.softspace = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
-sys.stdout.softspace = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
-<<< Finished
->>> Testing NumberToLong using sys.stderr.softspace = %s
-sys.stderr.softspace = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
-sys.stderr.softspace = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
-sys.stderr.softspace = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
-<<< Finished
-sys.stdout.attr = None:(<class 'AttributeError'>, AttributeError('invalid attribute: attr',))
->> OutputWrite
-sys.stdout.write(None):(<class 'TypeError'>, TypeError("Can't convert 'NoneType' object to str implicitly",))
->> OutputWriteLines
-sys.stdout.writelines(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
-sys.stdout.writelines([1]):(<class 'TypeError'>, TypeError("Can't convert 'int' object to str implicitly",))
->>> Testing *Iter* using sys.stdout.writelines(%s)
-sys.stdout.writelines(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
-sys.stdout.writelines(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
-> VimCommand
->>> Testing StringToChars using vim.command(%s)
-vim.command(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.command(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.command("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-vim.command("", 2):(<class 'TypeError'>, TypeError('command() takes exactly one argument (2 given)',))
-> VimToPython
-> VimEval
->>> Testing StringToChars using vim.eval(%s)
-vim.eval(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.eval(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.eval("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-vim.eval("", FailingTrue()):(<class 'TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
-> VimEvalPy
->>> Testing StringToChars using vim.bindeval(%s)
-vim.bindeval(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.bindeval(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.bindeval("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-vim.eval("", 2):(<class 'TypeError'>, TypeError('function takes exactly 1 argument (2 given)',))
-> VimStrwidth
->>> Testing StringToChars using vim.strwidth(%s)
-vim.strwidth(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.strwidth(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.strwidth("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-> VimForeachRTP
-vim.foreach_rtp(None):(<class 'TypeError'>, TypeError("'NoneType' object is not callable",))
-vim.foreach_rtp(NoArgsCall()):(<class 'TypeError'>, TypeError('__call__() takes exactly 1 positional argument (2 given)',))
-vim.foreach_rtp(FailingCall()):(<class 'NotImplementedError'>, NotImplementedError('call',))
-vim.foreach_rtp(int, 2):(<class 'TypeError'>, TypeError('foreach_rtp() takes exactly one argument (2 given)',))
-> import
-import xxx_no_such_module_xxx:(<class 'ImportError'>, ImportError('No module named xxx_no_such_module_xxx',))
-import failing_import:(<class 'ImportError'>, ImportError('No module named failing_import',))
-import failing:(<class 'NotImplementedError'>, NotImplementedError())
-> Options
->> OptionsItem
-vim.options["abcQ"]:(<class 'KeyError'>, KeyError('abcQ',))
-vim.options[""]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
->>> Testing StringToChars using vim.options[%s]
-vim.options[1]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.options[b"\0"]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.options["\0"]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->> OptionsContains
->>> Testing StringToChars using %s in vim.options
-1 in vim.options:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-b"\0" in vim.options:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-"\0" in vim.options:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-> Dictionary
->> DictionaryConstructor
-vim.Dictionary("abcI"):(<class 'ValueError'>, ValueError('expected sequence element of size 2, but got sequence of size 1',))
->> DictionarySetattr
-del d.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.Dictionary attributes',))
-d.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError('bool',))
-vim.vvars.locked = False:(<class 'TypeError'>, TypeError('cannot modify fixed dictionary',))
-d.scope = True:(<class 'AttributeError'>, AttributeError('cannot set attribute scope',))
-d.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set attribute xxx',))
->> _DictionaryItem
-d.get("a", 2, 3):(<class 'TypeError'>, TypeError('function takes at most 2 arguments (3 given)',))
->>> Testing StringToChars using d.get(%s)
-d.get(1):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.get(b"\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.get("\0"):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
-d.pop("a"):(<class 'KeyError'>, KeyError('a',))
-dl.pop("a"):(<class 'vim.error'>, error('dictionary is locked',))
->> DictionaryContains
-"" in d:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-0 in d:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
->> DictionaryIterNext
-for i in ned: ned["a"] = 1:(<class 'RuntimeError'>, RuntimeError('hashtab changed during iteration',))
->> DictionaryAssItem
-dl["b"] = 1:(<class 'vim.error'>, error('dictionary is locked',))
->>> Testing StringToChars using d[%s] = 1
-d[1] = 1:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d[b"\0"] = 1:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["\0"] = 1:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d["a"] = {%s : 1}
-d["a"] = {1 : 1}:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = {b"\0" : 1}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = {"\0" : 1}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d["a"] = {"abcF" : {%s : 1}}
-d["a"] = {"abcF" : {1 : 1}}:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = {"abcF" : {b"\0" : 1}}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = {"abcF" : {"\0" : 1}}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d["a"] = {"abcF" : Mapping({%s : 1})}
-d["a"] = {"abcF" : Mapping({1 : 1})}:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = {"abcF" : Mapping({b"\0" : 1})}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = {"abcF" : Mapping({"\0" : 1})}:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d["a"] = {"abcF" : %s}
-d["a"] = {"abcF" : FailingIter()}:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d["a"] = {"abcF" : FailingIterNext()}:(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = {"abcF" : %s}
-d["a"] = {"abcF" : None}:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d["a"] = {"abcF" : {b"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = {"abcF" : {"": 1}}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = {"abcF" : FailingMapping()}:(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d["a"] = {"abcF" : FailingMappingKey()}:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d["a"] = {"abcF" : FailingNumber()}:(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({%s : 1})
-d["a"] = Mapping({1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = Mapping({b"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = Mapping({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({"abcG" : {%s : 1}})
-d["a"] = Mapping({"abcG" : {1 : 1}}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = Mapping({"abcG" : {b"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = Mapping({"abcG" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d["a"] = Mapping({"abcG" : Mapping({%s : 1})})
-d["a"] = Mapping({"abcG" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d["a"] = Mapping({"abcG" : Mapping({b"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d["a"] = Mapping({"abcG" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d["a"] = Mapping({"abcG" : %s})
-d["a"] = Mapping({"abcG" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d["a"] = Mapping({"abcG" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = Mapping({"abcG" : %s})
-d["a"] = Mapping({"abcG" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d["a"] = Mapping({"abcG" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = Mapping({"abcG" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = Mapping({"abcG" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d["a"] = Mapping({"abcG" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d["a"] = Mapping({"abcG" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using d["a"] = %s
-d["a"] = FailingIter():(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d["a"] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d["a"] = %s
-d["a"] = None:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d["a"] = {b"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = {"": 1}:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d["a"] = FailingMapping():(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d["a"] = FailingMappingKey():(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d["a"] = FailingNumber():(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->> DictionaryUpdate
->>> kwargs
->>> iter
-d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-d.update([FailingIterNextN(1)]):(<class 'NotImplementedError'>, NotImplementedError('next N',))
->>> Testing *Iter* using d.update(%s)
-d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
-d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing StringToChars using d.update({%s : 1})
-d.update({1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update({b"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update({"abcF" : {%s : 1}})
-d.update({"abcF" : {1 : 1}}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update({"abcF" : {b"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update({"abcF" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update({"abcF" : Mapping({%s : 1})})
-d.update({"abcF" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update({"abcF" : Mapping({b"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update({"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d.update({"abcF" : %s})
-d.update({"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d.update({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update({"abcF" : %s})
-d.update({"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d.update({"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update({"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update({"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({%s : 1}))
-d.update(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update(Mapping({b"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update(Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({"abcG" : {%s : 1}}))
-d.update(Mapping({"abcG" : {1 : 1}})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update(Mapping({"abcG" : {b"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update(Mapping({"abcG" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update(Mapping({"abcG" : Mapping({%s : 1})}))
-d.update(Mapping({"abcG" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update(Mapping({"abcG" : Mapping({b"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update(Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d.update(Mapping({"abcG" : %s}))
-d.update(Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d.update(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update(Mapping({"abcG" : %s}))
-d.update(Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d.update(Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update(Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update(Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using d.update(%s)
-d.update(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
-d.update(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update(%s)
-d.update(None):(<class 'TypeError'>, TypeError("'NoneType' object is not iterable",))
-d.update({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update(FailingNumber()):(<class 'TypeError'>, TypeError("'FailingNumber' object is not iterable",))
-<<< Finished
->>> Testing StringToChars using d.update(((%s, 0),))
-d.update(((1, 0),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update(((b"\0", 0),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("\0", 0),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", {%s : 1}),))
-d.update((("a", {1 : 1}),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", {b"\0" : 1}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", {"\0" : 1}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", {"abcF" : {%s : 1}}),))
-d.update((("a", {"abcF" : {1 : 1}}),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", {"abcF" : {b"\0" : 1}}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", {"abcF" : {"\0" : 1}}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", {"abcF" : Mapping({%s : 1})}),))
-d.update((("a", {"abcF" : Mapping({1 : 1})}),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", {"abcF" : Mapping({b"\0" : 1})}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", {"abcF" : Mapping({"\0" : 1})}),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d.update((("a", {"abcF" : %s}),))
-d.update((("a", {"abcF" : FailingIter()}),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d.update((("a", {"abcF" : FailingIterNext()}),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", {"abcF" : %s}),))
-d.update((("a", {"abcF" : None}),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d.update((("a", {"abcF" : {b"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", {"abcF" : {"": 1}}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", {"abcF" : FailingMapping()}),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update((("a", {"abcF" : FailingMappingKey()}),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update((("a", {"abcF" : FailingNumber()}),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({%s : 1})),))
-d.update((("a", Mapping({1 : 1})),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", Mapping({b"\0" : 1})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", Mapping({"\0" : 1})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({"abcG" : {%s : 1}})),))
-d.update((("a", Mapping({"abcG" : {1 : 1}})),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", Mapping({"abcG" : {b"\0" : 1}})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", Mapping({"abcG" : {"\0" : 1}})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using d.update((("a", Mapping({"abcG" : Mapping({%s : 1})})),))
-d.update((("a", Mapping({"abcG" : Mapping({1 : 1})})),)):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-d.update((("a", Mapping({"abcG" : Mapping({b"\0" : 1})})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-d.update((("a", Mapping({"abcG" : Mapping({"\0" : 1})})),)):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using d.update((("a", Mapping({"abcG" : %s})),))
-d.update((("a", Mapping({"abcG" : FailingIter()})),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d.update((("a", Mapping({"abcG" : FailingIterNext()})),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", Mapping({"abcG" : %s})),))
-d.update((("a", Mapping({"abcG" : None})),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d.update((("a", Mapping({"abcG" : {b"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", Mapping({"abcG" : {"": 1}})),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", Mapping({"abcG" : FailingMapping()})),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update((("a", Mapping({"abcG" : FailingMappingKey()})),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update((("a", Mapping({"abcG" : FailingNumber()})),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using d.update((("a", %s),))
-d.update((("a", FailingIter()),)):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-d.update((("a", FailingIterNext()),)):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using d.update((("a", %s),))
-d.update((("a", None),)):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-d.update((("a", {b"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", {"": 1}),)):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-d.update((("a", FailingMapping()),)):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-d.update((("a", FailingMappingKey()),)):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-d.update((("a", FailingNumber()),)):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->> DictionaryPopItem
-d.popitem(1, 2):(<class 'TypeError'>, TypeError('popitem() takes no arguments (2 given)',))
->> DictionaryHasKey
-d.has_key():(<class 'TypeError'>, TypeError('has_key() takes exactly one argument (0 given)',))
-> List
->> ListConstructor
-vim.List(1, 2):(<class 'TypeError'>, TypeError('function takes at most 1 argument (2 given)',))
-vim.List(a=1):(<class 'TypeError'>, TypeError('list constructor does not accept keyword arguments',))
->>> Testing *Iter* using vim.List(%s)
-vim.List(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
-vim.List(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing StringToChars using vim.List([{%s : 1}])
-vim.List([{1 : 1}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([{b"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([{"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using vim.List([{"abcF" : {%s : 1}}])
-vim.List([{"abcF" : {1 : 1}}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([{"abcF" : {b"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([{"abcF" : {"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using vim.List([{"abcF" : Mapping({%s : 1})}])
-vim.List([{"abcF" : Mapping({1 : 1})}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([{"abcF" : Mapping({b"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([{"abcF" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using vim.List([{"abcF" : %s}])
-vim.List([{"abcF" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-vim.List([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([{"abcF" : %s}])
-vim.List([{"abcF" : None}]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-vim.List([{"abcF" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([{"abcF" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-vim.List([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-vim.List([{"abcF" : FailingNumber()}]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({%s : 1})])
-vim.List([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([Mapping({b"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([Mapping({"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({"abcG" : {%s : 1}})])
-vim.List([Mapping({"abcG" : {1 : 1}})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([Mapping({"abcG" : {b"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([Mapping({"abcG" : {"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using vim.List([Mapping({"abcG" : Mapping({%s : 1})})])
-vim.List([Mapping({"abcG" : Mapping({1 : 1})})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.List([Mapping({"abcG" : Mapping({b"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-vim.List([Mapping({"abcG" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using vim.List([Mapping({"abcG" : %s})])
-vim.List([Mapping({"abcG" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-vim.List([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([Mapping({"abcG" : %s})])
-vim.List([Mapping({"abcG" : None})]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-vim.List([Mapping({"abcG" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([Mapping({"abcG" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-vim.List([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-vim.List([Mapping({"abcG" : FailingNumber()})]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using vim.List([%s])
-vim.List([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-vim.List([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using vim.List([%s])
-vim.List([None]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-vim.List([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-vim.List([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-vim.List([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-vim.List([FailingNumber()]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->> ListItem
-l[1000]:(<class 'IndexError'>, IndexError('list index out of range',))
->> ListAssItem
-ll[1] = 2:(<class 'vim.error'>, error('list is locked',))
-l[1000] = 3:(<class 'IndexError'>, IndexError('list index out of range',))
->> ListAssSlice
-ll[1:100] = "abcJ":(<class 'vim.error'>, error('list is locked',))
->>> Testing *Iter* using l[:] = %s
-l[:] = FailingIter():(<class 'NotImplementedError'>, NotImplementedError('iter',))
-l[:] = FailingIterNext():(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
-nel[1:10:2] = "abcK":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater then 2 to extended slice',))
-(b'a', b'b', b'c', b'O')
-nel[1:10:2] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size 1 to extended slice of size 2',))
-(b'a', b'b', b'c', b'O')
-nel[1:1:-1] = "a":(<class 'ValueError'>, ValueError('attempt to assign sequence of size greater then 0 to extended slice',))
-(b'a', b'b', b'c', b'O')
-nel[:] = FailingIterNextN(2):(<class 'NotImplementedError'>, NotImplementedError('next N',))
-(b'a', b'b', b'c', b'O')
->>> Testing StringToChars using l[:] = [{%s : 1}]
-l[:] = [{1 : 1}]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [{b"\0" : 1}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [{"\0" : 1}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l[:] = [{"abcF" : {%s : 1}}]
-l[:] = [{"abcF" : {1 : 1}}]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [{"abcF" : {b"\0" : 1}}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [{"abcF" : {"\0" : 1}}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l[:] = [{"abcF" : Mapping({%s : 1})}]
-l[:] = [{"abcF" : Mapping({1 : 1})}]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [{"abcF" : Mapping({b"\0" : 1})}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [{"abcF" : Mapping({"\0" : 1})}]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using l[:] = [{"abcF" : %s}]
-l[:] = [{"abcF" : FailingIter()}]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l[:] = [{"abcF" : FailingIterNext()}]:(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [{"abcF" : %s}]
-l[:] = [{"abcF" : None}]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l[:] = [{"abcF" : {b"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [{"abcF" : {"": 1}}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [{"abcF" : FailingMapping()}]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l[:] = [{"abcF" : FailingMappingKey()}]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l[:] = [{"abcF" : FailingNumber()}]:(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({%s : 1})]
-l[:] = [Mapping({1 : 1})]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [Mapping({b"\0" : 1})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [Mapping({"\0" : 1})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({"abcG" : {%s : 1}})]
-l[:] = [Mapping({"abcG" : {1 : 1}})]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [Mapping({"abcG" : {b"\0" : 1}})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [Mapping({"abcG" : {"\0" : 1}})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l[:] = [Mapping({"abcG" : Mapping({%s : 1})})]
-l[:] = [Mapping({"abcG" : Mapping({1 : 1})})]:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l[:] = [Mapping({"abcG" : Mapping({b"\0" : 1})})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l[:] = [Mapping({"abcG" : Mapping({"\0" : 1})})]:(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using l[:] = [Mapping({"abcG" : %s})]
-l[:] = [Mapping({"abcG" : FailingIter()})]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l[:] = [Mapping({"abcG" : FailingIterNext()})]:(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [Mapping({"abcG" : %s})]
-l[:] = [Mapping({"abcG" : None})]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l[:] = [Mapping({"abcG" : {b"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [Mapping({"abcG" : {"": 1}})]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [Mapping({"abcG" : FailingMapping()})]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l[:] = [Mapping({"abcG" : FailingMappingKey()})]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l[:] = [Mapping({"abcG" : FailingNumber()})]:(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using l[:] = [%s]
-l[:] = [FailingIter()]:(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l[:] = [FailingIterNext()]:(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l[:] = [%s]
-l[:] = [None]:(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l[:] = [{b"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [{"": 1}]:(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l[:] = [FailingMapping()]:(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l[:] = [FailingMappingKey()]:(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l[:] = [FailingNumber()]:(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->> ListConcatInPlace
->>> Testing *Iter* using l.extend(%s)
-l.extend(FailingIter()):(<class 'NotImplementedError'>, NotImplementedError('iter',))
-l.extend(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing StringToChars using l.extend([{%s : 1}])
-l.extend([{1 : 1}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([{b"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([{"\0" : 1}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l.extend([{"abcF" : {%s : 1}}])
-l.extend([{"abcF" : {1 : 1}}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([{"abcF" : {b"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([{"abcF" : {"\0" : 1}}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l.extend([{"abcF" : Mapping({%s : 1})}])
-l.extend([{"abcF" : Mapping({1 : 1})}]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([{"abcF" : Mapping({b"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([{"abcF" : Mapping({"\0" : 1})}]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using l.extend([{"abcF" : %s}])
-l.extend([{"abcF" : FailingIter()}]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l.extend([{"abcF" : FailingIterNext()}]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([{"abcF" : %s}])
-l.extend([{"abcF" : None}]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l.extend([{"abcF" : {b"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([{"abcF" : {"": 1}}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([{"abcF" : FailingMapping()}]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l.extend([{"abcF" : FailingMappingKey()}]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l.extend([{"abcF" : FailingNumber()}]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({%s : 1})])
-l.extend([Mapping({1 : 1})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([Mapping({b"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([Mapping({"\0" : 1})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({"abcG" : {%s : 1}})])
-l.extend([Mapping({"abcG" : {1 : 1}})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([Mapping({"abcG" : {b"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([Mapping({"abcG" : {"\0" : 1}})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using l.extend([Mapping({"abcG" : Mapping({%s : 1})})])
-l.extend([Mapping({"abcG" : Mapping({1 : 1})})]):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-l.extend([Mapping({"abcG" : Mapping({b"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-l.extend([Mapping({"abcG" : Mapping({"\0" : 1})})]):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using l.extend([Mapping({"abcG" : %s})])
-l.extend([Mapping({"abcG" : FailingIter()})]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l.extend([Mapping({"abcG" : FailingIterNext()})]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([Mapping({"abcG" : %s})])
-l.extend([Mapping({"abcG" : None})]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l.extend([Mapping({"abcG" : {b"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([Mapping({"abcG" : {"": 1}})]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([Mapping({"abcG" : FailingMapping()})]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l.extend([Mapping({"abcG" : FailingMappingKey()})]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l.extend([Mapping({"abcG" : FailingNumber()})]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using l.extend([%s])
-l.extend([FailingIter()]):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-l.extend([FailingIterNext()]):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using l.extend([%s])
-l.extend([None]):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-l.extend([{b"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([{"": 1}]):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-l.extend([FailingMapping()]):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-l.extend([FailingMappingKey()]):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-l.extend([FailingNumber()]):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->> ListSetattr
-del l.locked:(<class 'AttributeError'>, AttributeError('cannot delete vim.List attributes',))
-l.locked = FailingTrue():(<class 'NotImplementedError'>, NotImplementedError('bool',))
-l.xxx = True:(<class 'AttributeError'>, AttributeError('cannot set attribute xxx',))
-> Function
->> FunctionConstructor
-vim.Function("123"):(<class 'ValueError'>, ValueError('unnamed function 123 does not exist',))
-vim.Function("xxx_non_existent_function_xxx"):(<class 'ValueError'>, ValueError('function xxx_non_existent_function_xxx does not exist',))
-vim.Function("xxx#non#existent#function#xxx"):NOT FAILED
->> FunctionCall
->>> Testing StringToChars using f({%s : 1})
-f({1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f({b"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f({"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using f({"abcF" : {%s : 1}})
-f({"abcF" : {1 : 1}}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f({"abcF" : {b"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f({"abcF" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using f({"abcF" : Mapping({%s : 1})})
-f({"abcF" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f({"abcF" : Mapping({b"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f({"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using f({"abcF" : %s})
-f({"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-f({"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using f({"abcF" : %s})
-f({"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-f({"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f({"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f({"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-f({"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-f({"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using f(Mapping({%s : 1}))
-f(Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f(Mapping({b"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f(Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using f(Mapping({"abcG" : {%s : 1}}))
-f(Mapping({"abcG" : {1 : 1}})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f(Mapping({"abcG" : {b"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f(Mapping({"abcG" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using f(Mapping({"abcG" : Mapping({%s : 1})}))
-f(Mapping({"abcG" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-f(Mapping({"abcG" : Mapping({b"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-f(Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using f(Mapping({"abcG" : %s}))
-f(Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-f(Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using f(Mapping({"abcG" : %s}))
-f(Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-f(Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f(Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f(Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-f(Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-f(Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using f(%s)
-f(FailingIter()):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-f(FailingIterNext()):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using f(%s)
-f(None):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-f({b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f({"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-f(FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-f(FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-f(FailingNumber()):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using fd(self={%s : 1})
-fd(self={1 : 1}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self={b"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self={"\0" : 1}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using fd(self={"abcF" : {%s : 1}})
-fd(self={"abcF" : {1 : 1}}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self={"abcF" : {b"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self={"abcF" : {"\0" : 1}}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using fd(self={"abcF" : Mapping({%s : 1})})
-fd(self={"abcF" : Mapping({1 : 1})}):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self={"abcF" : Mapping({b"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self={"abcF" : Mapping({"\0" : 1})}):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using fd(self={"abcF" : %s})
-fd(self={"abcF" : FailingIter()}):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-fd(self={"abcF" : FailingIterNext()}):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self={"abcF" : %s})
-fd(self={"abcF" : None}):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-fd(self={"abcF" : {b"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self={"abcF" : {"": 1}}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self={"abcF" : FailingMapping()}):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-fd(self={"abcF" : FailingMappingKey()}):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-fd(self={"abcF" : FailingNumber()}):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({%s : 1}))
-fd(self=Mapping({1 : 1})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self=Mapping({b"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self=Mapping({"\0" : 1})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({"abcG" : {%s : 1}}))
-fd(self=Mapping({"abcG" : {1 : 1}})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self=Mapping({"abcG" : {b"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self=Mapping({"abcG" : {"\0" : 1}})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing StringToChars using fd(self=Mapping({"abcG" : Mapping({%s : 1})}))
-fd(self=Mapping({"abcG" : Mapping({1 : 1})})):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-fd(self=Mapping({"abcG" : Mapping({b"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-fd(self=Mapping({"abcG" : Mapping({"\0" : 1})})):(<class 'TypeError'>, TypeError('expected bytes with no null',))
-<<< Finished
->>> Testing *Iter* using fd(self=Mapping({"abcG" : %s}))
-fd(self=Mapping({"abcG" : FailingIter()})):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim structure',))
-fd(self=Mapping({"abcG" : FailingIterNext()})):(<class 'NotImplementedError'>, NotImplementedError('next',))
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self=Mapping({"abcG" : %s}))
-fd(self=Mapping({"abcG" : None})):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim structure',))
-fd(self=Mapping({"abcG" : {b"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self=Mapping({"abcG" : {"": 1}})):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self=Mapping({"abcG" : FailingMapping()})):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-fd(self=Mapping({"abcG" : FailingMappingKey()})):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-fd(self=Mapping({"abcG" : FailingNumber()})):(<class 'NotImplementedError'>, NotImplementedError('int',))
-<<< Finished
->>> Testing *Iter* using fd(self=%s)
-fd(self=FailingIter()):(<class 'TypeError'>, TypeError('unable to convert FailingIter to vim dictionary',))
-fd(self=FailingIterNext()):(<class 'TypeError'>, TypeError('unable to convert FailingIterNext to vim dictionary',))
-<<< Finished
->>> Testing ConvertFromPyObject using fd(self=%s)
-fd(self=None):(<class 'TypeError'>, TypeError('unable to convert NoneType to vim dictionary',))
-fd(self={b"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self={"": 1}):(<class 'ValueError'>, ValueError('empty keys are not allowed',))
-fd(self=FailingMapping()):(<class 'NotImplementedError'>, NotImplementedError('keys',))
-fd(self=FailingMappingKey()):(<class 'NotImplementedError'>, NotImplementedError('getitem:mappingkey',))
-fd(self=FailingNumber()):(<class 'TypeError'>, TypeError('unable to convert FailingNumber to vim dictionary',))
-<<< Finished
->>> Testing ConvertFromPyMapping using fd(self=%s)
-fd(self=[]):(<class 'AttributeError'>, AttributeError('keys',))
-<<< Finished
-> TabPage
->> TabPageAttr
-vim.current.tabpage.xxx:(<class 'AttributeError'>, AttributeError("'vim.tabpage' object has no attribute 'xxx'",))
-> TabList
->> TabListItem
-vim.tabpages[1000]:(<class 'IndexError'>, IndexError('no such tab page',))
-> Window
->> WindowAttr
-vim.current.window.xxx:(<class 'AttributeError'>, AttributeError("'vim.window' object has no attribute 'xxx'",))
->> WindowSetattr
-vim.current.window.buffer = 0:(<class 'TypeError'>, TypeError('readonly attribute: buffer',))
-vim.current.window.cursor = (100000000, 100000000):(<class 'vim.error'>, error('cursor position outside buffer',))
-vim.current.window.cursor = True:(<class 'TypeError'>, TypeError('argument must be 2-item sequence, not bool',))
->>> Testing NumberToLong using vim.current.window.height = %s
-vim.current.window.height = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
-vim.current.window.height = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
-vim.current.window.height = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
-<<< Finished
->>> Testing NumberToLong using vim.current.window.width = %s
-vim.current.window.width = []:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
-vim.current.window.width = None:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
-vim.current.window.width = -1:(<class 'ValueError'>, ValueError('number must be greater or equal to zero',))
-<<< Finished
-vim.current.window.xxxxxx = True:(<class 'AttributeError'>, AttributeError('xxxxxx',))
-> WinList
->> WinListItem
-vim.windows[1000]:(<class 'IndexError'>, IndexError('no such window',))
-> Buffer
->> StringToLine (indirect)
-vim.current.buffer[0] = "\na":(<class 'vim.error'>, error('string cannot contain newlines',))
-vim.current.buffer[0] = b"\na":(<class 'vim.error'>, error('string cannot contain newlines',))
->> SetBufferLine (indirect)
-vim.current.buffer[0] = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
->> SetBufferLineList (indirect)
-vim.current.buffer[:] = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
-vim.current.buffer[:] = ["\na", "bc"]:(<class 'vim.error'>, error('string cannot contain newlines',))
->> InsertBufferLines (indirect)
-vim.current.buffer.append(None):(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
-vim.current.buffer.append(["\na", "bc"]):(<class 'vim.error'>, error('string cannot contain newlines',))
-vim.current.buffer.append("\nbc"):(<class 'vim.error'>, error('string cannot contain newlines',))
->> RBItem
-vim.current.buffer[100000000]:(<class 'IndexError'>, IndexError('line number out of range',))
->> RBAsItem
-vim.current.buffer[100000000] = "":(<class 'IndexError'>, IndexError('line number out of range',))
->> BufferAttr
-vim.current.buffer.xxx:(<class 'AttributeError'>, AttributeError("'vim.buffer' object has no attribute 'xxx'",))
->> BufferSetattr
-vim.current.buffer.name = True:(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got bool',))
-vim.current.buffer.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
->> BufferMark
-vim.current.buffer.mark(0):(<class 'TypeError'>, TypeError('expected bytes() or str() instance, but got int',))
-vim.current.buffer.mark("abcM"):(<class 'ValueError'>, ValueError('mark name must be a single character',))
-vim.current.buffer.mark("!"):(<class 'vim.error'>, error('invalid mark name',))
->> BufferRange
-vim.current.buffer.range(1, 2, 3):(<class 'TypeError'>, TypeError('function takes exactly 2 arguments (3 given)',))
-> BufMap
->> BufMapItem
-vim.buffers[100000000]:(<class 'KeyError'>, KeyError(100000000,))
->>> Testing NumberToLong using vim.buffers[%s]
-vim.buffers[[]]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got list',))
-vim.buffers[None]:(<class 'TypeError'>, TypeError('expected int() or something supporting coercing to int(), but got NoneType',))
-vim.buffers[-1]:(<class 'ValueError'>, ValueError('number must be greater then zero',))
-vim.buffers[0]:(<class 'ValueError'>, ValueError('number must be greater then zero',))
-<<< Finished
-> Current
->> CurrentGetattr
-vim.current.xxx:(<class 'AttributeError'>, AttributeError("'vim.currentdata' object has no attribute 'xxx'",))
->> CurrentSetattr
-vim.current.line = True:(<class 'TypeError'>, TypeError('bad argument type for built-in operation',))
-vim.current.buffer = True:(<class 'TypeError'>, TypeError('expected vim.Buffer object, but got bool',))
-vim.current.window = True:(<class 'TypeError'>, TypeError('expected vim.Window object, but got bool',))
-vim.current.tabpage = True:(<class 'TypeError'>, TypeError('expected vim.TabPage object, but got bool',))
-vim.current.xxx = True:(<class 'AttributeError'>, AttributeError('xxx',))
-['.']
-'.'
-3,xx
-before
-after
-pythonx/topmodule/__init__.py
-pythonx/topmodule/submodule/__init__.py
-pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py
-vim.command("throw 'abcN'"):(<class 'vim.error'>, error('abcN',))
-Exe("throw 'def'"):(<class 'vim.error'>, error('def',))
-vim.eval("Exe('throw ''ghi''')"):(<class 'vim.error'>, error('ghi',))
-vim.eval("Exe('echoerr ''jkl''')"):(<class 'vim.error'>, error('Vim(echoerr):jkl',))
-vim.eval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
-vim.eval("xxx_unknown_function_xxx()"):(<class 'vim.error'>, error('Vim:E117: Unknown function: xxx_unknown_function_xxx',))
-vim.bindeval("Exe('xxx_non_existent_command_xxx')"):(<class 'vim.error'>, error('Vim:E492: Not an editor command: xxx_non_existent_command_xxx',))
-Caught KeyboardInterrupt
-Running :put
-No exception
-
diff --git a/src/testdir/test88.in b/src/testdir/test88.in
deleted file mode 100644
index c2e6a752fa..0000000000
--- a/src/testdir/test88.in
+++ /dev/null
@@ -1,88 +0,0 @@
-vim: set ft=vim
-
-Tests for correct display (cursor column position) with +conceal and
-tabulators.
-
-STARTTEST
-:so small.vim
-:if !has('conceal')
- e! test.ok
- wq! test.out
-:endif
-:" Conceal settings.
-:set conceallevel=2
-:set concealcursor=nc
-:syntax match test /|/ conceal
-:" Save current cursor position. Only works in <expr> mode, can't be used
-:" with :normal because it moves the cursor to the command line. Thanks to ZyX
-:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
-:let positions = []
-:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
-:" Start test.
-/^start:
-:normal ztj
-GGk
-:" We should end up in the same column when running these commands on the two
-:" lines.
-:normal ft
-GGk
-:normal $
-GGk
-:normal 0j
-GGk
-:normal ft
-GGk
-:normal $
-GGk
-:normal 0j0j
-GGk
-:" Same for next test block.
-:normal ft
-GGk
-:normal $
-GGk
-:normal 0j
-GGk
-:normal ft
-GGk
-:normal $
-GGk
-:normal 0j0j
-GGk
-:" And check W with multiple tabs and conceals in a line.
-:normal W
-GGk
-:normal W
-GGk
-:normal W
-GGk
-:normal $
-GGk
-:normal 0j
-GGk
-:normal W
-GGk
-:normal W
-GGk
-:normal W
-GGk
-:normal $
-GGk
-:set lbr
-:normal $
-GGk
-:" Display result.
-:call append('$', 'end:')
-:call append('$', positions)
-:/^end/,$wq! test.out
-ENDTEST
-
-start:
-.concealed. text
-|concealed| text
-
- .concealed. text
- |concealed| text
-
-.a. .b. .c. .d.
-|a| |b| |c| |d|
diff --git a/src/testdir/test88.ok b/src/testdir/test88.ok
deleted file mode 100644
index e29698b7bd..0000000000
--- a/src/testdir/test88.ok
+++ /dev/null
@@ -1,24 +0,0 @@
-end:
-2:1
-2:17
-2:20
-3:1
-3:17
-3:20
-5:8
-5:25
-5:28
-6:8
-6:25
-6:28
-8:1
-8:9
-8:17
-8:25
-8:27
-9:1
-9:9
-9:17
-9:25
-9:26
-9:26
diff --git a/src/testdir/test89.in b/src/testdir/test89.in
deleted file mode 100644
index 1c3079f62f..0000000000
--- a/src/testdir/test89.in
+++ /dev/null
@@ -1,71 +0,0 @@
-- Some tests for setting 'number' and 'relativenumber'
- This is not all that useful now that the options are no longer reset when
- setting the other.
-- Some tests for findfile() function
-
-STARTTEST
-:so small.vim
-:set hidden nocp nu rnu viminfo+=nviminfo
-:redir @a | set nu? rnu? | redir END
-:e! xx
-:redir @b | set nu? rnu? | redir END
-:e! #
-:$put ='results:'
-:$put a
-:$put b
-:"
-:set nonu nornu
-:setglobal nu
-:setlocal rnu
-:redir @c | setglobal nu? | redir END
-:set nonu nornu
-:setglobal rnu
-:setlocal nu
-:redir @d | setglobal rnu? | redir END
-:$put =':setlocal must NOT reset the other global value'
-:$put c
-:$put d
-:"
-:set nonu nornu
-:setglobal nu
-:setglobal rnu
-:redir @e | setglobal nu? | redir END
-:set nonu nornu
-:setglobal rnu
-:setglobal nu
-:redir @f | setglobal rnu? | redir END
-:$put =':setglobal MUST reset the other global value'
-:$put e
-:$put f
-:"
-:set nonu nornu
-:set nu
-:set rnu
-:redir @g | setglobal nu? | redir END
-:set nonu nornu
-:set rnu
-:set nu
-:redir @h | setglobal rnu? | redir END
-:$put =':set MUST reset the other global value'
-:$put g
-:$put h
-:"
-:let cwd=getcwd()
-:cd ..
-:" Tests may be run from a shadow directory, so an extra cd needs to be done to
-:" get above src/
-:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
-:$put =''
-:$put ='Testing findfile'
-:$put =''
-:set ssl
-:$put =findfile('test19.in','src/test*')
-:exe "cd" cwd
-:cd ..
-:$put =findfile('test19.in','test*')
-:$put =findfile('test19.in','testdir')
-:exe "cd" cwd
-:/^results/,$w! test.out
-:q!
-ENDTEST
-
diff --git a/src/testdir/test89.ok b/src/testdir/test89.ok
deleted file mode 100644
index 90034758d9..0000000000
--- a/src/testdir/test89.ok
+++ /dev/null
@@ -1,28 +0,0 @@
-results:
-
- number
- relativenumber
-
- number
- relativenumber
-:setlocal must NOT reset the other global value
-
- number
-
- relativenumber
-:setglobal MUST reset the other global value
-
- number
-
- relativenumber
-:set MUST reset the other global value
-
- number
-
- relativenumber
-
-Testing findfile
-
-src/testdir/test19.in
-testdir/test19.in
-testdir/test19.in
diff --git a/src/testdir/test9.in b/src/testdir/test9.in
deleted file mode 100644
index 84e17943c7..0000000000
--- a/src/testdir/test9.in
+++ /dev/null
@@ -1,12 +0,0 @@
-Test for Bufleave autocommand that deletes the buffer we are about to edit.
-
-STARTTEST
-:so small.vim
-:au BufLeave test9.in bwipe yy
-:e yy
-:/^start of/,$w! test.out " Write contents of this file
-:qa!
-ENDTEST
-
-start of test file xx
-end of test file xx
diff --git a/src/testdir/test9.ok b/src/testdir/test9.ok
deleted file mode 100644
index cccb5f3ef2..0000000000
--- a/src/testdir/test9.ok
+++ /dev/null
@@ -1,2 +0,0 @@
-start of test file xx
-end of test file xx
diff --git a/src/testdir/test90.in b/src/testdir/test90.in
deleted file mode 100644
index 6bac414f31..0000000000
--- a/src/testdir/test90.in
+++ /dev/null
@@ -1,53 +0,0 @@
-Tests for sha256() function. vim: set ft=vim et ts=2 sw=2 :
-
-STARTTEST
-:so small.vim
-:if !has('cryptv') || !exists('*sha256')
- e! test.ok
- wq! test.out
-:endif
-:"
-:let testcase='test for empty string: '
-:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
-: let res='ok'
-:else
-: let res='ng'
-:endif
-:$put =testcase.res
-:"
-:let testcase='test for 1 char: '
-:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'
-: let res='ok'
-:else
-: let res='ng'
-:endif
-:$put =testcase.res
-:"
-:let testcase='test for 3 chars: '
-:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
-: let res='ok'
-:else
-: let res='ng'
-:endif
-:$put =testcase.res
-:"
-:let testcase='test for contains meta char: '
-:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8cc39ed110ca776'
-: let res='ok'
-:else
-: let res='ng'
-:endif
-:$put =testcase.res
-:"
-:let testcase='test for contains non-ascii char: '
-:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa813953'
-: let res='ok'
-:else
-: let res='ng'
-:endif
-:$put =testcase.res
-"
-:/^start:/,$wq! test.out
-ENDTEST
-
-start:
diff --git a/src/testdir/test90.ok b/src/testdir/test90.ok
deleted file mode 100644
index 9a8e7fe961..0000000000
--- a/src/testdir/test90.ok
+++ /dev/null
@@ -1,6 +0,0 @@
-start:
-test for empty string: ok
-test for 1 char: ok
-test for 3 chars: ok
-test for contains meta char: ok
-test for contains non-ascii char: ok
diff --git a/src/testdir/test91.in b/src/testdir/test91.in
deleted file mode 100644
index e900a522df..0000000000
--- a/src/testdir/test91.in
+++ /dev/null
@@ -1,111 +0,0 @@
-Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
-vim: set ft=vim :
-
-STARTTEST
-:so small.vim
-:so mbyte.vim
-:"
-:" Test for getbufvar()
-:" Use strings to test for memory leaks.
-:let b:var_num = '1234'
-:let def_num = '5678'
-:$put =string(getbufvar(1, 'var_num'))
-:$put =string(getbufvar(1, 'var_num', def_num))
-:$put =string(getbufvar(1, ''))
-:$put =string(getbufvar(1, '', def_num))
-:unlet b:var_num
-:$put =string(getbufvar(1, 'var_num', def_num))
-:$put =string(getbufvar(1, ''))
-:$put =string(getbufvar(1, '', def_num))
-:$put =string(getbufvar(9, ''))
-:$put =string(getbufvar(9, '', def_num))
-:unlet def_num
-:$put =string(getbufvar(1, '&autoindent'))
-:$put =string(getbufvar(1, '&autoindent', 1))
-:"
-:" Open new window with forced option values
-:set fileformats=unix,dos
-:new ++ff=dos ++bin ++enc=iso-8859-2
-:let otherff = getbufvar(bufnr('%'), '&fileformat')
-:let otherbin = getbufvar(bufnr('%'), '&bin')
-:let otherfenc = getbufvar(bufnr('%'), '&fenc')
-:close
-:$put =otherff
-:$put =string(otherbin)
-:$put =otherfenc
-:unlet otherff otherbin otherfenc
-:" test for getwinvar()
-:let w:var_str = "Dance"
-:let def_str = "Chance"
-:$put =string(getwinvar(1, 'var_str'))
-:$put =string(getwinvar(1, 'var_str', def_str))
-:$put =string(getwinvar(1, ''))
-:$put =string(getwinvar(1, '', def_str))
-:unlet w:var_str
-:$put =string(getwinvar(1, 'var_str', def_str))
-:$put =string(getwinvar(1, ''))
-:$put =string(getwinvar(1, '', def_str))
-:$put =string(getwinvar(9, ''))
-:$put =string(getwinvar(9, '', def_str))
-:$put =string(getwinvar(1, '&nu'))
-:$put =string(getwinvar(1, '&nu', 1))
-:unlet def_str
-:"
-:" test for gettabvar()
-:tabnew
-:tabnew
-:let t:var_list = [1, 2, 3]
-:let def_list = [4, 5, 6, 7]
-:tabrewind
-:$put =string(gettabvar(3, 'var_list'))
-:$put =string(gettabvar(3, 'var_list', def_list))
-:$put =string(gettabvar(3, ''))
-:$put =string(gettabvar(3, '', def_list))
-:tablast
-:unlet t:var_list
-:tabrewind
-:$put =string(gettabvar(3, 'var_list', def_list))
-:$put =string(gettabvar(9, ''))
-:$put =string(gettabvar(9, '', def_list))
-:$put =string(gettabvar(3, '&nu'))
-:$put =string(gettabvar(3, '&nu', def_list))
-:unlet def_list
-:tabonly
-:"
-:" test for gettabwinvar()
-:tabnew
-:tabnew
-:tabprev
-:split
-:split
-:wincmd w
-:vert split
-:wincmd w
-:let w:var_dict = {'dict': 'tabwin'}
-:let def_dict = {'dict2': 'newval'}
-:wincmd b
-:tabrewind
-:$put =string(gettabwinvar(2, 3, 'var_dict'))
-:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
-:$put =string(gettabwinvar(2, 3, ''))
-:$put =string(gettabwinvar(2, 3, '', def_dict))
-:tabnext
-:3wincmd w
-:unlet w:var_dict
-:tabrewind
-:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
-:$put =string(gettabwinvar(2, 3, ''))
-:$put =string(gettabwinvar(2, 3, '', def_dict))
-:$put =string(gettabwinvar(2, 9, ''))
-:$put =string(gettabwinvar(2, 9, '', def_dict))
-:$put =string(gettabwinvar(9, 3, ''))
-:$put =string(gettabwinvar(9, 3, '', def_dict))
-:unlet def_dict
-:$put =string(gettabwinvar(2, 3, '&nux'))
-:$put =string(gettabwinvar(2, 3, '&nux', 1))
-:tabonly
-:"
-:/^start/,$wq! test.out
-ENDTEST
-
-start:
diff --git a/src/testdir/test91.ok b/src/testdir/test91.ok
deleted file mode 100644
index 22e1572209..0000000000
--- a/src/testdir/test91.ok
+++ /dev/null
@@ -1,48 +0,0 @@
-start:
-'1234'
-'1234'
-{'var_num': '1234'}
-{'var_num': '1234'}
-'5678'
-{}
-{}
-''
-'5678'
-0
-0
-dos
-1
-iso-8859-2
-'Dance'
-'Dance'
-{'var_str': 'Dance'}
-{'var_str': 'Dance'}
-'Chance'
-{}
-{}
-''
-'Chance'
-0
-0
-[1, 2, 3]
-[1, 2, 3]
-''
-[4, 5, 6, 7]
-[4, 5, 6, 7]
-''
-[4, 5, 6, 7]
-''
-[4, 5, 6, 7]
-{'dict': 'tabwin'}
-{'dict': 'tabwin'}
-{'var_dict': {'dict': 'tabwin'}}
-{'var_dict': {'dict': 'tabwin'}}
-{'dict2': 'newval'}
-{}
-{}
-''
-{'dict2': 'newval'}
-''
-{'dict2': 'newval'}
-''
-1
diff --git a/src/testdir/test92.in b/src/testdir/test92.in
deleted file mode 100644
index 9593aec4c7..0000000000
--- a/src/testdir/test92.in
+++ /dev/null
@@ -1,48 +0,0 @@
-vim: set ft=vim fenc=utf-8:
-
-Tests if :mksession saves cursor columns correctly in presence of tab and
-multibyte characters when fileencoding=utf-8.
-
-STARTTEST
-:so mbyte.vim
-:if !has('mksession')
-: e! test.ok
-: wq! test.out
-:endif
-:set sessionoptions=buffers splitbelow fileencoding=utf-8
-/^start:
-:vsplit
-j16|:split
-j16|:split
-j16|:split
-j8|:split
-j8|:split
-j16|:split
-j16|:split
-j16|:wincmd l
-/^start:
-:set nowrap
-j16|3zl:split
-j016|3zl:split
-j016|3zl:split
-j08|3zl:split
-j08|3zl:split
-j016|3zl:split
-j016|3zl:split
-j016|3zl:split
-:mksession! test.out
-:new test.out
-:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
-:w! test.out
-:qa!
-ENDTEST
-
-start:
-no multibyte chAracter
- one leaDing tab
- four leadinG spaces
-two consecutive tabs
-two tabs in one line
-one … multibyteCharacter
-a “b” two multiByte characters
-“c”1€ three mulTibyte characters
diff --git a/src/testdir/test92.ok b/src/testdir/test92.ok
deleted file mode 100644
index cca5ec487c..0000000000
--- a/src/testdir/test92.ok
+++ /dev/null
@@ -1,26 +0,0 @@
-normal! 016|
-normal! 016|
-normal! 016|
-normal! 08|
-normal! 08|
-normal! 016|
-normal! 016|
-normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 8 . '|'
- normal! 08|
- exe 'normal! ' . s:c . '|zs' . 8 . '|'
- normal! 08|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
diff --git a/src/testdir/test93.in b/src/testdir/test93.in
deleted file mode 100644
index 877838ce1b..0000000000
--- a/src/testdir/test93.in
+++ /dev/null
@@ -1,48 +0,0 @@
-vim: set ft=vim fenc=latin1:
-
-Tests if :mksession saves cursor columns correctly in presence of tab and
-multibyte characters when fileencoding=latin1.
-
-STARTTEST
-:so mbyte.vim
-:if !has('mksession')
-: e! test.ok
-: wq! test.out
-:endif
-:set sessionoptions=buffers splitbelow fileencoding=latin1
-/^start:
-:vsplit
-j16|:split
-j16|:split
-j16|:split
-j8|:split
-j8|:split
-j16|:split
-j16|:split
-j16|:wincmd l
-/^start:
-:set nowrap
-j16|3zl:split
-j016|3zl:split
-j016|3zl:split
-j08|3zl:split
-j08|3zl:split
-j016|3zl:split
-j016|3zl:split
-j016|3zl:split
-:mksession! test.out
-:new test.out
-:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
-:w! test.out
-:qa!
-ENDTEST
-
-start:
-no multibyte chAracter
- one leaDing tab
- four leadinG spaces
-two consecutive tabs
-two tabs in one line
-one multibyteCharacter
-a two multiByte characters
-A three mulTibyte characters
diff --git a/src/testdir/test93.ok b/src/testdir/test93.ok
deleted file mode 100644
index cca5ec487c..0000000000
--- a/src/testdir/test93.ok
+++ /dev/null
@@ -1,26 +0,0 @@
-normal! 016|
-normal! 016|
-normal! 016|
-normal! 08|
-normal! 08|
-normal! 016|
-normal! 016|
-normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 8 . '|'
- normal! 08|
- exe 'normal! ' . s:c . '|zs' . 8 . '|'
- normal! 08|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
- exe 'normal! ' . s:c . '|zs' . 16 . '|'
- normal! 016|
diff --git a/src/testdir/test94.in b/src/testdir/test94.in
deleted file mode 100644
index dfa91d8340..0000000000
--- a/src/testdir/test94.in
+++ /dev/null
@@ -1,95 +0,0 @@
-Test for Visual mode and operators
-
-Tests for the two kinds of operations: Those executed with Visual mode
-followed by an operator and those executed via Operator-pending mode. Also
-part of the test are mappings, counts, and repetition with the . command.
-
-Test cases:
-- Visual modes (v V CTRL-V) followed by an operator; count; repeating
-- Visual mode maps; count; repeating
- - Simple
- - With an Ex command (custom text object)
-- Operator-pending mode maps
- - Simple
- - With Ex command moving the cursor
- - With Ex command and Visual selection (custom text object)
-- Patch 7.3.879: Properly abort Ex command in Operator-pending mode
-
-STARTTEST
-:so small.vim
-:set nocp viminfo+=nviminfo
-:
-:" User functions
-:function MoveToCap()
-: call search('\u', 'W')
-:endfunction
-:function SelectInCaps()
-: let [line1, col1] = searchpos('\u', 'bcnW')
-: let [line2, col2] = searchpos('.\u', 'nW')
-: call setpos("'<", [0, line1, col1, 0])
-: call setpos("'>", [0, line2, col2, 0])
-: normal! gv
-:endfunction
-:
-:" Visual modes followed by operator
-/^apple
-lvld.l3vd.:
-/^line 1
-Vcnewlinej.j2Vd.:
-/^xxxx
-jlc l.l2c----l.:
-:
-:" Visual mode maps (movement and text object)
-:vnoremap W /\u/s-1<CR>
-:vnoremap iW :<C-U>call SelectInCaps()<CR>
-/^Kiwi
-vWcNol.fD2vd.:
-/^Jambu
-llviWc-l.l2vdl.:
-:
-:" Operator-pending mode maps (movement and text object)
-:onoremap W /\u/<CR>
-:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
-:onoremap iW :<C-U>call SelectInCaps()<CR>
-/^Pineapple
-cW-l.l2.l.:
-/^Juniper
-g?\WfD.:
-/^Lemon
-yiWPlciWNewfr.:
-:
-:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
-/^zzzz
-dV: dv: :set noma | let v:errmsg = ''
-d: :set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
-dv:dV::set noma | let v:errmsg = ''
-d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
-:/^start:/+2,$w! test.out
-:q!
-ENDTEST
-
-start:
-
-apple banana cherry
-
-line 1 line 1
-line 2 line 2
-line 3 line 3
-line 4 line 4
-line 5 line 5
-line 6 line 6
-
-xxxxxxxxxxxxx
-xxxxxxxxxxxxx
-xxxxxxxxxxxxx
-xxxxxxxxxxxxx
-
-KiwiRaspberryDateWatermelonPeach
-JambuRambutanBananaTangerineMango
-
-PineappleQuinceLoganberryOrangeGrapefruitKiwiZ
-JuniperDurianZ
-LemonNectarineZ
-
-zzzz
-zzzz
diff --git a/src/testdir/test94.ok b/src/testdir/test94.ok
deleted file mode 100644
index 3996f2a3a4..0000000000
--- a/src/testdir/test94.ok
+++ /dev/null
@@ -1,20 +0,0 @@
-a y
-
-newline
-newline
-
- --------x
- --------x
-xxxx--------x
-xxxx--------x
-
-NoNoberryach
---ago
-
-----Z
-WhavcreQhevnaZ
-LemonNewNewZ
-
-zzz
-ok
-ok
diff --git a/src/testdir/test95.in b/src/testdir/test95.in
deleted file mode 100644
index 90fa69945a..0000000000
--- a/src/testdir/test95.in
+++ /dev/null
@@ -1,135 +0,0 @@
-Test for regexp patterns with multi-byte support, using utf-8.
-See test64 for the non-multi-byte tests.
-
-A pattern that gives the expected result produces OK, so that we know it was
-actually tried.
-
-STARTTEST
-:so small.vim
-:so mbyte.vim
-:set nocp encoding=utf-8 viminfo+=nviminfo nomore
-:" tl is a List of Lists with:
-:" 2: test auto/old/new 0: test auto/old 1: test auto/new
-:" regexp pattern
-:" text to test the pattern on
-:" expected match (optional)
-:" expected submatch 1 (optional)
-:" expected submatch 2 (optional)
-:" etc.
-:" When there is no match use only the first two items.
-:let tl = []
-
-:"""" Multi-byte character tests. These will fail unless vim is compiled
-:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
-:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
-:call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ']) " equivalence classes
-:call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oijasoifjos'])
-:call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
-:call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna'])
-
-:" this is not a normal "i" but 0xec
-:call add(tl, [2, '\p\+', 'ìa', 'ìa'])
-:call add(tl, [2, '\p*', 'aあ', 'aあ'])
-
-:"""" Test recognition of some character classes
-:call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
-:call add(tl, [2, '\f\+', '&*Ÿfname ', 'fname'])
-
-:"""" Test composing character matching
-:call add(tl, [2, '.ม', 'xม่x yมy', 'yม'])
-:call add(tl, [2, '.ม่', 'xม่x yมy', 'xม่'])
-:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
-:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
-:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
-:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
-:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
-:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
-:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
-:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
-:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
-:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
-:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
-:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
-
-
-:"""" Test \Z
-:call add(tl, [2, 'ú\Z', 'x'])
-:call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
-:call add(tl, [2, 'יְהוָה\Z', 'יהוה', 'יהוה'])
-:call add(tl, [2, 'יהוה\Z', 'יְהוָה', 'יְהוָה'])
-:call add(tl, [2, 'יְהוָה\Z', 'יְהוָה', 'יְהוָה'])
-:call add(tl, [2, 'יְ\Z', 'וְיַ', 'יַ'])
-:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
-:call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
-:call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
-:call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
-:call add(tl, [2, "\u05b9\\Z", "xyz"])
-:call add(tl, [2, "\\Z\u05b9", "xyz"])
-:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
-:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
-:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
-:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
-
-:"""" Combining different tests and features
-:call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
-
-:"""" Run the tests
-
-:"
-:for t in tl
-: let re = t[0]
-: let pat = t[1]
-: let text = t[2]
-: let matchidx = 3
-: for engine in [0, 1, 2]
-: if engine == 2 && re == 0 || engine == 1 && re == 1
-: continue
-: endif
-: let &regexpengine = engine
-: try
-: let l = matchlist(text, pat)
-: catch
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"'
-: endtry
-:" check the match itself
-: if len(l) == 0 && len(t) > matchidx
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"'
-: elseif len(l) > 0 && len(t) == matchidx
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match'
-: elseif len(t) > matchidx && l[0] != t[matchidx]
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
-: else
-: $put ='OK ' . engine . ' - ' . pat
-: endif
-: if len(l) > 0
-:" check all the nine submatches
-: for i in range(1, 9)
-: if len(t) <= matchidx + i
-: let e = ''
-: else
-: let e = t[matchidx + i]
-: endif
-: if l[i] != e
-: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
-: endif
-: endfor
-: unlet i
-: endif
-: endfor
-:endfor
-:unlet t tl e l
-
-:" check that 'ambiwidth' does not change the meaning of \p
-:set regexpengine=1 ambiwidth=single
-:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
-:set regexpengine=1 ambiwidth=double
-:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
-:set regexpengine=2 ambiwidth=single
-:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
-:set regexpengine=2 ambiwidth=double
-:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')
-
-:/\%#=1^Results/,$wq! test.out
-ENDTEST
-
-Results of test95:
diff --git a/src/testdir/test95.ok b/src/testdir/test95.ok
deleted file mode 100644
index c378221a70..0000000000
--- a/src/testdir/test95.ok
+++ /dev/null
@@ -1,122 +0,0 @@
-Results of test95:
-OK 0 - [[:alpha:][=a=]]\+
-OK 1 - [[:alpha:][=a=]]\+
-OK 2 - [[:alpha:][=a=]]\+
-OK 0 - [[=a=]]\+
-OK 1 - [[=a=]]\+
-OK 2 - [[=a=]]\+
-OK 0 - [^ม ]\+
-OK 1 - [^ม ]\+
-OK 2 - [^ม ]\+
-OK 0 - [^ ]\+
-OK 1 - [^ ]\+
-OK 2 - [^ ]\+
-OK 0 - [ม[:alpha:][=a=]]\+
-OK 1 - [ม[:alpha:][=a=]]\+
-OK 2 - [ม[:alpha:][=a=]]\+
-OK 0 - \p\+
-OK 1 - \p\+
-OK 2 - \p\+
-OK 0 - \p*
-OK 1 - \p*
-OK 2 - \p*
-OK 0 - \i\+
-OK 1 - \i\+
-OK 2 - \i\+
-OK 0 - \f\+
-OK 1 - \f\+
-OK 2 - \f\+
-OK 0 - .ม
-OK 1 - .ม
-OK 2 - .ม
-OK 0 - .ม่
-OK 1 - .ม่
-OK 2 - .ม่
-OK 0 - ֹ
-OK 1 - ֹ
-OK 2 - ֹ
-OK 0 - .ֹ
-OK 1 - .ֹ
-OK 2 - .ֹ
-OK 0 - ֹֻ
-OK 1 - ֹֻ
-OK 2 - ֹֻ
-OK 0 - .ֹֻ
-OK 1 - .ֹֻ
-OK 2 - .ֹֻ
-OK 0 - ֹֻ
-OK 1 - ֹֻ
-OK 2 - ֹֻ
-OK 0 - .ֹֻ
-OK 1 - .ֹֻ
-OK 2 - .ֹֻ
-OK 0 - ֹ
-OK 1 - ֹ
-OK 2 - ֹ
-OK 0 - .ֹ
-OK 1 - .ֹ
-OK 2 - .ֹ
-OK 0 - ֹ
-OK 1 - ֹ
-OK 2 - ֹ
-OK 0 - .ֹ
-OK 1 - .ֹ
-OK 2 - .ֹ
-OK 0 - ֹֻ
-OK 2 - ֹֻ
-OK 0 - .ֹֻ
-OK 1 - .ֹֻ
-OK 2 - .ֹֻ
-OK 0 - ú\Z
-OK 1 - ú\Z
-OK 2 - ú\Z
-OK 0 - יהוה\Z
-OK 1 - יהוה\Z
-OK 2 - יהוה\Z
-OK 0 - יְהוָה\Z
-OK 1 - יְהוָה\Z
-OK 2 - יְהוָה\Z
-OK 0 - יהוה\Z
-OK 1 - יהוה\Z
-OK 2 - יהוה\Z
-OK 0 - יְהוָה\Z
-OK 1 - יְהוָה\Z
-OK 2 - יְהוָה\Z
-OK 0 - יְ\Z
-OK 1 - יְ\Z
-OK 2 - יְ\Z
-OK 0 - ק‍ֹx\Z
-OK 1 - ק‍ֹx\Z
-OK 2 - ק‍ֹx\Z
-OK 0 - ק‍ֹx\Z
-OK 1 - ק‍ֹx\Z
-OK 2 - ק‍ֹx\Z
-OK 0 - ק‍x\Z
-OK 1 - ק‍x\Z
-OK 2 - ק‍x\Z
-OK 0 - ק‍x\Z
-OK 1 - ק‍x\Z
-OK 2 - ק‍x\Z
-OK 0 - ֹ\Z
-OK 1 - ֹ\Z
-OK 2 - ֹ\Z
-OK 0 - \Zֹ
-OK 1 - \Zֹ
-OK 2 - \Zֹ
-OK 0 - ֹ\Z
-OK 1 - ֹ\Z
-OK 2 - ֹ\Z
-OK 0 - \Zֹ
-OK 1 - \Zֹ
-OK 2 - \Zֹ
-OK 0 - ֹ\+\Z
-OK 2 - ֹ\+\Z
-OK 0 - \Zֹ\+
-OK 2 - \Zֹ\+
-OK 0 - [^[=a=]]\+
-OK 1 - [^[=a=]]\+
-OK 2 - [^[=a=]]\+
-eng 1 ambi single: 0
-eng 1 ambi double: 0
-eng 2 ambi single: 0
-eng 2 ambi double: 0
diff --git a/src/testdir/test96.in b/src/testdir/test96.in
deleted file mode 100644
index 9d1a2c83a5..0000000000
--- a/src/testdir/test96.in
+++ /dev/null
@@ -1,142 +0,0 @@
-This will test for problems in quickfix:
-A. incorrectly copying location lists which caused the location list to show a
- different name than the file that was actually being displayed.
-B. not reusing the window for which the location list window is opened but
- instead creating new windows.
-C. make sure that the location list window is not reused instead of the window
- it belongs to.
-
-Note: to debug a problem comment out the last ":b 1" in a test and testing will
-stop at this point.
-
-STARTTEST
-:so small.vim
-: enew
-: w! test.out
-: b 1
-: " Set up the test environment:
-: function! ReadTestProtocol(name)
-: let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '')
-: let word = substitute(base, '\v(.*)\..*', '\1', '')
-:
-: setl modifiable
-: setl noreadonly
-: setl noswapfile
-: setl bufhidden=delete
-: %del _
-: " For problem 2:
-: " 'buftype' has to be set to reproduce the constant opening of new windows
-: setl buftype=nofile
-:
-: call setline(1, word)
-:
-: setl nomodified
-: setl nomodifiable
-: setl readonly
-: exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '')
-: endfunction
-: augroup testgroup
-: au!
-: autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))
-: augroup END
-: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]
-:
-: let qflist = []
-: for word in words
-: call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', })
-: " NOTE: problem 1:
-: " intentionally not setting 'lnum' so that the quickfix entries are not
-: " valid
-: call setloclist(0, qflist, ' ')
-: endfor
-ENDTEST
-
-Test A:
-STARTTEST
-:lrewind
-:enew
-:lopen
-:lnext
-:lnext
-:lnext
-:lnext
-:vert split
-:wincmd L
-:lopen
-:wincmd p
-:lnext
-:"b 1
-:let fileName = expand("%")
-:wincmd p
-:let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '')
-:wincmd n
-:wincmd K
-:b test.out
-:let fileName = substitute(fileName, '\\', '/', 'g')
-:let locationListFileName = substitute(locationListFileName, '\\', '/', 'g')
-:call append(line('$'), "Test A:")
-:call append(line('$'), " - file name displayed: " . fileName)
-:call append(line('$'), " - quickfix claims that the file name displayed is: " . locationListFileName)
-:w
-:wincmd o
-:b 1
-ENDTEST
-
-Test B:
-STARTTEST
-:lrewind
-:lopen
-:2
-:exe "normal \<CR>"
-:wincmd p
-:3
-:exe "normal \<CR>"
-:wincmd p
-:4
-:exe "normal \<CR>"
-:let numberOfWindowsOpen = winnr('$')
-:wincmd n
-:wincmd K
-:b test.out
-:call append(line('$'), "Test B:")
-:call append(line('$'), " - number of window open: " . numberOfWindowsOpen)
-:w
-:wincmd o
-:b 1
-ENDTEST
-
-Test C:
-STARTTEST
-:lrewind
-:lopen
-:" Let's move the location list window to the top to check whether it (the first
-:" window found) will be reused when we try to open new windows:
-:wincmd K
-:2
-:exe "normal \<CR>"
-:wincmd p
-:3
-:exe "normal \<CR>"
-:wincmd p
-:4
-:exe "normal \<CR>"
-:1wincmd w
-:let locationListWindowBufType = &buftype
-:2wincmd w
-:let bufferName = expand("%")
-:wincmd n
-:wincmd K
-:b test.out
-:let bufferName = substitute(bufferName, '\\', '/', 'g')
-:call append(line('$'), "Test C:")
-:call append(line('$'), " - 'buftype' of the location list window: " . locationListWindowBufType)
-:call append(line('$'), " - buffer displayed in the 2nd window: " . bufferName)
-:w
-:wincmd o
-:b 1
-ENDTEST
-
-STARTTEST
-:qa
-ENDTEST
-
diff --git a/src/testdir/test96.ok b/src/testdir/test96.ok
deleted file mode 100644
index 3498e52f73..0000000000
--- a/src/testdir/test96.ok
+++ /dev/null
@@ -1,9 +0,0 @@
-
-Test A:
- - file name displayed: test://bar.txt
- - quickfix claims that the file name displayed is: test://bar.txt
-Test B:
- - number of window open: 2
-Test C:
- - 'buftype' of the location list window: quickfix
- - buffer displayed in the 2nd window: test://quux.txt
diff --git a/src/testdir/test97.in b/src/testdir/test97.in
deleted file mode 100644
index 13e9dd5b6e..0000000000
--- a/src/testdir/test97.in
+++ /dev/null
@@ -1,17 +0,0 @@
-Test whether glob()/globpath() return correct results with certain escaped
-characters.
-
-STARTTEST
-:so small.vim
-:set shell=doesnotexist
-:e test.out
-:put =glob('Xxx\{')
-:put =glob('Xxx\$')
-:w! Xxx{
-:w! Xxx\$
-:put =glob('Xxx\{')
-:put =glob('Xxx\$')
-:w
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test97.ok b/src/testdir/test97.ok
deleted file mode 100644
index afa96a4de4..0000000000
--- a/src/testdir/test97.ok
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-Xxx{
-Xxx$
diff --git a/src/testdir/test98.in b/src/testdir/test98.in
deleted file mode 100644
index 83ccba09e9..0000000000
--- a/src/testdir/test98.in
+++ /dev/null
@@ -1,43 +0,0 @@
-Test for 'scrollbind' causing an unexpected scroll of one of the windows.
-STARTTEST
-:so small.vim
-:" We don't want the status line to cause problems:
-:set laststatus=0
-:let g:totalLines = &lines * 20
-:let middle = g:totalLines / 2
-:wincmd n
-:wincmd o
-:for i in range(1, g:totalLines)
-: call setline(i, 'LINE ' . i)
-:endfor
-:exe string(middle)
-:normal zt
-:normal M
-:aboveleft vert new
-:for i in range(1, g:totalLines)
-: call setline(i, 'line ' . i)
-:endfor
-:exe string(middle)
-:normal zt
-:normal M
-:" Execute the following two command at once to reproduce the problem.
-:setl scb | wincmd p
-:setl scb
-:wincmd w
-:let topLineLeft = line('w0')
-:wincmd p
-:let topLineRight = line('w0')
-:setl noscrollbind
-:wincmd p
-:setl noscrollbind
-:q!
-:%del _
-:call setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - topLineRight))
-:w! test.out
-:brewind
-ENDTEST
-
-STARTTEST
-:qa!
-ENDTEST
-
diff --git a/src/testdir/test98.ok b/src/testdir/test98.ok
deleted file mode 100644
index 356ddd8eac..0000000000
--- a/src/testdir/test98.ok
+++ /dev/null
@@ -1 +0,0 @@
-Difference between the top lines (left - right): 0
diff --git a/src/testdir/test99.in b/src/testdir/test99.in
deleted file mode 100644
index 77828f4b68..0000000000
--- a/src/testdir/test99.in
+++ /dev/null
@@ -1,68 +0,0 @@
-Tests for regexp with multi-byte encoding and various magic settings.
-Test matchstr() with a count and multi-byte chars.
-See test44 for exactly the same test with re=1.
-
-STARTTEST
-:so mbyte.vim
-:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
-:set re=2
-/^1
-/a*b\{2}c\+/e
-x/\Md\*e\{2}f\+/e
-x:set nomagic
-/g\*h\{2}i\+/e
-x/\mj*k\{2}l\+/e
-x/\vm*n{2}o+/e
-x/\V^aa$
-x:set magic
-/\v(a)(b)\2\1\1/e
-x/\V[ab]\(\[xy]\)\1
-x:" Now search for multi-byte without composing char
-/ม
-x:" Now search for multi-byte with composing char
-/ม่
-x:" find word by change of word class
-/ち\<カヨ\>は
-x:" Test \%u, [\u] and friends
-/\%u20ac
-x/[\u4f7f\u5929]\+
-x/\%U12345678
-x/[\U1234abcd\u1234\uabcd]
-x/\%d21879b
-x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
-x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
-x:" Test backwards search from a multi-byte char
-/x
-x?.
-x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
-:@w
-:?^1?,$w! test.out
-:e! test.out
-G:put =matchstr(\"אבגד\", \".\", 0, 2) " ב
-:put =matchstr(\"אבגד\", \"..\", 0, 2) " בג
-:put =matchstr(\"אבגד\", \".\", 0, 0) " א
-:put =matchstr(\"אבגד\", \".\", 4, -1) " ג
-:w!
-:qa!
-ENDTEST
-
-1 a aa abb abbccc
-2 d dd dee deefff
-3 g gg ghh ghhiii
-4 j jj jkk jkklll
-5 m mm mnn mnnooo
-6 x ^aa$ x
-7 (a)(b) abbaa
-8 axx [ab]xx
-9 หม่x อมx
-a อมx หม่x
-b ちカヨは
-c x ¬€x
-d 天使x
-e y
-f z
-g a啷bb
-h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐẔ
-i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑẕ
-j 0123❤x
-k combinations
diff --git a/src/testdir/test99.ok b/src/testdir/test99.ok
deleted file mode 100644
index 0bd0b8ab73..0000000000
--- a/src/testdir/test99.ok
+++ /dev/null
@@ -1,24 +0,0 @@
-1 a aa abb abbcc
-2 d dd dee deeff
-3 g gg ghh ghhii
-4 j jj jkk jkkll
-5 m mm mnn mnnoo
-6 x aa$ x
-7 (a)(b) abba
-8 axx ab]xx
-9 หม่x อx
-a อมx หx
-b カヨは
-c x ¬x
-d 使x
-e y
-f z
-g abb
-h AÀÁÂÃÄÅĀĂĄǍǞǠẢ BḂḆ CÇĆĈĊČ DĎĐḊḎḐ EÈÉÊËĒĔĖĘĚẺẼ FḞ GĜĞĠĢǤǦǴḠ HĤĦḢḦḨ IÌÍÎÏĨĪĬĮİǏỈ JĴ KĶǨḰḴ LĹĻĽĿŁḺ MḾṀ NÑŃŅŇṄṈ OÒÓÔÕÖØŌŎŐƠǑǪǬỎ PṔṖ Q RŔŖŘṘṞ SŚŜŞŠṠ TŢŤŦṪṮ UÙÚÛÜŨŪŬŮŰŲƯǓỦ VṼ WŴẀẂẄẆ XẊẌ YÝŶŸẎỲỶỸ ZŹŻŽƵẐ
-i aàáâãäåāăąǎǟǡả bḃḇ cçćĉċč dďđḋḏḑ eèéêëēĕėęěẻẽ fḟ gĝğġģǥǧǵḡ hĥħḣḧḩẖ iìíîïĩīĭįǐỉ jĵǰ kķǩḱḵ lĺļľŀłḻ mḿṁ nñńņňʼnṅṉ oòóôõöøōŏőơǒǫǭỏ pṕṗ q rŕŗřṙṟ sśŝşšṡ tţťŧṫṯẗ uùúûüũūŭůűųưǔủ vṽ wŵẁẃẅẇẘ xẋẍ yýÿŷẏẙỳỷỹ zźżžƶẑ
-j 012❤
-k œ̄ṣ́m̥̄ᾱ̆́
-בג
diff --git a/src/testdir/test_eval.in b/src/testdir/test_eval.in
deleted file mode 100644
index c34f5cb50e..0000000000
--- a/src/testdir/test_eval.in
+++ /dev/null
@@ -1,57 +0,0 @@
-STARTTEST
-
-:e test.out
-:%d
-
-:" function name not starting with a capital
-:try
-: func! g:test()
-: echo "test"
-: endfunc
-:catch
-: $put =v:exception
-:endtry
-
-:" function name folowed by #
-:try
-: func! test2() "#
-: echo "test2"
-: endfunc
-:catch
-: $put =v:exception
-:endtry
-
-:" function name includes a colon
-:try
-: func! b:test()
-: echo "test"
-: endfunc
-:catch
-: $put =v:exception
-:endtry
-
-:" function name starting with/without "g:", buffer-local funcref.
-:function! g:Foo(n)
-: $put ='called Foo(' . a:n . ')'
-:endfunction
-:let b:my_func = function('Foo')
-:call b:my_func(1)
-:echo g:Foo(2)
-:echo Foo(3)
-
-:" script-local function used in Funcref must exist.
-:so test_eval_func.vim
-
-:" using $ instead of '$' must give an error
-:try
-: call append($, 'foobar')
-:catch
-: $put =v:exception
-:endtry
-
-:1d
-:w
-:qa!
-
-ENDTEST
-
diff --git a/src/testdir/test_eval.ok b/src/testdir/test_eval.ok
deleted file mode 100644
index 162e1b12fd..0000000000
--- a/src/testdir/test_eval.ok
+++ /dev/null
@@ -1,11 +0,0 @@
-Vim(function):E128: Function name must start with a capital or "s:": g:test()
-Vim(function):E128: Function name must start with a capital or "s:": test2() "#
-Vim(function):E128: Function name must start with a capital or "s:": b:test()
-called Foo(1)
-called Foo(2)
-called Foo(3)
-s:Testje exists: 0
-func s:Testje exists: 1
-Bar exists: 1
-func Bar exists: 1
-Vim(call):E116: Invalid arguments for function append
diff --git a/src/testdir/test_eval_func.vim b/src/testdir/test_eval_func.vim
deleted file mode 100644
index 48d01df27d..0000000000
--- a/src/testdir/test_eval_func.vim
+++ /dev/null
@@ -1,12 +0,0 @@
-" Vim script used in test_eval.in. Needed for script-local function.
-
-func! s:Testje()
- return "foo"
-endfunc
-
-let Bar = function('s:Testje')
-
-$put ='s:Testje exists: ' . exists('s:Testje')
-$put ='func s:Testje exists: ' . exists('*s:Testje')
-$put ='Bar exists: ' . exists('Bar')
-$put ='func Bar exists: ' . exists('*Bar')
diff --git a/src/testdir/unix.vim b/src/testdir/unix.vim
deleted file mode 100644
index f766e74c30..0000000000
--- a/src/testdir/unix.vim
+++ /dev/null
@@ -1,3 +0,0 @@
-" Settings for test script execution
-" Always use "sh", don't use the value of "$SHELL".
-set shell=sh