Mon Sep 8 20:54:29 CDT 2014 make[1]: Entering directory '/sources/vim74' Starting make in the src directory. If there are problems, cd to the src directory and run make there cd src && make test make[2]: Entering directory '/sources/vim74/src' make -f Makefile vim make[3]: Entering directory '/sources/vim74/src' make[3]: 'vim' is up to date. make[3]: Leaving directory '/sources/vim74/src' if test -n "yes" -a -f po/Makefile; then \ cd po; make -f Makefile check VIM=../vim; \ fi make[3]: Entering directory '/sources/vim74/src/po' ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"af.po" "af.po" 5393 lines, 133397 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch af.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ca.po" "ca.po" 6201 lines, 161831 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ca.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"cs.po" "cs.po" 4664 lines, 111014 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch cs.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"de.po" "de.po" 6117 lines, 156573 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch de.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"en_GB.po" "en_GB.po" 290 lines, 8951 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch en_GB.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"eo.po" "eo.po" 6825 lines, 173499 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch eo.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"es.po" "es.po" 8279 lines, 203810 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch es.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"fi.po" "fi.po" 6526 lines, 161907 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch fi.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"fr.po" "fr.po" 7091 lines, 192058 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch fr.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ga.po" "ga.po" 6503 lines, 164355 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ga.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"it.po" "it.po" 6803 lines, 174859 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch it.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ja.po" "ja.po" 6808 lines, 195582 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ja.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ko.po" "ko.po" 6447 lines, 155537 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ko.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ko.UTF-8.po" "ko.UTF-8.po" 6447 lines, 171434 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ko.UTF-8.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"nb.po" "nb.po" 6166 lines, 150559 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch nb.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"nl.po" "nl.po" 5852 lines, 135179 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch nl.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"no.po" "no.po" 6166 lines, 150559 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch no.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"pl.po" "pl.po" 6904 lines, 175255 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch pl.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"pt_BR.po" "pt_BR.po" 6236 lines, 160823 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch pt_BR.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ru.po" "ru.po" 6883 lines, 225596 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ru.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"sk.po" "sk.po" 5821 lines, 147389 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch sk.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"sv.po" "sv.po" 6148 lines, 149143 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch sv.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"uk.po" "uk.po" 6845 lines, 208009 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch uk.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"vi.po" "vi.po" 5196 lines, 143932 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch vi.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"zh_CN.UTF-8.po" "zh_CN.UTF-8.po" 6139 lines, 147455 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch zh_CN.UTF-8.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"zh_CN.po" "zh_CN.po" 6140 lines, 136477 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch zh_CN.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"zh_TW.UTF-8.po" "zh_TW.UTF-8.po" 5282 lines, 127286 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch zh_TW.UTF-8.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"zh_TW.po" "zh_TW.po" 5275 lines, 117353 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch zh_TW.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"cs.cp1250.po" "cs.cp1250.po" 4664 lines, 111022 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch cs.cp1250.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ja.sjis.po" "ja.sjis.po" 6808 lines, 172635 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ja.sjis.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ja.euc-jp.po" "ja.euc-jp.po" 6808 lines, 172526 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ja.euc-jp.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"pl.cp1250.po" "pl.cp1250.po" 6904 lines, 175251 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch pl.cp1250.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"pl.UTF-8.po" "pl.UTF-8.po" 6904 lines, 178041 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch pl.UTF-8.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"ru.cp1251.po" "ru.cp1251.po" 6883 lines, 177871 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch ru.cp1251.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"sk.cp1250.po" "sk.cp1250.po" 5821 lines, 147385 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch sk.cp1250.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"uk.cp1251.po" "uk.cp1251.po" 6845 lines, 168332 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch uk.cp1251.ck ../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po [?1049h[?1h=[?12;25h[?12l[?25h[?25l"zh_CN.cp936.po" "zh_CN.cp936.po" 6140 lines, 136489 characters search hit BOTTOM, continuing at TOP OK [?1l>[?12l[?25h[?1049ltouch zh_CN.cp936.ck make[3]: Leaving directory '/sources/vim74/src/po' if test vim != vim -a ! -r vim; then \ ln -s vim vim; \ fi cd testdir; make -f Makefile VIMPROG=../vim make[3]: Entering directory '/sources/vim74/src/testdir' rm -f test.log rm -rf test1.failed test.out X* viminfo tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok ../vim -u unix.vim -U NONE --noplugin -s dotest.in test1.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test1.in" 53 lines, 1864 charactersFirst 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 :" 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 ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 31 lines, 928 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h" Write a single line to test.out to check if testing works at all. [?25l[?12l[?25h[?25l:[?12l[?25h%d [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --No lines in buffer--[?12l[?25h[?25lthis is a test[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 1 line, 15 characters written[?12l[?25h[?25l:[?12l[?25h" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test. [?25l[?12l[?25h [?25l[?12l[?25h[?25l:[?12l[?25hw! small.vim [?25l"small.vim" [New File] 1 line, 1 character written[?12l[?25h[?25l:[?12l[?25hw! tiny.vim [?25l"tiny.vim" [New File] 1 line, 1 character written[?12l[?25h[?25le! test.ok w! test.outqa![?12l[?25h[?25l:[?12l[?25hw! mbyte.vim [?25l"mbyte.vim" [New File] 4 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25hw! mzscheme.vim [?25l"mzscheme.vim" [New File] 4 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25hw! lua.vim [?25l"lua.vim" [New File] 4 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" If +multi_byte feature supported, make mbyte.vim empty. [?25l[?12l[?25h[?25l:[?12l[?25hif has("multi_byte") | sp another | w! mbyte.vim | q | endif [?25l"another" [New File] "mbyte.vim" 0 lines, 0 characters writtene! test.ok[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" If +mzscheme feature supported, make mzscheme.vim empty. [?25l[?12l[?25h[?25l:[?12l[?25hif has("mzscheme") | sp another | w! mzscheme.vim | q | endif [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" If +lua feature supported, make lua.vim empty. [?25l[?12l[?25h[?25l:[?12l[?25hif has("lua") | sp another | w! lua.vim | q | endif [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. [?25l[?12l[?25h[?25l:[?12l[?25h" Otherwise write small.vim to skip the test. [?25l[?12l[?25h[?25l:[?12l[?25hif 1 | q! | endif [?25l[?1l>[?12l[?25h[?1049lrm -rf X* viminfo rm -rf test2.failed test.ok test.out X* viminfo cp test2.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test2.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test2.in" 29 lines, 717 charactersThis 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("")) /^second /URL :call append(1, expand("")) :if has("ebcdic") : set isf=@,240-249,/,.,-,_,+,,,$,:,~,\ :else : set isf=@,48-57,/,.,-,_,+,,,$,:,~,\ :endif /^third /name :call append(2, expand("")) /^fourth /URL :call append(3, expand("")) 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 19 lines, 336 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25h^first [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l/[?12l[?25htmp [?25l[?12l[?25h[?25l:[?12l[?25hcall append(0, expand("")) [?25lURL://machine.name/tmp/vimtest2a[?12l[?25h[?25l/[?12l[?25h^second [?25l[?12l[?25h[?25l/[?12l[?25hURL [?25l[?12l[?25h[?25l:[?12l[?25hcall append(1, expand("")) [?25lURL://machine.name/tmp/vimtest2b[?12l[?25h[?25l:[?12l[?25hif has("ebcdic") [?25l : [?12l[?25h: set isf=@,240-249,/,.,-,_,+,,,$,:,~,\ [?25l: [?12l[?25h:else [?25l: [?12l[?25h: set isf=@,48-57,/,.,-,_,+,,,$,:,~,\ [?25l: [?12l[?25h:endif [?25lURL://machine.name/tmp/vimtest2a URL://machine.name/tmp/vimtest2b This is a test if a URL is recognized by "gf", with the cursor before and[?12l[?25h[?25l/[?12l[?25h^third [?25l[?12l[?25h[?25l/[?12l[?25hname [?25l[?12l[?25h[?25l:[?12l[?25hcall append(2, expand("")) [?25lURL:\\machine.name\vimtest2c[?12l[?25h[?25l/[?12l[?25h^fourth [?25l[?12l[?25h[?25l/[?12l[?25hURL [?25l[?12l[?25h[?25l:[?12l[?25hcall append(3, expand("")) [?25lURL:\\machine.name\tmp\vimtest2d[?12l[?25h[?25l29 fewer lines~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hwq! test.out [?25l"test.out" [New File] 4 lines, 128 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test3.failed test.ok test.out X* viminfo cp test3.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test3.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test3.in" 2056 lines, 21564 characters/* 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;elsecmd2; } {if (test){cmd1;cmd2;} } {if (test){cmd1;else} } {while (this)if (test)cmd1;cmd2; } {while (this)if (test)cmd1;elsecmd2; } {if (test){cmd;[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l/* vim: set cin ts=4 sw=4 : */[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 5 lines, 125 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo modeline [?25l[?12l[?25h[?25l:[?12l[?25hedit " read modeline [?25l"test3.in"2056L, 21564Cif (test)cmd1;cmd2;if (test)cmd1;elsecmd2;if (test){cmd1;cmd2;}if (test){cmd1;else}while (this)if (test)cmd1;cmd2;while (this)if (test)cmd1;elsecmd2;if (test){cmd;[?12l[?25h[?25l/[?12l[?25hstart of AUTO [?25l[?12l[?25h[?25l/[?12l[?25hend of AUTO [?25l873 lines to indent... 8500 750 650 550 450 350 250 150 50 lines to indent... 874 lines indented [?12l[?25h[?25l/^STARTTEST 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?[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 93C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset tw=0 wm=60 columns=80 noai fo=croq [?25l[?12l[?25h[?25lnamespace 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?[?12l[?25h[?25l/[?12l[?25hserious/e [?25l[?12l[?25h[?25l-- INSERT --* about life, the * universe, and the * rest important big[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 6L, 78C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset nocin [?25l[?12l[?25h[?25l/[?12l[?25hcomments [?25l[?12l[?25h[?25l -- INSERT -- about life[?12l[?25h[?25l /[?12l[?25hhappens [?25l/* * what happens here?[?12l[?25h[?25l */[?12l[?25h[?25l -- INSERT -- there[?12l[?25h[?25l /[?12l[?25hbelow [?25l/*the end of the comment, try inserting a line below */[?12l[?25h[?25l -- INSERT -- line[?12l[?25h[?25l /[?12l[?25hthis [?25l/* how aboutthis one */[?12l[?25h[?25l -- INSERT --hello[?12l[?25h[?25l this one */[?12l[?25h[?25l /^STARTTEST } STARTTEST[?12l[?25h[?25l :set cin [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 18C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1/vec2 ==[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cin [?25l[?12l[?25h[?25l/[?12l[?25hvec2 [?25l{ var = this + that + vec[0] * vec[0]+ vec[1] * vec[1]+ vec2[2] * vec[2];[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :set cin [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 5L, 51C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set cino=}4 /testing1 k2==/testing2 k2==[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cin [?25l[?12l[?25h[?25l:[?12l[?25hset cino=}4 [?25l[?12l[?25h[?25l/[?12l[?25htesting1 [?25l{asdf asdflkajds f; if (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;} testing1;[?12l[?25h [?25l /[?12l[?25htesting2 [?25lif (tes & ting) {asdf asdf asdf ;asdfa sdf asdf;} testing2;[?12l[?25h [?25l /^STARTTEST } STARTTEST[?12l[?25h[?25l :set cin [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 4L, 36C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set cino=(0,)20 /main =][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cin [?25l[?12l[?25h[?25l:[?12l[?25hset cino=(0,)20 [?25l[?12l[?25h[?25l/[?12l[?25hmain [?25lmain ( int first_par, /*[?12l[?25h[?25l 19 lines to indent... 20indented [?12l[?25h[?25l * Comment for[?12l[?25h[?25l /^STARTTEST * first par*/int second_par /** Comment for* second par*/) { func( first_par, /** Comment for* first par*/second_par /** Comment for* second par*/); } STARTTEST[?12l[?25h[?25l :set cin [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 4L, 36C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set cino=es,n0s /main =][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cin [?25l[?12l[?25h[?25l:[?12l[?25hset cino=es,n0s [?25l[?12l[?25h[?25l/[?12l[?25hmain [?25lmain(void)[?12l[?25h[?25l 8 lines to indent... 9indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST /* Make sure that cino=X0s is not parsed like cino=Xs. */ if (cond)foo(); else {bar(); } } STARTTEST[?12l[?25h[?25l :set cin [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 26C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set cino= ]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cin [?25l[?12l[?25h[?25l:[?12l[?25hset cino= [?25l[?12l[?25h[?25l{[?12l[?25h[?25l 11 lines to indent... 12indented [?12l[?25h[?25l do[?12l[?25h[?25l /^STARTTEST {if (){if ()asdf;elseasdf;} } while (); cmd;/* this should go under the } */ } STARTTEST[?12l[?25h[?25l ]]=][ [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 1L, 6C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1[?12l[?25h[?25l ENDTEST[?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 8 lines to indent... 9indented [?12l[?25h[?25l if ( k() ) {[?12l[?25h[?25l /^STARTTEST l();} else { /* Start (two words) end */m(); }n(); } STARTTEST[?12l[?25h[?25l :set cino={s,e-s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 ]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino={s,e-s [?25l[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 7 lines to indent... 8indented  {[?12l[?25h[?25l if ( k() )[?12l[?25h[?25l /^STARTTEST {l();} else { /* Start (two words) end */m();} n(); /* should be under the if () */ } STARTTEST[?12l[?25h[?25l :set cino={s,fs [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 25C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 ]]=/ foo[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino={s,fs [?25l[?12l[?25h[?25lvoid bar(void) {[?12l[?25h[?25l /[?12l[?25h foo [?25l30 lines to indent... 31indented  {[?12l[?25h[?25l/^STARTTEST {{ 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();^Mlabel3 /* post */:^M/* pre */ label4:^Mf(/*com*/);^Mif (/*com*/)^^Mcmd();^[ ENDTEST a() { label1:/* hmm */// comment } STARTTEST[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 25C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino= [?25l[?12l[?25h[?25l/[?12l[?25hwhile [?25l[?12l[?25h[?25l-- INSERT --here[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 109C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino= com= [?25l[?12l[?25h[?25l/[?12l[?25hcomment [?25l[?12l[?25h[?25l -- INSERT --label2: b(); label3 /* post */: /* pre */ label4:f(/*com*/);if (/*com*/)cmd();[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :set comments& comments^=s:/*,m:**,ex:*/ [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 53C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1/simple =5j[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset comments& comments^=s:/*,m:**,ex:*/ [?25l[?12l[?25h[?25l/[?12l[?25hsimple [?25l/* * A simple comment[?12l[?25h[?25l 5 lines to indent... 6indented * A simple comment[?12l[?25h[?25l */[?12l[?25h[?25l /^STARTTEST /* ** A different comment */ STARTTEST[?12l[?25h[?25l :set cino=c0 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 70C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set comments& comments-=s1:/* comments^=s0:/* 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=c0 [?25l[?12l[?25h[?25l:[?12l[?25hset comments& comments-=s1:/* comments^=s0:/* [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 4 lines to indent... 5indented [?12l[?25h[?25l [?12l[?25h[?25l /^STARTTEST /*********A comment. *********/ } STARTTEST[?12l[?25h[?25l :set cino=c0,C1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 73C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1:set comments& comments-=s1:/* comments^=s0:/* 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=c0,C1 [?25l[?12l[?25h[?25l:[?12l[?25hset comments& comments-=s1:/* comments^=s0:/* [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 4 lines to indent... 5indented [?12l[?25h[?25l [?12l[?25h[?25l /^STARTTEST /********* A comment. *********/ } STARTTEST[?12l[?25h[?25l :set cino= [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 17C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 ]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino= [?25l[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 5 lines to indent... 6indented [?12l[?25h[?25l c = c1 &&[?12l[?25h[?25l /^STARTTEST (c2 ||c3) && c4; } STARTTEST[?12l[?25h[?25l :set cino=(s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(s [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 5 lines to indent... 6indented [?12l[?25h[?25l c = c1 &&[?12l[?25h[?25l /^STARTTEST (c2 ||c3) && c4; } STARTTEST[?12l[?25h[?25l :set cino=(s,U1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 28C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(s,U1 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 5 lines to indent... 6indented [?12l[?25h[?25l c = c1 &&[?12l[?25h[?25l /^STARTTEST (c2 ||c3) && c4; } STARTTEST[?12l[?25h[?25l :set cino=(0 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 4 lines to indent... 5indented [?12l[?25h[?25l if ( c1[?12l[?25h[?25l /^STARTTEST && ( c2|| c3))foo; } STARTTEST[?12l[?25h[?25l :set cino=(0,w1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 28C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0,w1 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 4 lines to indent... 5indented [?12l[?25h[?25l if ( c1[?12l[?25h[?25l /^STARTTEST && ( c2|| c3))foo; } STARTTEST[?12l[?25h[?25l :set cino=(s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(s [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 8 lines to indent... 9indented [?12l[?25h[?25l c = c1 && ([?12l[?25h[?25l /^STARTTEST c2 ||c3) && c4; if (c1 && c2)foo; } STARTTEST[?12l[?25h[?25l :set cino=(s,m1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 28C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(s,m1 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 8 lines to indent... 9indented [?12l[?25h[?25l c = c1 && ([?12l[?25h[?25l /^STARTTEST c2 ||c3 ) && c4; if (c1 && c2 )foo; } STARTTEST[?12l[?25h[?25l :set cino=b1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=b1 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 9 lines to indent... 10 lines indented [?12l[?25h[?25l switch (x)[?12l[?25h[?25l /^STARTTEST {case 1:a = b;break;default:a = 0;break; } } STARTTEST[?12l[?25h[?25l :set cino=(0,W5 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 26C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0,W5 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 10 lines to indent... 11indented [?12l[?25h[?25l invokeme([?12l[?25h[?25l /^STARTTEST argu,ment); invokeme(argu,ment); invokeme(argu,ment); } STARTTEST[?12l[?25h[?25l :set cino=/6 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=/6 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l 3 lines to indent... 4indented [?12l[?25h[?25l statement;[?12l[?25h[?25l /^STARTTEST // comment 1// comment 2 } STARTTEST[?12l[?25h[?25l :set cino= [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 34C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-12kdd]]/comment 1/+1 ==[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino= [?25l[?12l[?25h[?25l==ENDTEST[?12l[?25h[?25lvoid f() {[?12l[?25h[?25l /[?12l[?25hcomment 1/+1 [?25lstatement;// comment 1 // comment 2[?12l[?25h[?25l // comment 2[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :set cino=g0 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=g0 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lclass CAbc {[?12l[?25h[?25l 6 lines to indent... 7indented [?12l[?25h[?25l int Test() { return FALSE; }[?12l[?25h[?25l /^STARTTEST public: // comment void testfall(); protected: void testfall(); }; STARTTEST[?12l[?25h[?25l :set cino=(0,gs,hs [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 29C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0,gs,hs [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lclass Foo : public Bar {[?12l[?25h[?25l 5 lines to indent... 6indented [?12l[?25h[?25l public:[?12l[?25h[?25l /^STARTTEST virtual void method1(void) = 0;virtual void method2(int arg1,int arg2,int arg3) = 0; }; STARTTEST[?12l[?25h[?25l :set cino=+20 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 24C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=+20 [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25lvoid foo() {[?12l[?25h[?25l 4 lines to indent... 5indented [?12l[?25h[?25l if (a)[?12l[?25h[?25l /^STARTTEST { } elseasdf; } STARTTEST[?12l[?25h[?25l :set cino=(0,W2s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 27C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd]]=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0,W2s [?25l[?12l[?25h[?25l2kdd]]=][ENDTEST[?12l[?25h[?25l {[?12l[?25h[?25l 34 lines to indent... 35indented [?12l[?25h[?25l averylongfunctionnamelongfunctionnameaverylongfunctionname()->asd([?12l[?25h[?25l /^STARTTEST /* 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[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 23C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=M1 [?25l[?12l[?25h[?25l [?12l[?25h[?25l4 lines to indent... 5indented [?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 24C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0,ts [?25l[?12l[?25h[?25l void[?12l[?25h[?25l9 lines to indent... 10 lines indented [?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 21C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=(0 [?25l[?12l[?25h[?25l func(int a[?12l[?25h[?25l10 lines to indent... 11indented  void[?12l[?25h [?25l/^STARTTEST #if defined(FOO), int b, int c #endif ) { } STARTTEST[?12l[?25h[?25l :set cino& [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 20C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd=7][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino& [?25l[?12l[?25h[?25l2kdd=7][ENDTEST[?12l[?25h[?25l 71 lines to indent... 50 72indented [?12l[?25h [?25l/^STARTTEST 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[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 33C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino& [?25l[?12l[?25h[?25l:[?12l[?25hset cino+=l1 [?25l[?12l[?25h[?25l :set cino&[?12l[?25h[?25l24 lines to indent... 25indented  printf("But don't break the indentation of this instruction\n"); break;[?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 19C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino& [?25l[?12l[?25h[?25l2kdd=][ENDTEST[?12l[?25h[?25l 8 lines to indent... 9indented [?12l[?25h [?25l/^STARTTEST void func(void) { cout << "a"<< "b"<< ") :"<< "c"; } STARTTEST[?12l[?25h[?25l :set com=s1:/*,m:*,ex:*/ [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 38C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 ]]3jofoo();^[[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset com=s1:/*,m:*,ex:*/ [?25l[?12l[?25h[?25lvoid func(void) {[?12l[?25h[?25l/** This is a comment.*/[?12l[?25h[?25l -- INSERT -- foo();[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :set cino& [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 19C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino& [?25l[?12l[?25h[?25l2kdd=][ENDTEST[?12l[?25h[?25l 10 lines to indent... 11indented [?12l[?25h [?25l/^STARTTEST void func(void) { for (int i = 0; i < 10; ++i)if (i & 1) {foo(1);} elsefoo(0); baz(); } STARTTEST[?12l[?25h[?25l :set cino=k2s,(0 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 27C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,(0 [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 23 lines to indent... 24indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST 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[?12l[?25h[?25l :set cino=k2s,(s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 27C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,(s [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 23 lines to indent... 24indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST 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[?12l[?25h[?25l :set cino=k2s,(s,U1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 30C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,(s,U1 [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 24 lines to indent... 25indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST 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[?12l[?25h[?25l :set cino=k2s,(0,W4 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 30C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,(0,W4 [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 29 lines to indent... 30indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST 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[?12l[?25h[?25l :set cino=k2s,u2 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 27C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,u2 [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 18 lines to indent... 19indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST if (condition1&& condition2)action(); function(argument1&& argument2);if (c1 && (c2 ||c3))foo; if (c1 &&(c2 || c3)) { } if (c123456789&& (c22345|| c3))printf("foo\n"); } STARTTEST[?12l[?25h[?25l :set cino=k2s,(0,w1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 30C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2s,(0,w1 [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 27 lines to indent... 28indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST 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[?12l[?25h[?25l :set cino=k2,(s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 26C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1 2kdd3j=][[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=k2,(s [?25l[?12l[?25h[?25l2kdd3j=][ENDTEST[?12l[?25h[?25l void func(void)[?12l[?25h[?25l 14 lines to indent... 15indented [?12l[?25h[?25l {[?12l[?25h[?25l /^STARTTEST if (condition1&& condition2)action(); function(argument1&& argument2);if (c1 && (c2 ||c3))foo; if (c1 &&(c2 || c3)) { } } STARTTEST[?12l[?25h[?25l :set cino=N-s [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 47C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1/^NAMESPACESTART =/^NAMESPACEEND[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=N-s [?25l[?12l[?25h[?25l/[?12l[?25h^NAMESPACESTART [?25lNAMESPACESTART[?12l[?25h[?25l /[?12l[?25h^NAMESPACEEND [?25l61 lines to indent... 50 62indented [?12l[?25h[?25l/^STARTTEST 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,[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25l[?12l[?25h[?25l/[?12l[?25h^JSEND [?25l12 lines to indent... 13indented  foo: { that: this, some: ok, }, "bar":{ a : 2, b: "123abc", x: 4, "y": 5 }[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25l[?12l[?25h[?25l/[?12l[?25h^JSEND [?25l5 lines to indent... 6indented  2,[?12l[?25h[?25l/^STARTTEST 3 ]; // indent 8 less JSEND STARTTEST[?12l[?25h[?25l :set cino=j1,J1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1/^JSSTART =/^JSEND[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25lJSSTART[?12l[?25h[?25l /[?12l[?25h^JSEND [?25l7 lines to indent... 8indented [?12l[?25h[?25l/^STARTTEST function bar() { var foo = [1,2,3]; // indent 16 less } JSEND STARTTEST[?12l[?25h[?25l :set cino=j1,J1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1/^JSSTART =/^JSEND[?12l[?25h[?25l ENDTEST [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25lJSSTART[?12l[?25h[?25l /[?12l[?25h^JSEND [?25l52 lines to indent... 503indented [?12l[?25h[?25l/^STARTTEST } // 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($){[?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25l[?12l[?25h[?25l/[?12l[?25h^JSEND [?25l14 lines to indent... 15indented  $(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||{}));[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3L, 35C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset cino=j1,J1 [?25l[?12l[?25h[?25l/[?12l[?25h^JSSTART [?25l[?12l[?25h[?25l/[?12l[?25h^JSEND [?25l16 lines to indent... 17indented [?12l[?25h[?25l/^STARTTEST function init(options) {$(this).data(class_name+'_public',$.extend({},{foo: 'bar',bar: 2, // indent 8 morefoobar: [ // indent 8 more1, // indent 8 more2, // indent 16 more3 // indent 16 more],callback: function(){ // indent 8 morereturn true; // indent 8 more} // indent 8 more}, options||{})); } })(jQuery); JSEND STARTTEST :g/^STARTTEST/.,/^ENDTEST/d[?12l[?25h [?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2L, 61C written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST/+-1[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d [?25l216 fewer linesreturn 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);JSENDJSSTARTfunction 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||{})); }JSENDJSSTART(function($){function init(options) {$(this).data(class_name+'_public',$.extend({},{ foo: 'bar',bar: 2, // indent 8 morefoobar: [ // indent 8 more 1, // indent 8 more2, // indent 16 more3 // indent 16 more],callback: function(){ // indent 8 more return true; // indent 8 more } // indent 8 more }, options||{})); } })(jQuery); JSEND[?12l[?25h[?25l:[?12l[?25h1;/start of AUTO/,$wq! test.out [?25l"test.out" [New] 1820L, 18429C written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test4.failed test.ok test.out X* viminfo cp test4.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test4.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test4.in" 31 lines, 839 charactersTest 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 testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for autocommand that changes current buffer on BufEnter event.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 17 lines, 557 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hau BufEnter Xxx brew [?25l[?12l[?25h[?25l/[?12l[?25hstart of [?25l[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx " write test file Xxx [?25l"Xxx" [New] 7L, 124C written[?12l[?25h[?25l:[?12l[?25hset ai modeline modelines=3 [?25l[?12l[?25h[?25l:[?12l[?25hsp Xxx " split to Xxx, autocmd will do :brew [?25l"Xxx" 7L, 124Ctest4.in : " Append text with autoindent to this file:au! BufEnter Xxx:buf Xxx " go to Xxx, no autocmd anymoreG?this is aothis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx " include Xxx in the current file:?startstart?,$w! test.out:qa!ENDTESTstartstartstart of test file Xxxvim: set noai : this is a test this is a test this is a test this is a testend of test file Xxxtest4.in test4.in" line 1 of 31 --3%-- col 1[?12l[?25h[?25l end of test file Xxx[?12l[?25h[?25l?[?12l[?25hthis is a [?25l[?12l[?25h[?25l-- INSERT -- this should be auto-indented[+]this should be auto-indented[+][?12l[?25h[?25l end of test file Xxx[?12l[?25h[?25l:[?12l[?25h " Append text with autoindent to this file [?25l[?12l[?25h[?25l:[?12l[?25hau! BufEnter Xxx [?25l[?12l[?25h[?25l:[?12l[?25hbuf Xxx " go to Xxx, no autocmd anymore [?25l"Xxx" 7L, 124Cstart 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~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxxt [?12l[?25h[?25l?[?12l[?25hthis is a [?25l[?12l[?25h[?25l-- INSERT --this should be in column 1[+][?12l[?25h[?25l:[?12l[?25hwq " append text without autoindent to Xxx [?25l"Xxx8L, 151C writtenTest 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 :brewG?this is aothis should be auto-indented^[: " Append text with autoindent to this file:au! BufEnter Xxx:buf Xxx " go to Xxx, no autocmd anymoreG?this is aothis should be in column 1^[:wq " append text without autoindent to XxxG:r Xxx " include Xxx in the current file:?startstart?,$w! test.out:qa!ENDTESTstartstartstart of test file Xxxvim: set noai : this is a test this is a test this is a test this is a test this should be auto-indentedend of test file Xxx~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hr Xxx " include Xxx in the current file [?25l"Xxx" 8L, 151Cstart of test file Xxxvim: set noai : this is a test this is a test this is a test this is a testthis should be in column 1end of test file Xxx[?12l[?25h[?25l:[?12l[?25h?startstart?,$w! test.out [?25l"test.out" [New] 17L, 316C written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test5.failed test.ok test.out X* viminfo cp test5.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test5.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test5.in" 29 lines, 949 charactersTest 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 testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for autocommand that deletes the current buffer on BufLeave event.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 16 lines, 664 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hau BufLeave Xxx bwipe [?25l[?12l[?25h[?25l/[?12l[?25hstart of [?25l[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx " write test file Xxx [?25l"Xxx" [New File] 7 lines, 124 characters written[?12l[?25h[?25l:[?12l[?25hsp Xxx " split to Xxx [?25l"Xxx" 7 lines, 124 charactersstart of test file Xxxvim: set noai :this is a test this is a test this is a test this is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx : " 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 oneithis is another test line^[:w >>test.out: " append an extra line to the output file:qa!ENDTESTstart of test file Xxxvim: set noai : this is a test this is a test this is a test this is a testend of test file Xxxtest5.in [?12l[?25h[?25l:[?12l[?25hbwipe " delete buffer Xxx, now we're back here [?25lTest 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 hereG?this is aothis 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 oneithis is another test line^[:w >>test.out: " append an extra line to the output file:qa!ENDTESTstart of test file Xxxvim: set noai : this is a test this is a test this is a test this is a testend of test file Xxx~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "test5.in" line 23 of 29 --79%-- col 1[?12l[?25h[?25l?[?12l[?25hthis is a [?25l[?12l[?25h[?25lthis is some more text[?12l[?25h[?25l:[?12l[?25h " Append some text to this file [?25l[?12l[?25h[?25l:[?12l[?25h?start?,$w! test.out " Write current file contents [?25l"test.out" [New File] 8 lines, 147 characters written[?12l[?25h[?25l:[?12l[?25hbwipe test.out " delete alternate buffer [?25l[?12l[?25h[?25l:[?12l[?25hau bufleave test5.in bwipe [?25l[?12l[?25h[?25l:[?12l[?25hbwipe! " delete current buffer, get an empty one [?25lError detected while processing BufLeave Auto commands for "test5.in": E89: No write since last change for buffer 1 (add ! to override) Press ENTER or type command to continue[?12l[?25h[?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lthis is another test line[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 26 characters appended[?12l[?25h[?25l:[?12l[?25h " append an extra line to the output file [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test6.failed test.ok test.out X* viminfo cp test6.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test6.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test6.in" 24 lines, 739 charactersTest 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^W^W^W: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 Xxxthis is a testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for autocommand that redefines the argument list, when doing ":all".[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 13 lines, 537 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hau BufReadPost Xxx2 next Xxx2 Xxx1 [?25l[?12l[?25h[?25l/[?12l[?25h^start of [?25l[?12l[?25h[?25l1[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx1 " write test file Xxx1 [?25l"Xxx1" [New File] 6 lines, 109 characters written[?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx2 " write test file Xxx2 [?25l"Xxx2" [New File] 6 lines, 109 characters written[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx3 " write test file Xxx3 [?25l"Xxx3" [New File] 6 lines, 109 characters written[?12l[?25h[?25l:[?12l[?25hnext! Xxx1 Xxx2 Xxx3 " redefine arglist; go to Xxx1 [?25l"Xxx1"6 lines, 109 charactersstart of test file Xxx1this is a test this is a test this is a test this is a testend of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hall " open window for all args [?25l"Xxx2"6 lines, 109 characters "Xxx2" 6 lines, 109 characters "Xxx1" line 1 of 6 --16%-- col 1 (file (3) of 2) Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hw! test.out " Write contents of Xxx1 [?25l"test.out" [New File] 6 lines, 109 characters written Press ENTER or type command to continue[?12l[?25h[?25lstart of test file Xxx1this is a testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx1 start of test file Xxx2this is a testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx2 start of test file Xxx1this is a testthis is a testthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx1 [?12l[?25hXxx1  Xxx2 Xxx2  Xxx1 [?25l:[?12l[?25hw >>test.out " Append contents of last window (Xxx1) [?25l"test.out" 6 lines, 109 characters appended[?12l[?25h[?25l:[?12l[?25hrew " should now be in Xxx2 [?25l"Xxx2" line 1 of 6 --16%-- col 1 (file 1 of 2)22 [?12l[?25h[?25l:[?12l[?25hw >>test.out " Append contents of Xxx2 [?25l"test.out" 6 lines, 109 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test7.failed test.ok test.out X* viminfo cp test7.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test7.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test7.in" 26 lines, 675 charactersTest 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^W:w >>test.out" Append contents of second window (Xxx1) ^W^W:/^start of/,$w >>test.out " Append contents of last window (this file) :qa! ENDTEST start of test file Xxxthis is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for autocommand that changes the buffer list, when doing ":ball".[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 17 lines, 508 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25h^start of [?25l[?12l[?25h[?25l1[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx1 " write test file Xxx1 [?25l"Xxx1" [New File] 4 lines, 77 characters written[?12l[?25h[?25l:[?12l[?25hsp Xxx1 [?25l"Xxx1" 4 lines, 77 charactersstart of test file Xxx1this is a test this is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx1 :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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx1 this is a test this is a testend of test file Xxxtest7.in [+] [?12l[?25h[?25l:[?12l[?25hclose [?25lTest for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start ofA1^[:.,/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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx1 this is a test this is a testend of test file Xxx~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx2 " write test file Xxx2 [?25l"Xxx2" [New File] 4 lines, 77 characters written[?12l[?25h[?25l:[?12l[?25hsp Xxx2 [?25l"Xxx2" 4 lines, 77 charactersstart of test file Xxx2this is a test this is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx2 :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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx2 this is a test this is a testend of test file Xxxtest7.in [+] [?12l[?25h[?25l:[?12l[?25hclose [?25lTest for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start ofA1^[:.,/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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx2 this is a test this is a testend of test file Xxx~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx3 " write test file Xxx3 [?25l"Xxx3" [New File] 4 lines, 77 characters written[?12l[?25h[?25l:[?12l[?25hsp Xxx3 [?25l"Xxx3" 4 lines, 77 charactersstart of test file Xxx3this is a test this is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx3 this is a test this is a testend of test file Xxxtest7.in [+] [?12l[?25h[?25l:[?12l[?25hclose [?25lTest for autocommand that changes the buffer list, when doing ":ball".STARTTEST:so small.vim/^start ofA1^[:.,/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^W:w >>test.out " Append contents of second window (Xxx1)^W^W:/^start of/,$w >>test.out " Append contents of last window (this file):qa!ENDTESTstart of test file Xxx3 this is a test this is a testend of test file Xxx~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hau BufReadPost Xxx2 bwipe [?25l[?12l[?25h[?25l4[?12l[?25h[?25l:[?12l[?25hball " open window for all args, close Xxx2 [?25l"Xxx1"4 lines, 77 characters "Xxx2" 4 lines, 77 characters Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h.,$w! test.out " Write contents of this file [?25l"test.out" [New File] 4 lines, 77 characters written Press ENTER or type command to continue[?12l[?25h[?25l: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^W:w >>test.out" Append contents of second window (Xxx1) ^W^W:/^start of/,$w >>test.out " Append contents of last window (this file) :qa! ENDTEST start of test file Xxx4this is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ test7.in [+] start of test file Xxx1this is a testthis is a test end of test file Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xxx1 [?12l[?25htest7.in [+]  Xxx1 [?25l:[?12l[?25hw >>test.out " Append contents of second window (Xxx1) [?25l"test.out" 4 lines, 77 characters appended[?12l[?25htest7.in [+] Xxx1  [?25l:[?12l[?25h/^start of/,$w >>test.out " Append contents of last window (this file) [?25lsearch hit BOTTOM, continuing at TOP"test.out" 4 lines, 77 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test8.failed test.ok test.out X* viminfo cp test8.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test8.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test8.in" 46 lines, 1236 charactersTest 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 Xxxtest end of Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for BufWritePre autocommand that deletes or unloads the buffer.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 37 lines, 1054 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hau BufWritePre Xxx1 bunload [?25l[?12l[?25h[?25l:[?12l[?25hau BufWritePre Xxx2 bwipe [?25l[?12l[?25h[?25l/[?12l[?25h^start of [?25l[?12l[?25h[?25l1[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx1 " write test file Xxx1 [?25l"Xxx1" [New File] 3 lines, 31 characters written[?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25h.,/end of/w! Xxx2 " write test file Xxx2 [?25l"Xxx2" [New File] 3 lines, 31 characters written[?12l[?25h[?25l:[?12l[?25he! Xxx2 " edit Xxx2 [?25l"Xxx2" 3 lines, 31 charactersstart of Xxx2 testend of Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hbdel test8.in^I^I" delete this file from the buffer list [?25l[?12l[?25h[?25l:[?12l[?25he Xxx1 " edit Xxx1 [?25l"Xxx1" 3 lines, 31 characters1 [?12l[?25h[?25l:[?12l[?25hw " write it, will unload it and give an error msg [?25l"Xxx2"3 lines, 31 characters E203: Autocommands deleted or unloaded buffer to be written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hw! test.out " Write contents of this file [?25l"test.out" [New File] 3 lines, 31 characters written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25he! Xxx2 " start editing Xxx2 [?25l"Xxx2" 3 lines, 31 charactersstart of Xxx2test end of Xxx"Xxx2" 3 lines, 31 characters[?12l[?25h[?25l:[?12l[?25hbwipe test.out " remove test.out from the buffer list [?25l[?12l[?25h[?25l:[?12l[?25hw " write it, will delete the buffer and give an error msg [?25l"Xxx1"3 lines, 31 characters E203: Autocommands deleted or unloaded buffer to be written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hw >>test.out " Append contents of this file [?25l"test.out" 3 lines, 31 characters appended Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hau! BufWritePre [?25lstart of Xxx1test end of Xxx[?12l[?25h[?25l:[?12l[?25hfunc CloseAll() [?25l : [?12l[?25h let i = 0 [?25l: [?12l[?25h while i <= bufnr('$') [?25l: [?12l[?25h if i != bufnr('%') && bufloaded(i) [?25l: [?12l[?25h exe i . "bunload" [?25l: [?12l[?25h endif [?25l: [?12l[?25h let i += 1 [?25l: [?12l[?25h endwhile [?25l: [?12l[?25hendfunc [?25lstart of Xxx1test end of Xxx ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hfunc WriteToOut() [?25l : [?12l[?25h edit! test.out [?25l: [?12l[?25h $put ='VimLeave done' [?25l: [?12l[?25h write [?25l: [?12l[?25hendfunc [?25lstart of Xxx1test end of Xxx ~ [?12l[?25h[?25l:[?12l[?25hset viminfo='100,nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hau BufUnload * call CloseAll() [?25l[?12l[?25h[?25l:[?12l[?25hau VimLeave * call WriteToOut() [?25l[?12l[?25h[?25l:[?12l[?25he small.vim [?25lError detected while processing function CloseAll: line 4: E515: No buffers were unloaded: 0bunload "small.vim" 1 line, 1 character Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hsp mbyte.vim [?25l"mbyte.vim" 0 lines, 0 characters~ ~ ~ mbyte.vim small.vim "mbyte.vim" 0 lines, 0 characters[?12l[?25h[?25l:[?12l[?25hq [?25lError detected while processing function CloseAll: line 4: E515: No buffers were unloaded: 0bunload  "test.out" 6 lines, 62 characters "test.out" 7 lines, 76 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test9.failed test.ok test.out X* viminfo cp test9.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test9.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test9.in" 12 lines, 255 charactersTest 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for Bufleave autocommand that deletes the buffer we are about to edit.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 5 lines, 117 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hau BufLeave test9.in bwipe yy [?25l[?12l[?25h[?25l:[?12l[?25he yy [?25lE143: Autocommands unexpectedly deleted new buffer yy[?12l[?25h[?25l:[?12l[?25h/^start of/,$w! test.out " Write contents of this file [?25l"test.out" [New File] 2 lines, 42 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test10.failed test.ok test.out X* viminfo cp test10.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test10.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test10.in" 114 lines, 3080 charactersTest 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^R=a^M^[ :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^R=a^M^[ :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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for 'errorformat'. This will fail if the quickfix feature was disabled.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 50 lines, 801 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" Also test a BOM is ignored. [?25l[?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25hset encoding=utf-8 [?25lTest 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^R=a^M^[ :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^R=a^M^[ :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[?12l[?25h[?25l:[?12l[?25h7/start of errorfile/,/end of errorfile/w! Xerrorfile1 [?25l"Xerrorfile1" [New File] 83 lines, 1974 characters written[?12l[?25h[?25l:[?12l[?25h7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 [?25l"Xerrorfile2" [New File] 82 lines, 1957 characters written[?12l[?25h[?25l:[?12l[?25h/start of testfile/,/end of testfile/w! Xtestfile [?25l"Xtestfile" [New File] 23 lines, 937 characters written[?12l[?25h[?25l:[?12l[?25hset efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m [?25l[?12l[?25h[?25l:[?12l[?25hset efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m [?25l[?12l[?25h[?25l:[?12l[?25hcf Xerrorfile2 [?25l"Xtestfile" 23 lines, 937 characters (50 of 70): 1506-045 (S) Undeclared identifier fd_set. Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hclast [?25l(70 of 70): What is the title of the quickfix window? Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcopen [?25lstart of testfilexxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestfile Xtestfile|15 col 10| this is another error, but in vcol 10 this time Xtestfile|16| yet another problemXtestfile|17 col 13| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 Xtestfile|18 col 14| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 Xtestfile|19 col 15| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 Xtestfile|20 col 16| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 || || Does anyone know what is the problem and how to correction it? Xtestfile|21 col 9| What is the title of the quickfix window?Xtestfile|22 col 9| What is the title of the quickfix window? [Quickfix List] [?12l[?25h[?25l :[?12l[?25hlet a=w:quickfix_title [?25l[?12l[?25h[?25l:[?12l[?25hwincmd p [?25lXtestfile [Quickfix List]  [?12l[?25hx[?25l=[?12l[?25ha [?25l:cf Xerrorfile2[+][?12l[?25h[?25l:[?12l[?25hcf Xerrorfile1 [?25l|| :qa!|| ENDTEST|| || start of errorfileXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set. 6 col 19| this is an errorgcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c Xtestfile|9| parse error before `asd'|| make: *** [vim] Error 1Xtestfile|10| there is an error[?12l[?25h[?25lA[?12l[?25h[?25l:[?12l[?25hcn [?25lXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set.Xtestfile|6 col 19| this is an error [?12l[?25h[?25lLINE 6, COL 19[?12l[?25h[?25l:[?12l[?25hcn [?25lXtestfile|6 col 19| this is an errorXtestfile|9| parse error before `asd' [?12l[?25h[?25lNO COLUMN SPECIFIED[?12l[?25h[?25l:[?12l[?25hcn [?25lXtestfile|9| parse error before `asd'Xtestfile|10| there is an error [?12l[?25h[?25lAGAIN NO COLUMN[?12l[?25h[?25l:[?12l[?25hcn [?25lXtestfile|10| there is an error|| || 2 returned Xtestfile|11 col 1| this is an error [?12l[?25h[?25l COL 1[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|11 col 1| this is an errorXtestfile|12 col 2| this is another error [?12l[?25h[?25lCOL 2[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|12 col 2| this is another errorXtestfile|14 col 10| this is an error in column 10 [?12l[?25h[?25lCOL 10[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|14 col 10| this is an error in column 10Xtestfile|15 col 10| this is another error, but in vcol 10 this time [?12l[?25h[?25lVCOL 10[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|15 col 10| this is another error, but in vcol 10 this timeXtestfile|16| yet another problem [?12l[?25h[?25lI[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|16| yet another problemXtestfile|17 col 13| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 [?12l[?25h[?25l. SPACE POINTER[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|17 col 13| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17Xtestfile|18 col 14| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 [?12l[?25h[?25l. DOT POINTER[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|18 col 14| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18Xtestfile|19 col 15| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 [?12l[?25h[?25l. DASH POINTER[?12l[?25h[?25l:[?12l[?25hcn [?25l Xtestfile|19 col 15| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19Xtestfile|20 col 16| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 [?12l[?25h[?25l. TAB-SPACE POINTER[?12l[?25h[?25l:[?12l[?25hclast [?25lXtestfile|20 col 16| x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20|| || Does anyone know what is the problem and how to correction it? Xtestfile|21 col 9| What is the title of the quickfix window? Xtestfile|22 col 9| What is the title of the quickfix window? || end of errorfile [?12l[?25h[?25l:[?12l[?25hcprev [?25lXtestfile|22 col 9| What is the title of the quickfix window? || end of errorfile[?12l[?25h[?25l:[?12l[?25hcprev [?25lXtestfile|21 col 9| What is the title of the quickfix window? Xtestfile|22 col 9| What is the title of the quickfix window?[?12l[?25h[?25l:[?12l[?25hwincmd w [?25lXtestfile [+]  [Quickfix List] [?12l[?25h[?25l:[?12l[?25hlet a=w:quickfix_title [?25l[?12l[?25h[?25l:[?12l[?25hwincmd p [?25lXtestfile [+] [Quickfix List]  [?12l[?25hx[?25l=[?12l[?25ha [?25l:cf Xerrorfile1[?12l[?25h[?25l:[?12l[?25hw! test.out " Write contents of this file [?25l"test.out" [New File] 23 lines, 942 characters written [?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test11.failed test.ok test.out X* viminfo cp test11.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test11.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test11.in" 84 lines, 3345 charactersTests for autocommands: - FileWritePrewriting a compressed file - FileReadPostreading a compressed file - BufNewFilereading a file template - BufReadPredecompressing the file to be read - FilterReadPresubstituting characters in the temp file - FilterReadPostsubstituting characters after filtering - FileReadPreset options for decompression - FileReadPostdecompress 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("")) :au BufReadPre *.gz call rename(expand(":r"), expand("")) :au BufReadPost *.gz call rename(expand(""), expand(":r")) :au BufReadPost *.gz exe '!gzip ' . shellescape(expand(":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(""), expand("") . ".t") :au FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("")) . ".t >" . shelleescape(expand("")) :au FilterReadPre *.out exe '!rm ' . shellescape(expand("")) . '.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("")) :au FileReadPre *.gz call rename(expand(":r"), expand("")) :au! FileReadPost *.gz '[,']s/l/L/ :$r Xtestfile.gz" Read compressed file :w" write it, after filtering :au!" remove all autocommands[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for autocommands:[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 48 lines, 2277 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:e" Edit test.out again :set nobin ff& " use the default fileformat for writing :w :qa! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" drop out when there is no gzip program [?25l[?12l[?25h[?25l:[?12l[?25hif !executable("gzip") [?25l : [?12l[?25h: e! test.ok [?25l: [?12l[?25h: w! test.out [?25l: [?12l[?25h: qa! [?25l: [?12l[?25h:endif [?25l- FilterReadPostsubstituting characters after filtering - FileReadPreset options for decompression - FileReadPostdecompress the file[?12l[?25h[?25l :[?12l[?25hlet $GZIP = "" [?25l[?12l[?25h[?25l:[?12l[?25hau FileChangedShell * echo "caught FileChangedShell" [?25l[?12l[?25h[?25l:[?12l[?25hset bin [?25l[?12l[?25h[?25l:[?12l[?25hau FileWritePre *.gz '[,']!gzip [?25l[?12l[?25h[?25l:[?12l[?25hau FileWritePost *.gz undo [?25l[?12l[?25h[?25l:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestfile.gz [?25l[?12l[?25h[?25l11 lines filtered "Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written 10 more lines; before #1 0 seconds ago Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hau FileReadPost *.gz '[,']!gzip -d [?25l: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/AppendPost *.out !cat Xtest.c >>test.outw>>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("")) :au BufReadPre call rename(expand(":r"), expand("")) :au BufReadPost *.gz call rename(expand(""), expand(":r")) :au BufReadPost *.gz exe '!gzip ' . shellescape(expand(":r")) :e! Xtestfile.gz " Edit compressed file :w>>test.out " Append it to the output file :set shelltempneed temp files hereterReacall rename(expand(""), expand("") . ".t")terReadPre exe '!sed s/e/E/ ' . shellescape(expand("")) . ".t >" . shelleescape(expand("")) FilterReadPre *.out exe '!rm ' . shellescape(expand("")) . '.t' :au FilterReadPost *.out '[,']s/x/X/ge! test.out " Edit the output file23,$!cat23,$s/\r$// " remove CR for when sed adds them! FileReadPre-d ' . shellescape(expand("")) :au FileReadPre *.gz call rename(expand(":r"), expand("")) :au! FileReadPost *.gz '[,']s/l/L/$r Xtestfile.gz" Read compressed filew " write it, after filtering! " remove all autocommands:e " Edit test.out again :set nobin ff& " use the default fileformat for writingwqa!ENDTESTstartstartstart of testfileline 2 Abcdefghijklmnopqrstuvwxyzline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 4 Abcdefghijklmnopqrstuvwxyzline 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 6 Abcdefghijklmnopqrstuvwxyzline 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 8 Abcdefghijklmnopqrstuvwxyz line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 Abcdefghijklmnopqrstuvwxyz end of testfile[?12l[?25h[?25l :[?12l[?25h$r Xtestfile.gz " Read and decompress the testfile [?25l"Xtestfile.gz" [Incomplete last line] 1 line, 111 characters [?12l[?25h[?25lstart of test.c /* * Here is a new .c file */ end of test.c start of testfile[?12l[?25h[?25l :[?12l[?25h?startstart?,$w! test.out " Write contents of this file [?25l"test.out" [New File] 29 lines, 788 characters written[?12l[?25h[?25l:[?12l[?25hau BufNewFile *.c read Xtest.c [?25l[?12l[?25h[?25l:[?12l[?25h/^start of test.c/+1,/^end of test.c/-1w! Xtest.c [?25lsearch hit BOTTOM, continuing at TOP"Xtest.c" [New File] 3 lines, 32 characters written[?12l[?25h[?25l:[?12l[?25he! foo.c " Will load Xtest.c [?25l"foo.c" [New File] "Xtest.c" 3 lines, 32 characters Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hau FileAppendPre *.out '[,']s/new/NEW/ [?25l/* * Here is a new .c file */~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hau FileAppendPost *.out !cat Xtest.c >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hw>>test.out " Append it to the output file [?25l"test.out" 4 lines, 33 characters appended :!cat Xtest.c >>test.out [?12l[?25h Press ENTER or type command to continue[?25l:[?12l[?25hau! FileAppendPre [?25l/* * Here is a NEW .c file */ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h" setup autocommands to decompress before reading and re-compress afterwards [?25l[?12l[?25h[?25l:[?12l[?25hau BufReadPre *.gz exe '!gzip -d ' . shellescape(expand("")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufReadPre *.gz call rename(expand(":r"), expand("")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufReadPost *.gz call rename(expand(""), expand(":r")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufReadPost *.gz exe '!gzip ' . shellescape(expand(":r")) [?25l[?12l[?25h[?25l:[?12l[?25he! Xtestfile.gz " Edit compressed file [?25l:!gzip -d 'Xtestfile.gz' [?12l[?25h[?25l"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters:!gzip 'Xtestfile' [?12l[?25h Press ENTER or type command to continue[?25l:[?12l[?25hw>>test.out " Append it to the output file [?25l"test.out" 11 lines, 357 characters appended :!cat Xtest.c >>test.out [?12l[?25h Press ENTER or type command to continue[?25l:[?12l[?25hset shelltemp " need temp files here [?25lstart 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hau FilterReadPre *.out call rename(expand(""), expand("") . ".t") [?25l[?12l[?25h[?25l:[?12l[?25hau FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("")) . ".t >" . shell escape(expand("")) [?25lstart of testfile[?12l[?25h[?25l:[?12l[?25hau FilterReadPre *.out exe '!rm ' . shellescape(expand("")) . '.t' [?25l[?12l[?25h[?25l:[?12l[?25hau FilterReadPost *.out '[,']s/x/X/g [?25l[?12l[?25h[?25l:[?12l[?25he! test.out " Edit the output file [?25l"test.out" 50 lines, 1242 charactersstarstart of testfile2 Abcdefghijklmnopqrstuvwxyz3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4 Abcdefghijklmnopqrstuvwxyz5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6 Abcdefghijklmnopqrstuvwxyz7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8 Abcdefghijklmnopqrstuvwxyz9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 Abcdefghijklmnopqrstuvwxyz end of testfilestart of test.c/* * Here is a new .c file */end of test.cstart of testfileline 2 Abcdefghijklmnopqrstuvwxyzline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 4 Abcdefghijklmnopqrstuvwxyzline 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 6 Abcdefghijklmnopqrstuvwxyzline 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 8 Abcdefghijklmnopqrstuvwxyzline 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 10 Abcdefghijklmnopqrstuvwxyzend of testfile/* * Here is a NEW .c file *//* * Here is a new .c file */start of testfileline 2 Abcdefghijklmnopqrstuvwxyzline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 4 Abcdefghijklmnopqrstuvwxyzline 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 6 Abcdefghijklmnopqrstuvwxyzline 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 8 Abcdefghijklmnopqrstuvwxyzline 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxline 10 Abcdefghijklmnopqrstuvwxyzend of testfile/* * Here is a new .c file */[?12l[?25h[?25l:[?12l[?25h23,$!cat [?25l[?12l[?25h[?25l:!sed s/e/E/ '/tmp/vUtlh5q/1'.t >'/tmp/vUtlh5q/1' [?12l[?25h[?25l:!rm '/tmp/vUtlh5q/1'.t [?12l[?25h[?25l218 substitutions on 15 lines 28 lines filtered Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h23,$s/\r$// " remove CR for when sed adds them [?25lE486: Pattern not found: \r$ Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hau! FileReadPre *.gz exe '!gzip -d ' . shellescape(expand("")) [?25lstartstart 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 */ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hau FileReadPre *.gz call rename(expand(":r"), expand("")) [?25l[?12l[?25h[?25l:[?12l[?25hau! FileReadPost *.gz '[,']s/l/L/ [?25l[?12l[?25h[?25l:[?12l[?25h$r Xtestfile.gz " Read compressed file [?25l:!gzip -d 'Xtestfile.gz' [?12l[?25h[?25l"Xtestfile.gz""Xtestfile.gz" 11 lines, 357 characters11 substitutions on 11 lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hw " write it, after filtering [?25l"test.out"61 lines, 1599 characters written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hau! " remove all autocommands [?25lE216: No such group or event: " remove all autocommands Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25he " Edit test.out again [?25l"test.out"61 lines, 1599 charactersstartstart 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 "test.out" 61 lines, 1599 characters[?12l[?25h[?25l:[?12l[?25hset nobin ff& " use the default fileformat for writing [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"test.out" 61 lines, 1599 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test12.failed test.ok test.out X* viminfo cp test12.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test12.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test12.in" 52 lines, 1199 charactersTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for 'directory' option.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 40 lines, 965 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hset dir=.,~ [?25l[?12l[?25h[?25l:[?12l[?25h/start of testfile/,/end of testfile/w! Xtest1 [?25l"Xtest1" [New] 4L, 70C written[?12l[?25h[?25l:[?12l[?25h" do an ls of the current dir to find the swap file (should not be there) [?25l[?12l[?25h[?25l:[?12l[?25hif has("unix") [?25l : [?12l[?25h: !ls .X*.swp >test.out [?25l:!ls .X*.swp >test.out[?1l>[?12l[?25h[?1049l ls: cannot access .X*.swp: No such file or directory shell returned 2 Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25helse [?25l: [?12l[?25h: r !ls X*.swp >test.out [?25l: [?12l[?25h:endif [?25l:[?12l[?25h!echo first line >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25he Xtest1 [?25l"Xtest1" 4L, 70Cstart of testfile line 2 Abcdefghij line 3 Abcdefghij end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "Xtest1" 4L, 70C[?12l[?25h[?25l:[?12l[?25hif has("unix") [?25l : [?12l[?25h:" Do an ls of the current dir to find the swap file, remove the leading dot [?25l: [?12l[?25h:" to make the result the same for all systems. [?25l: [?12l[?25h: r!ls .X*.swp  [?25l: [?12l[?25h: s/\.*X/X/ [?25l: [?12l[?25h: .w >>test.out [?25l"test.out" 1L, 11C appended : [?12l[?25h: undo [?25l1 line less; before #1 0 seconds ago : [?12l[?25h:else [?25l: [?12l[?25h: !ls X*.swp >>test.out [?25l: [?12l[?25h:endif [?25lstart of testfile line 2 Abcdefghij line 3 Abcdefghij end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h!echo under Xtest1.swp >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xtest2 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hset dir=./Xtest2,.,~ [?25lstart of testfile line 2 Abcdefghij line 3 Abcdefghij end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25he Xtest1 [?25l"Xtest1" 4L, 70C[?12l[?25h[?25l:[?12l[?25h!ls X*.swp >>test.out [?25l[?1l>[?12l[?25h[?1049l ls: cannot access X*.swp: No such file or directory shell returned 2 Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!echo under under >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!ls Xtest2 >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!echo under Xtest1.swp >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xtest.je [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h/start of testfile/,/end of testfile/w! Xtest2/Xtest3 [?25lsearch hit BOTTOM, continuing at TOP"Xtest2/Xtest3" [New] 4L, 70C writtenstart of testfile line 2 Abcdefghij line 3 Abcdefghij end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "Xtest2/Xtest3" [New] 4L, 70C written[?12l[?25h[?25l:[?12l[?25hset dir=Xtest.je,~ [?25l[?12l[?25h[?25l:[?12l[?25he Xtest2/Xtest3 [?25l"Xtest2/Xtest3" 4L, 70C[?12l[?25h[?25l:[?12l[?25hswap [?25lXtest.je/Xtest3.swp[?12l[?25h[?25l:[?12l[?25h!ls Xtest2 >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!echo under Xtest3 >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!ls Xtest.je >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!echo under Xtest3.swp >>test.out [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test13.failed test.ok test.out X* viminfo cp test13.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test13.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test13.in" 58 lines, 1133 charactersTests 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 ^W^W :au WinLeave Xtestje2 bwipe ^W^W :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 testfilecontentscontentscontents end of testfile ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for autocommands on :close command[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 38 lines, 631 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje1 [?25l"Xtestje1" [New File] 5 lines, 64 characters written[?12l[?25h[?25l:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje2 [?25l"Xtestje2" [New File] 5 lines, 64 characters written[?12l[?25h[?25l:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje3 [?25l"Xtestje3" [New File] 5 lines, 64 characters written[?12l[?25h[?25l:[?12l[?25he Xtestje1 [?25l"Xtestje1" 5 lines, 64 charactersstart of testfilecontents contents contentsend of testfile~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25ltestje1[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestje1" 6 lines, 72 characters written[?12l[?25h[?25l:[?12l[?25hsp Xtestje2 [?25l"Xtestje2" 5 lines, 64 characters contents end of testfile~ Xtestje2 testje1 contents contents contentsend of testfileXtestje1 [?12l[?25h[?25ltestje2[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestje2" 6 lines, 72 characters written [?12l[?25h[?25l:[?12l[?25hsp Xtestje3 [?25l"Xtestje3" 5 lines, 64 charactersstart of testfilecontentscontentscontents end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestje3 testje2contentscontentscontents end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestje2 contentscontentscontents end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestje1 [?12l[?25h[?25ltestje3[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestje3" 6 lines, 72 characters written [?12l[?25hXtestje3  Xtestje2 [?25l:[?12l[?25hau WinLeave Xtestje2 bwipe [?25l[?12l[?25h[?25lstart of testfile testje3contentscontentscontents end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestje3 testje1contentscontentscontents end of testfile ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtestje1 [?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 6 lines, 72 characters written[?12l[?25h[?25l:[?12l[?25hau WinLeave Xtestje1 bwipe Xtestje3 [?25l[?12l[?25h[?25l:[?12l[?25hclose [?25l1~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 6 lines, 72 characters appended[?12l[?25h[?25l:[?12l[?25he Xtestje1 [?25l"Xtestje1" 6 lines, 72 characters[?12l[?25h[?25l:[?12l[?25hbwipe Xtestje2 Xtestje3 test.out [?25lE94: No matching buffer for Xtestje2 Xtestje3 test.out[?12l[?25h[?25l:[?12l[?25hau! [?25l[?12l[?25h[?25l:[?12l[?25hau! BufUnload Xtestje1 bwipe [?25l[?12l[?25h[?25l:[?12l[?25he Xtestje3 [?25l"Xtestje3" 6 lines, 72 characters3[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 6 lines, 72 characters appended[?12l[?25h[?25l:[?12l[?25he Xtestje2 [?25l"Xtestje2" 6 lines, 72 characters2[?12l[?25h[?25l:[?12l[?25hsp Xtestje1 [?25l"Xtestje1" 6 lines, 72 characters1Xtestje1 start of testfiletestje2 contents contents contentsend of testfileXtestje2 [?12l[?25h[?25l:[?12l[?25he [?25lE143: Autocommands unexpectedly deleted new buffer Xtestje122 "Xtestje2" line 1 of 6 --16%-- col 1t[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 6 lines, 72 characters appended[?12l[?25h[?25l:[?12l[?25hau! [?25l[?12l[?25h[?25l:[?12l[?25honly [?25l~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25he Xtestje1 [?25l"Xtestje1" 6 lines, 72 characters1[?12l[?25h[?25l:[?12l[?25hbwipe Xtestje2 Xtestje3 test.out test13.in [?25l4 buffers wiped out[?12l[?25h[?25l:[?12l[?25hau BufWipeout Xtestje1 buf Xtestje1 [?25l[?12l[?25h[?25l:[?12l[?25hbwipe [?25l"Xtestje1" 6 lines, 72 characters[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 6 lines, 72 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test14.failed test.ok test.out X* viminfo cp test14.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test14.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test14.in" 86 lines, 1434 charactersTests 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\193\xc2\o303 \90a\xfg\o578\" :else : let tt = "o\65\x42\o103 \33a\xfg\o78\" :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:]) :/^search()/,$w >>test.out :qa! ENDTEST - Bug in "vPPPP" on this text (Webb):{cmd;{cmd; /* <-- Start cursor here */{}}[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for "vaBiB", end could be wrong.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 44 lines, 989 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25hStart cursor here [?25l[?12l[?25h[?25l[?12l[?25h[?25l{ cmd; /* <-- Start cursor here */ { } [?12l[?25h[?25l cmd; }[?12l[?25h[?25l 6 fewer lines }Piece of Java{ tt m1 { t1;[?12l[?25h[?25l:[?12l[?25h?Bug?,/Piece/-2w! test.out [?25l"test.out" [New File] 3 lines, 44 characters written[?12l[?25h[?25l/[?12l[?25h^- Bug [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l:[?12l[?25hs/u/~u~/ [?25l[?12l[?25h[?25l:[?12l[?25hs/i/~u~/ [?25luuun "vPPPP" on this text (Webb): [?12l[?25h[?25l:[?12l[?25hs/o/~~~/ [?25luuuuuuuuun this text (Webb): [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 48 characters appended[?12l[?25h[?25l:[?12l[?25hif has("ebcdic") [?25l : [?12l[?25h: let tt = "o\193\xc2\o303 \90a\xfg\o578\" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let tt = "o\65\x42\o103 \33a\xfg\o78\" [?25l: [?12l[?25h:endif [?25lTests 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"[?12l[?25h[?25l:[?12l[?25hexe "normal " . tt [?25lABC !a^Og^G8[?12l[?25h[?25l:[?12l[?25hunlet tt [?25l[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25hset vb [?25l[?12l[?25h[?25l/[?12l[?25h^Piece [?25l[?12l[?25h[?25l{A[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l t1;[?12l[?25h[?25l} e1tt m2 {[?12l[?25h[?25l{B[?12l[?25h[?25l :[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25lt2;} e2tt m3 {[?12l[?25h[?25l{C[?12l[?25h[?25l :[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l{DC[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l{EA[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l{F[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 3 characters appended[?12l[?25h[?25l}G e1[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h [?25lif (x){t3;}} e3[?12l[?25h[?25l}H e3[?12l[?25h[?25l :[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l }[?12l[?25h[?5h[?5l[?25l}I[?12l[?25h[?25l :[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 3 characters appended[?12l[?25h[?25l}JH e3[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 8 characters appended[?12l[?25h[?25l}K e2[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l{LF[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l/[?12l[?25h^foobar [?25lfoobar[?12l[?25h[?25l :[?12l[?25hlet startline = line('.') [?25l[?12l[?25h[?25l:[?12l[?25hcall search('foobar', 'c') [?25l[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), line('.') - startline) [?25l[?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25hcall search('^$', 'c') [?25l[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), line('.') - startline) [?25l[?12l[?25h[?25l:[?12l[?25hcall search('^$', 'bc') [?25l[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), line('.') - startline) [?25l[?12l[?25h[?25l/[?12l[?25htwo [?25lone two[?12l[?25h[?25l :[?12l[?25hcall search('.', 'c') [?25l[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), getline('.')[col('.') - 1:]) [?25l[?12l[?25h[?25l:[?12l[?25h/^search()/,$w >>test.out [?25l"test.out" 5 lines, 19 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test15.failed test.ok test.out X* viminfo cp test15.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test15.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test15.in" 136 lines, 2246 charactersTests 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^R :map gg :.,.+2s/^/x/kk:set tw=3gqq /^aa ggu :?test for :left?,$w! test.out :qa! ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa asxxdfaatest for :centeraafaafd asdfdfaasdfaafd asdfasdfaaxasdfaasdfasdfasdfasdfasdf asxxdfaatest for :rightaafaadfaasdfaaasdfaaxasdfaaasxxdfaaasxa;ofaaasdfaqweraaaxfaaxdfaaxsdfaaxasdfaaxxasdfaaxasxxdfaaxasxa;ofaaxasdfaqwerax[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for :right on text with embedded TAB.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 17 lines, 401 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset tw=65 [?25l[?12l[?25h[?25l:[?12l[?25h/^\s*test for :left/,/^\s*test for :center/ left [?25lsearch hit BOTTOM, continuing at TOPtest for :lefta afa adfa asdfaaasdfa axasdfaatest for :cente[?12l[?25h[?25l:[?12l[?25h/^\s*test for :center/,/^\s*test for :right/ center [?25l test for :center  aa fa afd asdf  dfaa sdfa afd asdf  asdfaaxasdfa  asxxdfaa test for :right[?12l[?25h[?25l:[?12l[?25h/^\s*test for :right/,/^xxx/-1 right [?25l test for :right  aa  faa  dfaa  sdfaa  asdfaa  xasdfaa  asxxdfaa  asxa;ofaa  asdfaqwera  aax  faax  dfaax  sdfaax  asdfaax  xasdfaax  asxxdfaax  asxa;ofaax  asdfaqwerax[?12l[?25h[?25l:[?12l[?25hset fo+=tcroql tw=72 [?25l[?12l[?25h[?25l/[?12l[?25hxxxxxxxx$ [?25lxasdfaaxxxasxxdfaaxxxasxa;ofaaxxxasdfaqweraxxxaaxxxofaaxxxodfaaxxxosdfaaxxxoasdfaaxxxoxasdfaaxxxoasxxdfaaxxxoasxa;ofaaxxxoasdfaqweraxxxoaaxxxoifaaxxxoidfaaxxxoisdfaaxxxoiasdfaaxxxoixasdfaaxxxoiasxxdfaaxxxoiasxa;ofaaxxxoiasdfaqweraxxxoiaaxxxoikfaaxxxoikdfaaxxxoiksdfaaxxxoikasdfaaxxxoikxasdfaaxxxoikasxxdfaaxxxoikasxa;ofaaxxxoikasdfaqweraxxxoikaaxxxoikefaaxxxoikedfaaxxxoikesdfaaxxxoikeasdfaaxxxoikexasdfaaxxxoikeasxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey 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[?12l[?25h [?25l  xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxxx xxxxxxx. xxxx xxxx.xxxxxxx: xxxx xxxxxxx, xx xxxx xxxxxxx~ [?12l[?25h [?25l:[?12l[?25hset nocp viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25h" undo/redo here to make the next undo only work on the following changes [?25l[?12l[?25h[?25l1 more line; before #1 0 seconds agoTests 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^R :map gg :.,.+2s/^/x/kk:set tw=3gqq /^aa ggu :?test for :left?,$w! test.out :qa! ENDTESTtest for :leftaafaadfaasdfaaasdfaaxasdfaa asxxdfaatest for :centeraafaafd asdfdfaasdfaafd asdfasdfaaxasdfaasdfasdfasdfasdfasdf asxxdfaatest for :rightaafaadfaasdfaaasdfaaxasdfaaasxxdfaaasxa;ofaaasdfaqweraaaxfaaxdfaaxsdfaaxasdfaaxxasdfaaxasxxdfaaxasxa;ofaaxasdfaqwerax[?12l[?25h[?25l1 line less; after #1 0 seconds agotest for :lefta afa adfa asdfaaasdfa axasdfaa test for :center  aa fa afd asdf  dfaa sdfa afd asdf  asdfaaxasdfa  asxxdfaa test for :right  aa  faa  dfaa  sdfaa  asdfaa  xasdfaa  asxxdfaa  asxa;ofaa  asdfaqwera  aax  faax  dfaax  sdfaax  asdfaax  xasdfaax  asxxdfaax  asxa;ofaax  asdfaqwerax[?12l[?25h [?25l:[?12l[?25hmap gg :.,.+2s/^/x/kk:set tw=3gqq [?25l[?12l[?25h[?25l/[?12l[?25h^aa [?25lasdfaaxxxxasdfaaxxxasxxdfaaxxxasxa;ofaaxxxasdfaqweraxxxaaxxxofaaxxxodfaaxxxosdfaaxxxoasdfaaxxxoxasdfaaxxxoasxxdfaaxxxoasxa;ofaaxxxoasdfaqweraxxxoaaxxxoifaaxxxoidfaaxxxoisdfaaxxxoiasdfaaxxxoixasdfaaxxxoiasxxdfaaxxxoiasxa;ofaaxxxoiasdfaqweraxxxoiaaxxxoikfaaxxxoikdfaaxxxoiksdfaaxxxoikasdfaaxxxoikxasdfaaxxxoikasxxdfaaxxxoikasxa;ofaaxxxoikasdfaqweraxxxoikaaxxxoikefaaxxxoikedfaaxxxoikesdfaaxxxoikeasdfaaxxxoikexasdfaaxxxoikeasxxdfaaxxxoikeasxa;ofaaxxxoikeasdfaqweraxxxoikeaaxxxoikeyfaaxxxoikeydfaaxxxoikeysdfaaxxxoikeyasdfaaxxxoikeyxasdfaaxxxoikeyasxxdfaaxxxoikeyasxa;ofaaxxxoikeyasdfaqweraxxxoikey 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[?12l[?25h[?25l :.,.+2s/^/x/ 3 substitutions on 3 linesxaa aa aa aa xbb bb bb bb xcc cc cc cc [?12l[?25h[?25l:set tw=3 [?12l[?25h[?25l 3 more lines aaaaaa3 more lines[?12l[?25h[?25l 3 fewer lines; before #2 0 seconds agoaa aa aa aa bb bb bb bb cc cc cc cc ~ [?12l[?25h [?25l:[?12l[?25h?test for :left?,$w! test.out [?25l"test.out"[New] 111L, 2304C written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test17.failed test.ok test.out X* viminfo cp test17.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test17.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test17.in" 141 lines, 2634 charactersTests 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for:[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 33 lines, 771 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hif has("ebcdic") [?25l : [?12l[?25h: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,} [?25l: [?12l[?25h:else [?25l: [?12l[?25h: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,} [?25l: [?12l[?25h:endif [?25lTests for: - "gf" on ${VAR}, - ":checkpath!" with various 'include' settings.[?12l[?25h[?25l:[?12l[?25hfunction! DeleteDirectory(dir) [?25l : [?12l[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32") [?25l: [?12l[?25h: exec "silent !rmdir /Q /S " . a:dir [?25l: [?12l[?25h: else [?25l: [?12l[?25h: exec "silent !rm -rf " . a:dir [?25l: [?12l[?25h: endif [?25l: [?12l[?25h:endfun [?25lTests for: - "gf" on ${VAR}, - ":checkpath!" with various 'include' settings. STARTTEST :so small.vim[?12l[?25h[?25l:[?12l[?25hif has("unix") [?25l : [?12l[?25h:let $CDIR = "." [?25l: [?12l[?25h/CDIR [?25l: [?12l[?25h:else [?25l: [?12l[?25h:if has("amiga") [?25l: [?12l[?25h:let $TDIR = "/testdir" [?25l: [?12l[?25h:else [?25l: [?12l[?25h:let $TDIR = "." [?25l: [?12l[?25h:endif [?25l: [?12l[?25h/TDIR [?25l: [?12l[?25h:endif [?25lTests 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,/,.,-,_,+,,,$,:,~,{,}[?12l[?25h[?25l:[?12l[?25h" Dummy writing for making that sure gf doesn't fail even if the current [?25l[?12l[?25h[?25l:[?12l[?25h" file is modified. It can be occurred when executing the following command [?25l[?12l[?25h[?25l:[?12l[?25h" directly on Windows without fixing the 'fileformat': [?25l[?12l[?25h[?25l:[?12l[?25h" > nmake -f Make_dos.mak test17.out [?25l[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 141 lines, 2634 characters written[?12l[?25h[?25l/sources/vim74/src/testdir/./test17a.in" 3 lines, 88 charactershis file is just to test "gf" in test 17. The contents is not important. Just testing!~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h [?25l:[?12l[?25hset ff=unix [?25l[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" 3 lines, 88 characters written[?12l[?25h[?25l:[?12l[?25hbrewind [?25l"test17.in" 141 lines, 2634 characters:endi: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.outgf:set ff=unix:w! test.out:brewindENDTEST ${CDIR}/test17a.in $TDIR/test17a.inSTARTTEST:" 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.ai#include "bar.a"^[:w:e Xdir1/dir2/bar.ai#include "baz.a"^[:w:e Xdir1/dir2/baz.ai#include "foo.a"^[:w:e Xbase.a:set path=Xdir1/dir2i#include ^[:w:redir! >>test.out:checkpath!:redir END:brewindENDTESTSTARTTEST:" check for 'include' with \zs and \ze[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 23 lines, 395 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h" check for 'include' without \zs or \ze [?25l[?12l[?25h[?25l:[?12l[?25hlang C [?25l[?12l[?25h[?25l:[?12l[?25hcall delete("./Xbase.a") [?25l[?12l[?25h[?25l:[?12l[?25hcall DeleteDirectory("Xdir1") [?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xdir1 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir "Xdir1/dir2" [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25he! Xdir1/dir2/foo.a [?25l"Xdir1/dir2/foo.a" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l#include "bar.a"[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/bar.a [?25l"Xdir1/dir2/bar.a" [New File][?12l[?25h[?25l#include "baz.a"[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/baz.a [?25l"Xdir1/dir2/baz.a" [New File][?12l[?25h[?25l#include"foo.a"[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written[?12l[?25h[?25l:[?12l[?25he Xbase.a [?25l"Xbase.a" [New File][?12l[?25h[?25l:[?12l[?25hset path=Xdir1/dir2 [?25l[?12l[?25h[?25l#include [?12l[?25h[?25l:[?12l[?25hw [?25l"Xbase.a" [New File] 1 line, 20 characters written[?12l[?25h[?25l:[?12l[?25hredir! >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hcheckpath! [?25l--- 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) Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25l#include ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hbrewind [?25l"test17.in" 141 lines, 2634 charactersENDTEST ${CDIR}/test17a.in $TDIR/test17a.inSTARTTEST:" 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.ai#include "bar.a"^[:w:e Xdir1/dir2/bar.ai#include "baz.a"^[:w:e Xdir1/dir2/baz.ai#include "foo.a"^[:w:e Xbase.a:set path=Xdir1/dir2i#include ^[:w:redir! >>test.out:checkpath!:redir END:brewindENDTESTSTARTTEST:" 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.bi%inc /bar/^[:w:e Xdir1/dir2/bar.bi%inc /baz/^[:w:e Xdir1/dir2/baz.bi%inc /foo/^[:w:e Xbase.b:set path=Xdir1/dir2i%inc /foo/^[:w:redir! >>test.out:checkpath!:redir END:brewindENDTEST[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 27 lines, 531 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h" check for 'include' with \zs and \ze [?25l[?12l[?25h[?25l:[?12l[?25hcall delete("./Xbase.b") [?25l[?12l[?25h[?25l:[?12l[?25hcall DeleteDirectory("Xdir1") [?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xdir1 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir "Xdir1/dir2" [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hlet &include='^\s*%inc\s*/\zs[^/]\+\ze' [?25lENDTEST${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 ^[ :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 [?12l[?25h[?25l :[?12l[?25hfunction! DotsToSlashes() [?25l : [?12l[?25h: return substitute(v:fname, '\.', '/', 'g') . '.b' [?25l: [?12l[?25h:endfunction [?25lENDTEST[?12l[?25h[?25l :[?12l[?25hlet &includeexpr='DotsToSlashes()' [?25l[?12l[?25h[?25l:[?12l[?25he! Xdir1/dir2/foo.b [?25l"Xdir1/dir2/foo.b" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l%inc /bar/[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/bar.b [?25l"Xdir1/dir2/bar.b" [New File][?12l[?25h[?25l%inc /baz/[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/baz.b [?25l"Xdir1/dir2/baz.b" [New File][?12l[?25h[?25l%inc/foo/[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written[?12l[?25h[?25l:[?12l[?25he Xbase.b [?25l"Xbase.b" [New File][?12l[?25h[?25l:[?12l[?25hset path=Xdir1/dir2 [?25l[?12l[?25h[?25l%inc /foo/[?12l[?25h[?25l:[?12l[?25hw [?25l"Xbase.b" [New File] 1 line, 14 characters written[?12l[?25h[?25l:[?12l[?25hredir! >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hcheckpath! [?25l--- 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) Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25l%inc /foo/ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hbrewind [?25l"test17.in" 141 lines, 2634 charactersSTARTTEST:" 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.bi%inc /bar/^[:w:e Xdir1/dir2/bar.bi%inc /baz/^[:w:e Xdir1/dir2/baz.bi%inc /foo/^[:w:e Xbase.b:set path=Xdir1/dir2i%inc /foo/^[:w:redir! >>test.out:checkpath!:redir END:brewindENDTESTSTARTTEST:" 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.ci%inc bar.c^[:w:e Xdir1/dir2/bar.ci%inc baz.c^[:w:e Xdir1/dir2/baz.ci%inc foo.c^[:w:e Xdir1/dir2/FALSE.ci%inc foo.c^[:w:e Xbase.c:set path=Xdir1/dir2i%inc FALSE.c foo.c^[:w[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 39 lines, 743 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:redir! >>test.out :checkpath! :redir END :brewind :" change "\" to "/" for Windows and fix 'fileformat' :e test.out :%s#\\#/#g :set ff& :w :q ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25h" check for 'include' with \zs and no \ze [?25l[?12l[?25h[?25l:[?12l[?25hcall delete("./Xbase.c") [?25l[?12l[?25h[?25l:[?12l[?25hcall DeleteDirectory("Xdir1") [?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xdir1 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir "Xdir1/dir2" [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hlet &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze' [?25l: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%incfoo.c^[ :w :e Xdir1/dir2/FALSE.c i%incfoo.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 [?12l[?25h[?25l :[?12l[?25hfunction! StripNewlineChar() [?25l : [?12l[?25h: if v:fname =~ '\n$' [?25l: [?12l[?25h: return v:fname[:-2] [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: return v:fname [?25l: [?12l[?25h:endfunction [?25l:e! Xdir1/dir2/foo.b i%inc /bar/^[ :w :e Xdir1/dir2/bar.b i%inc /baz/^[[?12l[?25h[?25l :[?12l[?25hlet &includeexpr='StripNewlineChar()' [?25l[?12l[?25h[?25l:[?12l[?25he! Xdir1/dir2/foo.c [?25l"Xdir1/dir2/foo.c" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l%inc bar.c[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/bar.c [?25l"Xdir1/dir2/bar.c" [New File][?12l[?25h[?25l%inc baz.c[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/baz.c [?25l"Xdir1/dir2/baz.c" [New File][?12l[?25h[?25l%incfoo.c[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written[?12l[?25h[?25l:[?12l[?25he Xdir1/dir2/FALSE.c [?25l"Xdir1/dir2/FALSE.c" [New File][?12l[?25h[?25l%incfoo.c[?12l[?25h[?25l:[?12l[?25hw [?25l"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written[?12l[?25h[?25l:[?12l[?25he Xbase.c [?25l"Xbase.c" [New File][?12l[?25h[?25l:[?12l[?25hset path=Xdir1/dir2 [?25l[?12l[?25h[?25l%inc FALSE.c foo.c[?12l[?25h[?25l:[?12l[?25hw [?25l"Xbase.c" [New File] 1 line, 22 characters written[?12l[?25h[?25l:[?12l[?25hredir! >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hcheckpath! [?25l--- 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) Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25l%inc FALSE.c foo.c ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hbrewind [?25l"test17.in" 141 lines, 2634 characters:e! Xdir1/dir2/foo.bi%inc /bar/^[:w:e Xdir1/dir2/bar.bi%inc /baz/^[:w:e Xdir1/dir2/baz.bi%inc /foo/^[:w:e Xbase.b:set path=Xdir1/dir2i%inc /foo/^[:w:redir! >>test.out:checkpath!:redir END:brewindENDTESTSTARTTEST:" 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.ci%inc bar.c^[:w:e Xdir1/dir2/bar.ci%inc baz.c^[:w:e Xdir1/dir2/baz.ci%inc foo.c^[:w:e Xdir1/dir2/FALSE.ci%inc foo.c^[:w:e Xbase.c:set path=Xdir1/dir2i%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:qENDTEST[?12l[?25h[?25l:[?12l[?25h" change "\" to "/" for Windows and fix 'fileformat' [?25l[?12l[?25h[?25l:[?12l[?25he test.out [?25l"test.out" 33 lines, 655 charactersThis file is just to test "gf" in test 17. The contents is not important. Just testing!--- Included files in path --- Xdir1/dir2/foo.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.cXdir1/dir2/foo.c --> Xdir1/dir2/bar.c Xdir1/dir2/bar.c --> Xdir1/dir2/baz.c Xdir1/dir2/baz.c --> foo.c (Already listed)~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h%s#\\#/#g [?25lE486: Pattern not found: \\[?12l[?25h[?25l:[?12l[?25hset ff& [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"test.out" 33 lines, 655 characters written[?12l[?25h[?25l:[?12l[?25hq [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test18.failed test.ok test.out X* viminfo cp test18.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test18.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test18.in" 16 lines, 213 charactersTests 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 textsome test texttest text test texttest text ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for not doing smart indenting when it isn't set.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 6 lines, 76 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocin nosi ai [?25l[?12l[?25h[?25l/[?12l[?25hsome [?25l[?12l[?25h[?25l #test~ [?12l[?25h[?25l:[?12l[?25h?start?,$w! test.out [?25l"test.out" [New File] 4 lines, 41 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test19.failed test.ok test.out X* viminfo cp test19.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test19.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test19.in" 33 lines, 692 charactersTests for "r" 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=^Vx7f t_kb=^Vx08 /some r:set noexpandtab /other r :" Test replacing with Tabs and then backspacing to undo it 0wR^H^H^H^[ :" 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 textsome test text test textother test text a cde f ghi test text Second line beginning with whitespace ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for "r" with 'smarttab' and 'expandtab' set/not set.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 19 lines, 447 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset smarttab expandtab ts=8 sw=4 [?25l[?12l[?25h[?25l:[?12l[?25h" make sure that backspace works, no matter what termcap is used [?25l[?12l[?25h[?25l:[?12l[?25hset t_kD=^^? t_kb=^^H [?25lTests for "r" 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=^Vx7f t_kb=^Vx08 /some r:set noexpandtab /other r :" Test replacing with Tabs and then backspacing to undo it 0wR^H^H^H^[ :" 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 textsome test text test textother test text a cde f ghi test text Second line beginning with whitespace ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l/[?12l[?25hsome [?25l[?12l[?25h[?25l ome test text[?12l[?25h[?25l:[?12l[?25hset noexpandtab [?25l[?12l[?25h[?25l/[?12l[?25hother [?25l[?12l[?25h[?25l ther test text[?12l[?25h[?25l:[?12l[?25h" Test replacing with Tabs and then backspacing to undo it [?25l[?12l[?25h [?25l[?12l[?25h [?25l:[?12l[?25h" Test replacing with Tabs [?25l[?12l[?25h [?25l hi[?12l[?25h[?25l:[?12l[?25h" Test that copyindent works with expandtab set [?25l[?12l[?25h[?25l:[?12l[?25hset expandtab smartindent copyindent ts=8 sw=8 sts=8 [?25l[?12l[?25h[?25l{x[?12l[?25h[?25l:[?12l[?25hset nosol [?25l[?12l[?25h[?25l/[?12l[?25hSecond line/ [?25l[?12l[?25h[?25l with whitespace[?12l[?25h[?25l:[?12l[?25h?^start?,$w! test.out [?25l"test.out" [New File] 10 lines, 121 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test20.failed test.ok test.out X* viminfo cp test20.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test20.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test20.in" 22 lines, 361 charactersTests 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$ ^Vjjlld :/here$/,$-1w! test.out :qa! ENDTEST test text test tex start heresome texttest text test text Ox^[jAy^[kdd ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests Blockwise Visual when there are TABs before the text.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 9 lines, 92 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso tiny.vim [?25l[?12l[?25h[?25lx[?12l[?25h [?25ly[?12l[?25h[?25l ~ [?12l[?25h[?25l2 changes; before #1 0 seconds ago[?12l[?25h [?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] ^Vjjlld:/here$/,$-1w! test.out:qa!ENDTESTtest text test tex start here some text test texttest textOx^[jAy^[kddtest20.in [?12l[?25h[?25lx[+][?12l[?25h [?25ly[?12l[?25h[?25l ~ [?12l[?25h[?25l1 line less; before #1 0 seconds ago [?12l[?25h[?25l:[?12l[?25hquit! [?25lTests 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.vimG0"ay$k@au:new@auY:quit!GP/start here$^Vjjlld:/here$/,$-1w! test.out:qa!ENDTESTtest text test tex start here some text test texttest textOx^[jAy^[kdd~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l[?12l[?25h [?25l/[?12l[?25hstart here$ [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l[?12l[?25h[?25ls[?12l[?25h[?25le[?12l[?25h[?25lt t[?12l[?25h[?25lat [?12l[?25h[?25lrt hereextex[?12l[?25h[?25l:[?12l[?25h/here$/,$-1w! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 6 lines, 57 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test21.failed test.ok test.out X* viminfo cp test21.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test21.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test21.in" 19 lines, 297 charactersTests 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 :.w >>test.out :qa! ENDTEST #include test21.in /* test text test tex start heresome texttest textstart OK if found this linestart found wrong line test text ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for [ CTRL-I with a count and CTRL-W CTRL-I with a count[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 6 lines, 73 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25hstart [?25l[?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New File] 1 line, 30 characters written[?12l[?25h[?25l?[?12l[?25hstart here [?25l[?12l[?25h[?25l6^W :.w >>test.ou:qa! ENDTEST#include test21.in/* test text test tex start here some text test text start OK if found this linestart found wrong line test text~ ~ ~ ~ ~ ~ ~ test21.in 6^W :.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 linetest texttest21.in [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 30 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test22.failed test.ok test.out X* viminfo cp test22.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test22.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test22.in" 13 lines, 197 charactersTests for file with some lines ending in CTRL-M, some not^M ^M STARTTEST :set ta tx :e! :$-3,$w! test.out :qa! ENDTEST this lines ends in a^M this one doesn't this one does^M and the last one doesn't ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for file with some lines ending in CTRL-M, some not^M[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 4 lines, 38 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset ta tx [?25l[?12l[?25h[?25l:[?12l[?25he! [?25l"test22.in" 13 lines, 197 characters[?12l[?25h[?25l:[?12l[?25h$-3,$w! test.out [?25l"test.out" [New File] 4 lines, 79 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test23.failed test.ok test.out X* viminfo cp test23.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test23.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test23.in" 15 lines, 282 charactersTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for complicated + argument to :edit command[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 7 lines, 125 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h$-1w! Xfile1 [?25l"Xfile1" [New File] 1 line, 8 characters written[?12l[?25h[?25l:[?12l[?25h$w! Xfile2 [?25l"Xfile2" [New File] 1 line, 8 characters written[?12l[?25h[?25l:[?12l[?25hedit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w [?25l"Xfile1" 1 line, 8 characters foo|bar "Xfile1" 1 line, 11 characters written "Xfile2" 1 line, 8 characters foo/bar "Xfile2" 1 line, 12 characters written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 1 line, 12 characters written Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25he Xfile1 [?25l"Xfile1" 1 line, 11 charactersfooPIPEbar ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "Xfile1" 1 line, 11 characters[?12l[?25h[?25l:[?12l[?25hw >> test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test24.failed test.ok test.out X* viminfo cp test24.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test24.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test24.in" 89 lines, 1301 charactersTests for regexp with backslash and other special characters inside [] Also test backslash for hex/octal numbered character. STARTTEST :set nocompatible viminfo+=nviminfo /[\x] x/[\t\]] x/[]y] x/[\]] x/[y^] x/[$y] x/[\x61] x/[\x60-\x64] xj0/[\x785] x/[\o143] x/[\o140-\o144] x/[\o417] x/\%x42 x/\%o103 x/[\x00] x :s/[\x00-\x10]//g :s/[\x-z]\+// :s/[\u-z]\{2,}// :s/\(a\)\+// :s/\(a*\)\+// :s/\(a*\)*// :s/\(a\)\{2,3}/A/ :s/\(a\)\{-2,3}/A/ :s/\(a\)*\(12\)\@>/A/ :s/\(foo\)\@\|\.\)\=\)\+=/XX/ :s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/ :s/aaa/xyz/ :s/~/bcd/ :s/~\+/BB/ :" :?start?,$w! test.out :qa! ENDTEST start test \text test text test text test text test text ]test text[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for regexp with backslash and other special characters inside [][?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 51 lines, 519 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo [?25l[?12l[?25h[?25l/[?12l[?25h[\x] [?25l[?12l[?25h[?25ltext test text[?12l[?25h[?25l/[?12l[?25h[\t\]] [?25l[?12l[?25h[?25ltext test tex[?12l[?25h[?25l/[?12l[?25h[]y] [?25l[?12l[?25h[?25ltest text[?12l[?25h[?25l/[?12l[?25h[\]] [?25l test ]text test text[?12l[?25h[?25ltext test text[?12l[?25h[?25l /[?12l[?25h[y^] [?25l test text te^st text[?12l[?25h[?25lst text[?12l[?25h[?25l /[?12l[?25h[$y] [?25l test te$xt test text[?12l[?25h[?25lxt test text[?12l[?25h[?25l /[?12l[?25h[\x61] [?25l test taext test text x61[?12l[?25h[?25lext test text x61[?12l[?25h[?25l /[?12l[?25h[\x60-\x64] [?25l test tbext test text x60-x64[?12l[?25h[?25lext test text x60-x64[?12l[?25h[?25l test 5text test text x78 5[?12l[?25h [?25l /[?12l[?25h[\x785] [?25l[?12l[?25h[?25ltext test text x78 5[?12l[?25h[?25l/[?12l[?25h[\o143] [?25l testc text test text o143[?12l[?25h[?25l text test text o143[?12l[?25h[?25l /[?12l[?25h[\o140-\o144] [?25l tesdt text test text o140-o144[?12l[?25h[?25lt text test text o140-o14[?12l[?25h[?25l /[?12l[?25h[\o417] [?25l test7 text test text o41 7[?12l[?25h[?25l text test text o41 7[?12l[?25h[?25l /[?12l[?25h\%x42 [?25l test text tBest text \%x42[?12l[?25h[?25lest text \%x42[?12l[?25h[?25l /[?12l[?25h\%o103 [?25l test text teCst text \%o103[?12l[?25h[?25lst text \%o103[?12l[?25h[?25l /[?12l[?25h[\x00] [?25l test text ^@test text [\x00][?12l[?25h[?25ltest text [\x00][?12l[?25h[?25l test te^@xt t^Dest t^Pext [\x00-\x10][?12l[?25h[?25l :[?12l[?25hs/[\x00-\x10]//g [?25l3 substitutions on 1 linext test text [\x00-\x10][?12l[?25h[?25l test \xyztext test text [\x-z][?12l[?25h[?25l :[?12l[?25hs/[\x-z]\+// [?25ltext test text [\x-z][?12l[?25h[?25l test text tev\uyst text [\u-z][?12l[?25h[?25l :[?12l[?25hs/[\u-z]\{2,}// [?25lst text [\u-z][?12l[?25h[?25l xx aaaaa xx a[?12l[?25h[?25l :[?12l[?25hs/\(a\)\+// [?25l xx [?12l[?25h[?25l xx aaaaa xx a[?12l[?25h[?25l :[?12l[?25hs/\(a*\)\+// [?25l[?12l[?25h[?25l xx aaaaa xx a[?12l[?25h[?25l :[?12l[?25hs/\(a*\)*// [?25l[?12l[?25h[?25l xx aaaaa xx[?12l[?25h[?25l :[?12l[?25hs/\(a\)\{2,3}/A/ [?25lAaa xx[?12l[?25h[?25l xx aaaaa xx[?12l[?25h[?25l :[?12l[?25hs/\(a\)\{-2,3}/A/ [?25lAaaa x[?12l[?25h[?25l xx aaa12aa xx[?12l[?25h[?25l :[?12l[?25hs/\(a\)*\(12\)\@>/A/ [?25lAaa xx[?12l[?25h[?25l xx foobar xbar xx[?12l[?25h[?25l :[?12l[?25hs/\(foo\)\@\|\.\)\=\)\+=/XX/ [?25lXX [?12l[?25h[?25l hh= 77;[?12l[?25h[?25l :[?12l[?25hs/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/ [?25lYY 77;[?12l[?25h[?25l aaa[?12l[?25h[?25l :[?12l[?25hs/aaa/xyz/ [?25lxyz [?12l[?25h[?25l xyz[?12l[?25h[?25l :[?12l[?25hs/~/bcd/ [?25lbcd [?12l[?25h[?25l bcdbcdbcd[?12l[?25h[?25l :[?12l[?25hs/~\+/BB/ [?25lBB[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h?start?,$w! test.out [?25l"test.out" [New] 32L, 586C written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test25.failed test.ok test.out X* viminfo cp test25.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test25.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test25.in" 31 lines, 840 charactersTest 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 17 lines, 540 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset hidden [?25l[?12l[?25h[?25l:[?12l[?25h" Create a link from test25.dir to the current directory. [?25l[?12l[?25h[?25l:[?12l[?25h!rm -f test25.dir [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!ln -s . test25.dir [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h" Create tags.text, with the current directory name inserted. [?25lTest 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l/[?12l[?25htags line [?25l[?12l[?25h[?25l:[?12l[?25hr !pwd [?25l[?12l[?25h[?25lTest 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: /sources/vim74/src/testdir SECTION_OFF /test25.dir/test25.in /^#define SECTION_OFF 3$/ /*tx.c*/ #define SECTION_OFF 3 #define NUM_SECTIONS 3 SECTION_OFF ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25htest [?25l[?12l[?25h[?25l/sources/vim74/src/testdir/test25.dir/test25.in /^#define SECTION_OFF 3$/[?12l[?25h[?25l:[?12l[?25h.w! tags.test [?25l"tags.test" [New File] 1 line, 88 characters written[?12l[?25h[?25l:[?12l[?25h" Try jumping to a tag in the current file, but with a path that contains a [?25l[?12l[?25h[?25l:[?12l[?25h" symbolic link. When wrong, this will give the ATTENTION message. The next [?25l[?12l[?25h[?25l:[?12l[?25h" space will then be eaten by hit-return, instead of moving the cursor to 'd'. [?25l[?12l[?25h[?25l:[?12l[?25hset tags=tags.test [?25l[?12l[?25h#[?25lefine SECTION_OFF 3[?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New File] 1 line, 23 characters written[?12l[?25h[?25l:[?12l[?25h!rm -f test25.dir tags.test [?25l[?1l>[?12l[?25h[?1049l [No write since last change] Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test26.failed test.ok test.out X* viminfo cp test26.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test26.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test26.in" 44 lines, 750 charactersTest 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^V^[ : 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for :execute, :while and :if[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 39 lines, 696 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hlet i = 0 [?25l[?12l[?25h[?25l:[?12l[?25hwhile i < 12 [?25l : [?12l[?25h: let i = i + 1 [?25l: [?12l[?25h: if has("ebcdic") [?25l: [?12l[?25h: execute "normal o" . i . "\047" [?25l: [?12l[?25h: else [?25l: [?12l[?25h: execute "normal o" . i . "\033" [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: if i % 2 [?25l: [?12l[?25h: normal Ax^^[  [?25l: [?12l[?25h: if i == 9 [?25l: [?12l[?25h: break [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: if i == 5 [?25l: [?12l[?25h: continue [?25l: [?12l[?25h: else [?25l: [?12l[?25h: let j = 9 [?25l: [?12l[?25h: while j > 0 [?25l:[?12l[?25h: if has("ebcdic") [?25l:[?12l[?25h: execute "normal" j . "a" . j . "\x27" [?25l:[?12l[?25h: else [?25l:[?12l[?25h: execute "normal" j . "a" . j . "\x1b" [?25l:[?12l[?25h: endif [?25l:[?12l[?25h: let j = j - 1 [?25l:[?12l[?25h: endwhile [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: if i == 9 [?25l: [?12l[?25h: if has("ebcdic") [?25l: [?12l[?25h: execute "normal Az\047" [?25l: [?12l[?25h: else [?25l: [?12l[?25h: execute "normal Az\033" [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: endif [?25l: [?12l[?25h:endwhile [?25lTest 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^V^[ : 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")1x99999999988888888777777766666655555444433322123x99999999988888888777777766666655555444433322145x67x99999999988888888777777766666655555444433322189x[?12l[?25h[?25l:[?12l[?25hunlet i j [?25l[?12l[?25h[?25l:[?12l[?25h't,$w! test.out [?25l"test.out" [New File] 10 lines, 159 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test27.failed test.ok test.out X* viminfo cp test27.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test27.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test27.in" 20 lines, 270 charactersTest 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^R%^[:.w! test.out :n! Xdir?/*/nofile Go^R%^[:.w >>test.out :e! xx :!rm -rf Xdir1 Xdir2 Xdir3 :qa! ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for expanding file names[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 15 lines, 220 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h!mkdir Xdir1 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xdir2 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25h!mkdir Xdir3 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hcd Xdir3 [?25l/sources/vim74/src/testdir/Xdir3Test 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^R%^[:.w! test.out :n! Xdir?/*/nofile Go^R%^[:.w >>test.out :e! xx :!rm -rf Xdir1 Xdir2 Xdir3 :qa! ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h!mkdir Xdir4 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdirTest 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^R%^[:.w! test.out :n! Xdir?/*/nofile Go^R%^[:.w >>test.out :e! xx :!rm -rf Xdir1 Xdir2 Xdir3 :qa! ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw Xdir1/file [?25l"Xdir1/file" [New File] 20 lines, 270 characters written[?12l[?25h[?25l:[?12l[?25hw Xdir3/Xdir4/file [?25l"Xdir3/Xdir4/file" [New File] 20 lines, 270 characters written[?12l[?25h[?25l:[?12l[?25hn Xdir?/*/file [?25l"Xdir3/Xdir4/file" 20 lines, 270 characters[?12l[?25h[?25l Xdir3/Xdir4/file[?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New File] 1 line, 17 characters written[?12l[?25h[?25l:[?12l[?25hn! Xdir?/*/nofile [?25l"Xdir?/*/nofile" [New DIRECTORY]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l Xdir?/*/nofile[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 15 characters appended[?12l[?25h[?25l:[?12l[?25he! xx [?25l"xx" [New File]~ [?12l[?25h[?25l:[?12l[?25h!rm -rf Xdir1 Xdir2 Xdir3 [?25l[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test28.failed test.ok test.out X* viminfo cp test28.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test28.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test28.in" 23 lines, 364 charactersTest for sourcing a file with CTRL-V's at the end of the line STARTTEST :/firstline/+1,/lastline/-1w! Xtestfile :so Xtestfile Gmm__1^[^[__2^[__3^[^[__4^[__5^[:'m,$s/^@/0/g :'m,$w! test.out :qa! ENDTEST firstline map __1 afirst map __2 asecond map __3 athird map __4 afourth map __5 afifth map __1 asd^V map __2 asd^V^V map __3 asd^V^V map __4 asd^V^V^V map __5 asd^V^V^V lastline ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for sourcing a file with CTRL-V's at the end of the line[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 5 lines, 114 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h/firstline/+1,/lastline/-1w! Xtestfile [?25l"Xtestfile" [New File] 10 lines, 148 characters written[?12l[?25h[?25l:[?12l[?25hso Xtestfile [?25l[?12l[?25h[?25lsd map __2 asd^[[?12l[?25h[?25lsecond[?12l[?25hd [?25lsd^[[?12l[?25h^[ [?25lsd^@map __5 asd^@[?12l[?25h[?25lfifth[?12l[?25h[?25l:[?12l[?25h'm,$s/^@/0/g [?25l0map __5 asd0fifth[?12l[?25h[?25l:[?12l[?25h'm,$w! test.out [?25l"test.out" [New File] 2 lines, 45 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test29.failed test.ok test.out X* viminfo cp test29.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test29.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test29.in" 202 lines, 3656 charactersTest 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for joining lines and marks in them[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 11 lines, 478 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hset nojoinspaces [?25l[?12l[?25h[?25l:[?12l[?25hset cpoptions-=j [?25l[?12l[?25h[?25l/[?12l[?25hfirstline/ [?25l[?12l[?25h [?25l/[?12l[?25h^STARTTEST/-1 [?25l+-1 37 fewer lines: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();37 fewer lines[?12l[?25h[?25lmore linesasdfasdf. 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! ert37 more lines[?12l[?25h[?25l asdf. asdf:set backspace=eol,start[?12l[?25h[?25l asdf. asdf:.,+3join[?12l[?25h[?25l asdf. asdfj4J[?12l[?25h[?25l asdf.asdf:.,+2join[?12l[?25h[?25l asdf.asdfj3J[?12l[?25h[?25l asdf.asdf:.,+2join[?12l[?25h[?25l asdf.asdfj3J[?12l[?25h[?25l asdf asdf:.,+2join[?12l[?25h[?25l asdf asdfjj3J[?12l[?25h[?25l asdf asdfENDTEST[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdfasdf{[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdfasdf/*[?12l[?25h zx cv hjkl i[?25lzx cvn. as dfg? hjkl iop! ert* Make sure the previous comment leader is not removed. */[?12l[?25h er[?25lt er[?12l[?25h zx cv[?25lrn[?12l[?25h[?25lnop[?12l[?25h[?25l:[?12l[?25hset cpoptions+=j [?25l[?12l[?25h zx cv hjkl i[?25lzx cvn. as dfg? hjkl iop! ert/* * Make sure the previous comment leader is not removed. */[?12l[?25h er[?25lt er[?12l[?25h zx cv[?25lrn[?12l[?25h[?25lnop[?12l[?25h[?25l:[?12l[?25hset cpoptions-=j joinspaces [?25l[?12l[?25h [?25l37 more linesasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf asdf asdfasdf asdf asdfasdf asdf asdfasdf asdf asdfasdf asdf[?12l[?25h[?25l asdf. asdfasdfasdf[?12l[?25h[?25l asdf. asdfasdf[?12l[?25h[?25l asdf. asdfasdfasdf[?12l[?25h[?25l asdf.asdfasdf[?12l[?25h[?25l asdf.asdfzx cvn.[?12l[?25h[?25l asdf.asdfas dfg?[?12l[?25h[?25l asdf.asdfhjkl iop![?12l[?25h[?25l asdf asdfert[?12l[?25h[?25l asdf asdfzx cvn.[?12l[?25h[?25l asdf asdfas dfg?[?12l[?25h[?25l asdfasdfhjkl iop![?12l[?25h[?25l asdfasdfert[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdfasdfSTARTTEST[?12l[?25h zx cv hjkl i[?25lzx cvn. as dfg? hjkl iop! ert/^{/+1 :set comments=s1:/*,mb:*,ex:*/,:// :set nojoinspaces fo=j[?12l[?25h er[?25lt e[?12l[?25h zx cv[?25len[?12l[?25h[?25lnop[?12l[?25h[?25l:[?12l[?25hset cpoptions+=j [?25l[?12l[?25h zx cv hjkl i[?25lzx cvn. as dfg? hjkl iop! ert:set backspace=eol,start :.,+3join j4J[?12l[?25h er[?25lt er[?12l[?25h zx cv[?25lrn[?12l[?25h[?25lnop[?12l[?25h[?25l:[?12l[?25hset cpoptions-=j nojoinspaces compatible [?25l[?12l[?25h [?25l37 more linesasdfasdf. asdfasdfasdf. asdfasdfasdf. asdfasdfasdf.[?12l[?25h[?25l asdf. asdfasdf[?12l[?25h[?25l asdf. asdfasdfasdf.[?12l[?25h[?25l asdf. asdfasdf[?12l[?25h[?25l asdf.asdf asdfasdf.[?12l[?25h[?25l asdf asdfasdf.[?12l[?25h[?25l asdf asdfasdf.[?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25lf asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf [?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l asdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l zx cvn.[?12l[?25h[?25l. as dfg? hjkl iop! ert[?12l[?25h[?25lt a[?12l[?25h[?25l zx cvn.[?12l[?25h[?25l /[?12l[?25hSTARTTEST/-2 [?25l+-2 4 fewer lines[?12l[?25h[?25l/^STARTTEST  STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 12 lines, 147 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set comments=s1:/*,mb:*,ex:*/,:// :set nojoinspaces fo=j :set backspace=eol,start :.,+3join j4J :.,+2join j3J :.,+2join j3J :.,+2join jj3J ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{[?12l[?25h[?25l :[?12l[?25hset comments=s1:/*,mb:*,ex:*/,:// [?25l[?12l[?25h[?25l:[?12l[?25hset nojoinspaces fo=j [?25l[?12l[?25h[?25l:[?12l[?25hset backspace=eol,start [?25l[?12l[?25h[?25l:[?12l[?25h.,+3join [?25l/* Make sure the previous comment leader is not removed. */ [?12l[?25h[?25l [?12l[?25h[?25l/* Make sure the previous comment leader is not removed. */ [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25l// Should the next comment leader be left alone? Yes. [?12l[?25h[?25l [?12l[?25h[?25l// Should the next comment leader be left alone? Yes. [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25l/* Here the comment leader should be left intact. */ // And so should this one. [?12l[?25h[?25l [?12l[?25h[?25l/* Here the comment leader should be left intact. */ // And so should this one. [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25lif (condition) // Remove the next comment leader! OK, I will. [?12l[?25h[?25l action();[?12l[?25h[?25l [?12l[?25h[?25lif (condition) // Remove the next comment leader! OK, I will. [?12l[?25h[?25l action(); [?12l[?25h[?25l /^STARTTEST } STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 21 lines, 356 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST: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!^M// Make sure backspacing does not remove this comment leader.^[0i^H^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{[?12l[?25h[?25l :[?12l[?25hset comments=sO:*\ -,mO:*\ \ ,exO:*/ [?25l[?12l[?25h[?25l:[?12l[?25hset comments+=s1:/*,mb:*,ex:*/,:// [?25l[?12l[?25h[?25l:[?12l[?25hset comments+=s1:>#,mb:#,ex:#<,:< [?25l[?12l[?25h[?25l:[?12l[?25hset cpoptions-=j joinspaces fo=j [?25l[?12l[?25h[?25l:[?12l[?25hset backspace=eol,start [?25l[?12l[?25h[?25l:[?12l[?25h.,+3join [?25l/* Make sure the previous comment leader is not removed. */ [?12l[?25h[?25l [?12l[?25h[?25l/* Make sure the previous comment leader is not removed. */ [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+8join [?25l/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ [?12l[?25h[?25l [?12l[?25h[?25l/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */ [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25l// Should the next comment leader be left alone? Yes. [?12l[?25h[?25l [?12l[?25h[?25l// Should the next comment leader be left alone? Yes. [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25l/* Here the comment leader should be left intact. */ // And so should this one. [?12l[?25h[?25l [?12l[?25h[?25l/* Here the comment leader should be left intact. */ // And so should this one. [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25lif (condition) // Remove the next comment leader! OK, I will. [?12l[?25h[?25l action();[?12l[?25h[?25l [?12l[?25h[?25lif (condition) // Remove the next comment leader! OK, I will. [?12l[?25h[?25l action(); [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+2join [?25lint i = 7 /* foo *// 3 // comment [?12l[?25h[?25l ;[?12l[?25h[?25l [?12l[?25h[?25lint i = 7 /* foo *// 3 // comment [?12l[?25h[?25l ; [?12l[?25h[?25l [?12l[?25h[?25l :[?12l[?25h.,+5join [?25l># Note that the last character of the ending comment leader (left angle bracket) is a comment l@ ># Note that the last character of the ending comment leader (left angle bracket) is a comment lleader 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.[?12l[?25h[?25l [?12l[?25h[?25l># Note that the last character of the ending comment leader (left angle bracket) is a comment l@ ># Note that the last character of the ending comment leader (left angle bracket) is a comment lleader 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.[?12l[?25h[?25l [?12l[?25h[?25lSome code! // Make sure backspacing does not remove this comment leader.[?12l[?25h [?25l// Make sure backspacing does not remove this comment leader. }[?12l[?25h [?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :g/^STARTTEST/.,/^ENDTEST/d [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 61 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST[?12l[?25h[?25l :?firstline?+1,$w! test.out[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d [?25l55 fewer linesSome code!// Make sure backspacing does not remove this comment leader. }~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h?firstline?+1,$w! test.out [?25l"test.out" [New File] 88 lines, 2789 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test30.failed test.ok test.out X* viminfo cp test30.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test30.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test30.in" 222 lines, 3463 charactersTest 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for a lot of variations of the 'fileformats' option[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 195 lines, 3271 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST: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^M dos^M eof mac^Mmac^M[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" first write three test files, one in each format [?25l[?12l[?25h[?25l:[?12l[?25hset fileformat=unix [?25l[?12l[?25h[?25l:[?12l[?25hset fileformats= [?25l[?12l[?25h[?25l:[?12l[?25h/^1/w! XX1 [?25l"XX1" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^2/w! XX2 [?25l"XX2" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^3/w! XX3 [?25l"XX3" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^4/w! XX4 [?25l"XX4" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^5/w! XX5 [?25l"XX5" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^6/w! XX6 [?25l"XX6" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^7/w! XX7 [?25l"XX7" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^8/w! XX8 [?25l"XX8" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^9/w! XX9 [?25l"XX9" [New File] 1 line, 2 characters written[?12l[?25h[?25l:[?12l[?25h/^10/w! XX10 [?25l"XX10" [New File] 1 line, 3 characters written[?12l[?25h[?25l:[?12l[?25h/^unix/;/eof/-1w! XXUnix [?25l"XXUnix" [New File] 2 lines, 10 characters written[?12l[?25h[?25l:[?12l[?25h/^dos/;/eof/-1w! XXDos [?25l"XXDos" [New File] 2 lines, 10 characters written[?12l[?25h[?25l:[?12l[?25hset bin noeol [?25l[?12l[?25h[?25l:[?12l[?25h$w! XXMac [?25l"XXMac" [New File][Incomplete last line] 1 line, 8 characters written[?12l[?25h[?25l:[?12l[?25hset nobin eol [?25l[?12l[?25h[?25l:[?12l[?25hbwipe XXUnix XXDos XXMac [?25l3 buffers wiped out[?12l[?25h[?25l:[?12l[?25h" create mixed format files [?25l[?12l[?25h[?25l:[?12l[?25hif has("vms") [?25l : [?12l[?25h: !copy XXUnix,XXDos XXUxDs. [?25l: [?12l[?25h: !copy XXUnix,XXMac XXUxMac. [?25l: [?12l[?25h: !copy XXDos,XXMac XXDosMac. [?25l: [?12l[?25h: !copy XXUnix,XXDos,XXMac XXUxDsMc. [?25l: [?12l[?25h:elseif has("win32") [?25l: [?12l[?25h: !copy /b XXUnix+XXDos XXUxDs [?25l: [?12l[?25h: !copy /b XXUnix+XXMac XXUxMac [?25l: [?12l[?25h: !copy /b XXDos+XXMac XXDosMac [?25l: [?12l[?25h: !copy /b XXUnix+XXDos+XXMac XXUxDsMc [?25l: [?12l[?25h:else [?25l: [?12l[?25h: !cat XXUnix XXDos >XXUxDs [?25l:!cat XXUnix XXDos >XXUxDs[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25h !cat XXUnix XXMac >XXUxMac [?25l:!cat XXUnix XXMac >XXUxMac[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25h !cat XXDos XXMac >XXDosMac [?25l:!cat XXDos XXMac >XXDosMac[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25h !cat XXUnix XXDos XXMac >XXUxDsMc [?25l:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25hendif [?25l:[?12l[?25h" [?25l: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^M dos^M eof mac^Mmac^M[?12l[?25h[?25l:[?12l[?25h" try reading and writing with 'fileformats' empty [?25l[?12l[?25h[?25l:[?12l[?25hset fileformat=unix [?25l[?12l[?25h[?25l:[?12l[?25he! XXUnix [?25l"XXUnix" 2 lines, 10 charactersunixunix~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 2 lines, 10 characters written[?12l[?25h[?25l:[?12l[?25he! XXDos [?25l"XXDos" 2 lines, 10 charactersdos^M dos^M[?12l[?25h[?25l:[?12l[?25hw! XXtt01 [?25l"XXtt01" [New File] 2 lines, 10 characters written[?12l[?25h[?25l:[?12l[?25he! XXMac [?25l"XXMac" [Incomplete last line] 1 line, 8 charactersmacmac^M ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt02 [?25l"XXtt02" [New File] 1 line, 9 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUnix XXDos XXMac [?25l"test30.in" 222 lines, 3463 characters 3 buffers wiped out Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hset fileformat=dos [?25l: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 XXtt02Go1^[:$r XXtt11:$r XXtt12:$r XXtt13Go2^[:$r XXtt21:$r XXtt22:$r XXtt23Go3^[:$r XXtt31:$r XXtt32:$r XXtt33Go4^[:$r XXtt41:$r XXtt42:$r XXtt43Go5^[:$r XXtt51:$r XXtt52:$r XXtt53Go6^[:$r XXtt61:$r XXtt62:$r XXtt63Go7^[:$r XXtt71Go8^[:$r XXtt81Go9^[:$r XXtt91:$r XXtt92:$r XXtt93Go10^[:$r XXUnix:set nobinary ff&:w:qa!ENDTEST12345678910unixunixeofdos^Mdos^Meofmac^Mmac^M[?12l[?25h[?25l:[?12l[?25he! XXUnix [?25l"XXUnix" [CR missing][dos format] 2 lines, 10 charactersunixunix~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt11 [?25l"XXtt11" [New File][dos format] 2 lines, 12 characters written[?12l[?25h[?25l:[?12l[?25he! XXDos [?25l"XXDos" [dos format] 2 lines, 10 charactersdosdos[?12l[?25h[?25l:[?12l[?25hw! XXtt12 [?25l"XXtt12" [New File][dos format] 2 lines, 10 characters written[?12l[?25h[?25l:[?12l[?25he! XXMac [?25l"XXMac" [Incomplete last line][dos format] 1 line, 8 charactersmac^Mmac^M ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt13 [?25l"XXtt13" [New File][dos format] 1 line, 10 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUnix XXDos XXMac [?25l"test30.in" [CR missing][dos format] 222 lines, 3463 characters 3 buffers wiped out Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hset fileformat=mac [?25l: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 XXtt02Go1^[:$r XXtt11:$r XXtt12:$r XXtt13Go2^[:$r XXtt21:$r XXtt22:$r XXtt23Go3^[:$r XXtt31:$r XXtt32:$r XXtt33Go4^[:$r XXtt41:$r XXtt42:$r XXtt43Go5^[:$r XXtt51:$r XXtt52:$r XXtt53Go6^[:$r XXtt61:$r XXtt62:$r XXtt63Go7^[:$r XXtt71Go8^[:$r XXtt81Go9^[:$r XXtt91:$r XXtt92:$r XXtt93Go10^[:$r XXUnix:set nobinary ff&:w:qa!ENDTEST12345678910unixunixeofdosdoseofmac^Jmac[?12l[?25h[?25l:[?12l[?25he! XXUnix [?25l"XXUnix" [Incomplete last line][mac format] 1 line, 10 charactersunix^Junix^J ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt21 [?25l"XXtt21" [New File][mac format] 1 line, 11 characters written[?12l[?25h[?25l:[?12l[?25he! XXDos [?25l"XXDos" [Incomplete last line][mac format] 3 lines, 10 charactersdos^Jdos^J[?12l[?25h[?25l:[?12l[?25hw! XXtt22 [?25l"XXtt22" [New File][mac format] 3 lines, 11 characters written[?12l[?25h[?25l:[?12l[?25he! XXMac [?25l"XXMac" [mac format] 2 lines, 8 charactersmac mac~ [?12l[?25h[?25l:[?12l[?25hw! XXtt23 [?25l"XXtt23" [New File][mac format] 2 lines, 8 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUnix XXDos XXMac [?25l"test30.in" [Incomplete last line][mac format] 5 lines, 3463 characters 3 buffers wiped out Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lTest for a lot of variations of the 'fileformats' option^J^JNote: This test will fail if "cat" iis not available.^J^JSTARTTEST^J:so small.vim^J:" first write three test files, one in each formaat^J:set fileformat=unix^J:set fileformats=^J:/^1/w! XX1^J:/^2/w! XX2^J:/^3/w! XX3^J:/^4/w! XX4^JJ:/^5/w! XX5^J:/^6/w! XX6^J:/^7/w! XX7^J:/^8/w! XX8^J:/^9/w! XX9^J:/^10/w! XX10^J:/^unix/;/eof/-11w! XXUnix^J:/^dos/;/eof/-1w! XXDos^J:set bin noeol^J:$w! XXMac^J:set nobin eol^J:bwipe XXUnix XXXDos XXMac^J:" create mixed format files^J:if has("vms")^J: !copy XXUnix,XXDos XXUxDs.^J: !copy XXXUnix,XXMac XXUxMac.^J: !copy XXDos,XXMac XXDosMac.^J: !copy XXUnix,XXDos,XXMac XXUxDsMc.^J:elsseif has("win32")^J: !copy /b XXUnix+XXDos XXUxDs^J: !copy /b XXUnix+XXMac XXUxMac^J: !copy /b XXXDos+XXMac XXDosMac^J: !copy /b XXUnix+XXDos+XXMac XXUxDsMc^J:else^J: !cat XXUnix XXDos >XXUxDs^JJ: !cat XXUnix XXMac >XXUxMac^J: !cat XXDos XXMac >XXDosMac^J: !cat XXUnix XXDos XXMac >XXUxDsMc^^J:endif^J:"^J:" try reading and writing with 'fileformats' empty^J:set fileformat=unix^J:e! XXUnnix^J:w! test.out^J:e! XXDos^J:w! XXtt01^J:e! XXMac^J:w! XXtt02^J:bwipe XXUnix XXDos XXMac^J:set fileformat=dos^J:e! XXUnix^J:w! XXtt11^J:e! XXDos^J:w! XXtt12^J:e! XXMac^J:w! XXtt13^J:bwipe XXUUnix XXDos XXMac^J:set fileformat=mac^J:e! XXUnix^J:w! XXtt21^J:e! XXDos^J:w! XXtt22^J:e! XXMac^JJ:w! XXtt23^J:bwipe XXUnix XXDos XXMac^J:"^J:" try reading and writing with 'fileformats' set to one format^J:set fileformats=unix^J:e! XXUxDsMc^J:w! XXtt31^J:bwipe XXUxDsMc^J:set fileformats=ddos^J:e! XXUxDsMc^J:w! XXtt32^J:bwipe XXUxDsMc^J:set fileformats=mac^J:e! XXUxDsMc^J:w! XXtt33^J::bwipe XXUxDsMc^J:"^J:" try reading and writing with 'fileformats' set to two formats^J:set filefformats=unix,dos^J:e! XXUxDsMc^J:w! XXtt41^J:bwipe XXUxDsMc^J:e! XXUxMac^J:w! XXtt42^J:bwipe XXUxxMac^J:e! XXDosMac^J:w! XXtt43^J:bwipe XXDosMac^J:set fileformats=unix,mac^J:e! XXUxDs^J:w! XXtt551^J:bwipe XXUxDs^J:e! XXUxDsMc^J:w! XXtt52^J:bwipe XXUxDsMc^J:e! XXDosMac^J:w! XXtt53^J:bwipe XXXDosMac^J:set fileformats=dos,mac^J:e! XXUxDs^J:w! XXtt61^J:bwipe XXUxDs^J:e! XXUxMac^J:w! XXtt622^J:bwipe XXUxMac^J:e! XXUxDsMc^J:w! XXtt63^J:bwipe XXUxDsMc^J:"^J:" try reading and writing withh 'fileformats' set to three formats^J:set fileformats=unix,dos,mac^J:e! XXUxDsMc^J:w! XXtt71^J:bbwipe XXUxDsMc^J:set fileformats=mac,dos,unix^J:e! XXUxDsMc^J:w! XXtt81^J:bwipe XXUxDsMc^J:" try with 'binary' set^J:set fileformats=mac,unix,dos^J:set binary^J:e! XXUxDsMc^J:w! XXtt91^J:bwipe XXUxDsMc^J:set fileformats=mac^J:e! XXUxDsMc^J:w! XXtt92^J:bwipe XXUxDsMc^J:set fileformats=dos^^J:e! XXUxDsMc^J:w! XXtt93^J:"^J:" Append "END" to each file so that we can see what the last wriitten char was.^J:set fileformat=unix nobin^JggdGaEND^[:w >>XXtt01^J:w >>XXtt02^J:w >>XXtt11^J:w >>XXtt12^J:w >>XXtt13^J:w >>XXtt21^J:w >>XXtt22^J:w >>XXtt23^J:w >>XXtt31^J:w >>XXtt32^J:w >>XXttt33^J:w >>XXtt41^J:w >>XXtt42^J:w >>XXtt43^J:w >>XXtt51^J:w >>XXtt52^J:w >>XXtt53^J:w >>XXtt61^JJ:w >>XXtt62^J:w >>XXtt63^J:w >>XXtt71^J:w >>XXtt81^J:w >>XXtt91^J:w >>XXtt92^J:w >>XXtt93^J:"^J::" Concatenate the results.^J:" Make fileformat of test.out the native fileformat.^J:" Add a newlline at the end.^J:set binary^J:e! test.out^J:$r XXtt01^J:$r XXtt02^JGo1^[:$r XXtt11^J:$r XXtt12^^J:$r XXtt13^JGo2^[:$r XXtt21^J:$r XXtt22^J:$r XXtt23^JGo3^[:$r XXtt31^J:$r XXtt32^J:$r XXtt33^JGGo4^[:$r XXtt41^J:$r XXtt42^J:$r XXtt43^JGo5^[:$r XXtt51^J:$r XXtt52^J:$r XXtt53^JGo6^[:$r XXtt611^J:$r XXtt62^J:$r XXtt63^JGo7^[:$r XXtt71^JGo8^[:$r XXtt81^JGo9^[:$r XXtt91^J:$r XXtt92^J:$r XXttt93^JGo10^[:$r XXUnix^J:set nobinary ff&^J:w^J:qa!^JENDTEST^J^J1^J2^J3^J4^J5^J6^J7^J8^J9^J10^J^JJunix^Junix^Jeof^J^Jdos^Jdos^Jeof^J^Jmacmac^J[?12l[?25h[?25l:[?12l[?25h" try reading and writing with 'fileformats' set to one format [?25l[?12l[?25h[?25l:[?12l[?25hset fileformats=unix [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^Mdos^Mmac^Mmac^M~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt31 [?25l"XXtt31" [New File] 5 lines, 29 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=dos [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 charactersunixunix dosdos mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt32 [?25l"XXtt32" [New File][dos format] 5 lines, 32 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" [CR missing][dos format] 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=mac [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [mac format] 4 lines, 28 charactersunix^Junix^Jdos^Jdos ^Jmacmac ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt33 [?25l"XXtt33" [New File][mac format] 4 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" [Incomplete last line][mac format] 5 lines, 3463 charactersTest for a lot of variations of the 'fileformats' option^J^JNote: This test will fail if "cat" iis not available.^J^JSTARTTEST^J:so small.vim^J:" first write three test files, one in each formaat^J:set fileformat=unix^J:set fileformats=^J:/^1/w! XX1^J:/^2/w! XX2^J:/^3/w! XX3^J:/^4/w! XX4^JJ:/^5/w! XX5^J:/^6/w! XX6^J:/^7/w! XX7^J:/^8/w! XX8^J:/^9/w! XX9^J:/^10/w! XX10^J:/^unix/;/eof/-11w! XXUnix^J:/^dos/;/eof/-1w! XXDos^J:set bin noeol^J:$w! XXMac^J:set nobin eol^J:bwipe XXUnix XXXDos XXMac^J:" create mixed format files^J:if has("vms")^J: !copy XXUnix,XXDos XXUxDs.^J: !copy XXXUnix,XXMac XXUxMac.^J: !copy XXDos,XXMac XXDosMac.^J: !copy XXUnix,XXDos,XXMac XXUxDsMc.^J:elsseif has("win32")^J: !copy /b XXUnix+XXDos XXUxDs^J: !copy /b XXUnix+XXMac XXUxMac^J: !copy /b XXXDos+XXMac XXDosMac^J: !copy /b XXUnix+XXDos+XXMac XXUxDsMc^J:else^J: !cat XXUnix XXDos >XXUxDs^JJ: !cat XXUnix XXMac >XXUxMac^J: !cat XXDos XXMac >XXDosMac^J: !cat XXUnix XXDos XXMac >XXUxDsMc^^J:endif^J:"^J:" try reading and writing with 'fileformats' empty^J:set fileformat=unix^J:e! XXUnnix^J:w! test.out^J:e! XXDos^J:w! XXtt01^J:e! XXMac^J:w! XXtt02^J:bwipe XXUnix XXDos XXMac^J:set fileformat=dos^J:e! XXUnix^J:w! XXtt11^J:e! XXDos^J:w! XXtt12^J:e! XXMac^J:w! XXtt13^J:bwipe XXUUnix XXDos XXMac^J:set fileformat=mac^J:e! XXUnix^J:w! XXtt21^J:e! XXDos^J:w! XXtt22^J:e! XXMac^JJ:w! XXtt23^J:bwipe XXUnix XXDos XXMac^J:"^J:" try reading and writing with 'fileformats' set to one format^J:set fileformats=unix^J:e! XXUxDsMc^J:w! XXtt31^J:bwipe XXUxDsMc^J:set fileformats=ddos^J:e! XXUxDsMc^J:w! XXtt32^J:bwipe XXUxDsMc^J:set fileformats=mac^J:e! XXUxDsMc^J:w! XXtt33^J::bwipe XXUxDsMc^J:"^J:" try reading and writing with 'fileformats' set to two formats^J:set filefformats=unix,dos^J:e! XXUxDsMc^J:w! XXtt41^J:bwipe XXUxDsMc^J:e! XXUxMac^J:w! XXtt42^J:bwipe XXUxxMac^J:e! XXDosMac^J:w! XXtt43^J:bwipe XXDosMac^J:set fileformats=unix,mac^J:e! XXUxDs^J:w! XXtt551^J:bwipe XXUxDs^J:e! XXUxDsMc^J:w! XXtt52^J:bwipe XXUxDsMc^J:e! XXDosMac^J:w! XXtt53^J:bwipe XXXDosMac^J:set fileformats=dos,mac^J:e! XXUxDs^J:w! XXtt61^J:bwipe XXUxDs^J:e! XXUxMac^J:w! XXtt622^J:bwipe XXUxMac^J:e! XXUxDsMc^J:w! XXtt63^J:bwipe XXUxDsMc^J:"^J:" try reading and writing withh 'fileformats' set to three formats^J:set fileformats=unix,dos,mac^J:e! XXUxDsMc^J:w! XXtt71^J:bbwipe XXUxDsMc^J:set fileformats=mac,dos,unix^J:e! XXUxDsMc^J:w! XXtt81^J:bwipe XXUxDsMc^J:" try with 'binary' set^J:set fileformats=mac,unix,dos^J:set binary^J:e! XXUxDsMc^J:w! XXtt91^J:bwipe XXUxDsMc^J:set fileformats=mac^J:e! XXUxDsMc^J:w! XXtt92^J:bwipe XXUxDsMc^J:set fileformats=dos^^J:e! XXUxDsMc^J:w! XXtt93^J:"^J:" Append "END" to each file so that we can see what the last wriitten char was.^J:set fileformat=unix nobin^JggdGaEND^[:w >>XXtt01^J:w >>XXtt02^J:w >>XXtt11^J:w >>XXtt12^J:w >>XXtt13^J:w >>XXtt21^J:w >>XXtt22^J:w >>XXtt23^J:w >>XXtt31^J:w >>XXtt32^J:w >>XXttt33^J:w >>XXtt41^J:w >>XXtt42^J:w >>XXtt43^J:w >>XXtt51^J:w >>XXtt52^J:w >>XXtt53^J:w >>XXtt61^JJ:w >>XXtt62^J:w >>XXtt63^J:w >>XXtt71^J:w >>XXtt81^J:w >>XXtt91^J:w >>XXtt92^J:w >>XXtt93^J:"^J::" Concatenate the results.^J:" Make fileformat of test.out the native fileformat.^J:" Add a newlline at the end.^J:set binary^J:e! test.out^J:$r XXtt01^J:$r XXtt02^JGo1^[:$r XXtt11^J:$r XXtt12^^J:$r XXtt13^JGo2^[:$r XXtt21^J:$r XXtt22^J:$r XXtt23^JGo3^[:$r XXtt31^J:$r XXtt32^J:$r XXtt33^JGGo4^[:$r XXtt41^J:$r XXtt42^J:$r XXtt43^JGo5^[:$r XXtt51^J:$r XXtt52^J:$r XXtt53^JGo6^[:$r XXtt611^J:$r XXtt62^J:$r XXtt63^JGo7^[:$r XXtt71^JGo8^[:$r XXtt81^JGo9^[:$r XXtt91^J:$r XXtt92^J:$r XXttt93^JGo10^[:$r XXUnix^J:set nobinary ff&^J:w^J:qa!^JENDTEST^J^J1^J2^J3^J4^J5^J6^J7^J8^J9^J10^J^JJunix^Junix^Jeof^J^Jdos^Jdos^Jeof^J^Jmacmac^J[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" try reading and writing with 'fileformats' set to two formats [?25l[?12l[?25h[?25l:[?12l[?25hset fileformats=unix,dos [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunixdos^Mdos^Mmac^Mmac^M~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt41 [?25l"XXtt41" [New File] 5 lines, 29 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXUxMac [?25l"XXUxMac" [Incomplete last line] 3 lines, 18 charactersunixunix mac^Mmac^M~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt42 [?25l"XXtt42" [New File] 3 lines, 19 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxMac [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXDosMac [?25l"XXDosMac" [Incomplete last line][dos format] 3 lines, 18 charactersdodos mac^Mmac^M~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt43 [?25l"XXtt43" [New File][dos format] 3 lines, 20 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXDosMac [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=unix,mac [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDs [?25l"XXUxDs" 4 lines, 20 charactersunixunix dos^Mdos^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt51 [?25l"XXtt51" [New File] 4 lines, 20 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDs [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt52 [?25l"XXtt52" [New File] 5 lines, 29 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXDosMac [?25l"XXDosMac" [mac format] 4 lines, 18 charactersdo^Jdos ^Jmacmac ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt53 [?25l"XXtt53" [New File][mac format] 4 lines, 18 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXDosMac [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=dos,mac [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDs [?25l"XXUxDs" [CR missing][dos format] 4 lines, 20 charactersunixunix dosdos ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt61 [?25l"XXtt61" [New File][dos format] 4 lines, 22 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDs [?25l"test30.in" [CR missing][dos format] 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXUxMac [?25l"XXUxMac" [Incomplete last line][CR missing][dos format] 3 lines, 18 charactersunixunix mac^Mmac^M~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt62 [?25l"XXtt62" [New File][dos format] 3 lines, 22 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxMac [?25l"test30.in" [CR missing][dos format] 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line][CR missing][dos format] 5 lines, 28 charactersunixunix dosdos mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt63 [?25l"XXtt63" [New File][dos format] 5 lines, 32 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" [CR missing][dos format] 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" try reading and writing with 'fileformats' set to three formats [?25l[?12l[?25h[?25l:[?12l[?25hset fileformats=unix,dos,mac [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt71 [?25l"XXtt71" [New File] 5 lines, 29 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=mac,dos,unix [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt81 [?25l"XXtt81" [New File] 5 lines, 29 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25h" try with 'binary' set [?25l[?12l[?25h[?25l:[?12l[?25hset fileformats=mac,unix,dos [?25l[?12l[?25h[?25l:[?12l[?25hset binary [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt91 [?25l"XXtt91" [New File][Incomplete last line] 5 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=mac [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt92 [?25l"XXtt92" [New File][Incomplete last line] 5 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25hbwipe XXUxDsMc [?25l"test30.in" 222 lines, 3463 charactersTest for a lot of variations of the 'fileformats' optionNote: 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[?12l[?25h[?25l:[?12l[?25hset fileformats=dos [?25l[?12l[?25h[?25l:[?12l[?25he! XXUxDsMc [?25l"XXUxDsMc" [Incomplete last line] 5 lines, 28 charactersunixunix dos^Mdos^M mac^Mmac^M ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw! XXtt93 [?25l"XXtt93" [New File][Incomplete last line] 5 lines, 28 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Append "END" to each file so that we can see what the last written char was. [?25l[?12l[?25h[?25l:[?12l[?25hset fileformat=unix nobin [?25l[?12l[?25h[?25l~ ~ ~ ~ --No lines in buffer--[?12l[?25h[?25lEND[?12l[?25h[?25l:[?12l[?25hw >>XXtt01 [?25l"XXtt01" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt02 [?25l"XXtt02" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt11 [?25l"XXtt11" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt12 [?25l"XXtt12" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt13 [?25l"XXtt13" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt21 [?25l"XXtt21" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt22 [?25l"XXtt22" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt23 [?25l"XXtt23" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt31 [?25l"XXtt31" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt32 [?25l"XXtt32" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt33 [?25l"XXtt33" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt41 [?25l"XXtt41" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt42 [?25l"XXtt42" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt43 [?25l"XXtt43" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt51 [?25l"XXtt51" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt52 [?25l"XXtt52" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt53 [?25l"XXtt53" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt61 [?25l"XXtt61" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt62 [?25l"XXtt62" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt63 [?25l"XXtt63" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt71 [?25l"XXtt71" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt81 [?25l"XXtt81" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt91 [?25l"XXtt91" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt92 [?25l"XXtt92" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25hw >>XXtt93 [?25l"XXtt93" 1 line, 4 characters appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Concatenate the results. [?25l[?12l[?25h[?25l:[?12l[?25h" Make fileformat of test.out the native fileformat. [?25l[?12l[?25h[?25l:[?12l[?25h" Add a newline at the end. [?25l[?12l[?25h[?25l:[?12l[?25hset binary [?25l[?12l[?25h[?25l:[?12l[?25he! test.out [?25l"test.out" 2 lines, 10 charactersunix unix[?12l[?25h[?25l:[?12l[?25h$r XXtt01 [?25l"XXtt01" 3 lines, 14 charactersdos^Mdos^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt02 [?25l"XXtt02" 2 lines, 13 charactersmac^Mmac^MEND[?12l[?25h [?25l 1[?12l[?25h[?25l:[?12l[?25h$r XXtt11 [?25l"XXtt11" 3 lines, 16 charactersunix^Munix^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt12 [?25l"XXtt12" 3 lines, 14 charactersdos^Mdos^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt13 [?25l"XXtt13" 2 lines, 14 charactersmac^Mmac^M^MEND[?12l[?25h [?25l 2[?12l[?25h[?25l:[?12l[?25h$r XXtt21 [?25l"XXtt21" 3 lines, 15 charactersunixunix^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt22 [?25l"XXtt22" 3 lines, 15 charactersdos^Mdos^M^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt23 [?25l"XXtt23" 1 line, 12 charactersmac^Mmac^MEND[?12l[?25h[?25l 3[?12l[?25h[?25l:[?12l[?25h$r XXtt31 [?25l"XXtt31" 6 lines, 33 charactersunixunixdos^Mdos^Mmac^Mmac^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt32 [?25l"XXtt32" 6 lines, 36 charactersunix^Munix^Mdos^Mdos^Mmac^Mmac^M^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt33 [?25l"XXtt33" 5 lines, 32 charactersunixunixdos^Mdos^Mmac^Mmac^MEND[?12l[?25h[?25l 4[?12l[?25h[?25l:[?12l[?25h$r XXtt41 [?25l"XXtt41" 6 lines, 33 charactersunixunixdos^Mdos^Mmac^Mmac^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt42 [?25l"XXtt42" 4 lines, 23 charactersunixunixmac^Mmac^MEND[?12l[?25h[?25l:[?12l[?25h$r XXtt43 [?25l"XXtt43" 4 lines, 24 charactersdos^Mdos^Mmac^Mmac^M^MEND[?12l[?25h [?25l 5[?12l[?25h[?25l:[?12l[?25h$r XXtt51 [?25l"XXtt51" 5 lines, 24 charactersunixunixdos^M[?12l[?25h[?25l:[?12l[?25h$r XXtt52 [?25l"XXtt52" 6 lines, 33 charactersdos^M END unix[?12l[?25h[?25l :[?12l[?25h$r XXtt53 [?25l"XXtt53" 3 lines, 22 charactersunix dos^M dos^M mac^Mmac^M END dos^M[?12l[?25h[?25ldos^M mac^Mmac^MEND [?12l[?25h[?25l 6[?12l[?25h[?25l :[?12l[?25h$r XXtt61 [?25l"XXtt61" 5 lines, 26 characters unix^M[?12l[?25h[?25l :[?12l[?25h$r XXtt62 [?25l"XXtt62" 4 lines, 26 charactersunix^M dos^M dos^M END unix^M[?12l[?25h[?25l :[?12l[?25h$r XXtt63 [?25l"XXtt63" 6 lines, 36 charactersunix^M mac^Mmac^M^M END unix^M[?12l[?25h[?25lunix^M dos^M dos^M mac^Mmac^M^M END [?12l[?25h[?25l 7[?12l[?25h[?25l :[?12l[?25h$r XXtt71 [?25l"XXtt71" 6 lines, 33 characters unix[?12l[?25h[?25lunix dos^M dos^M mac^Mmac^M END [?12l[?25h[?25l 8[?12l[?25h[?25l :[?12l[?25h$r XXtt81 [?25l"XXtt81" 6 lines, 33 characters unix[?12l[?25h[?25lunix dos^M dos^M mac^Mmac^M END [?12l[?25h[?25l 9[?12l[?25h[?25l :[?12l[?25h$r XXtt91 [?25l"XXtt91" 5 lines, 32 characters unix[?12l[?25h[?25l :[?12l[?25h$r XXtt92 [?25l"XXtt92" 5 lines, 32 charactersunix dos^M dos^M mac^Mmac^MEND unix[?12l[?25h[?25l :[?12l[?25h$r XXtt93 [?25l"XXtt93" 5 lines, 32 charactersunix dos^M dos^M mac^Mmac^MEND unix[?12l[?25h[?25lunix dos^M dos^M mac^Mmac^MEND [?12l[?25h[?25l 10[?12l[?25h[?25l :[?12l[?25h$r XXUnix [?25l"XXUnix" 2 lines, 10 characters unix[?12l[?25h[?25l :[?12l[?25hset nobinary ff& [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"test.out" 121 lines, 664 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test31.failed test.ok test.out X* viminfo cp test31.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test31.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test31.in" 75 lines, 1545 charactersTest 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for commands that close windows and/or buffers:[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 60 lines, 1410 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:" 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[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso tiny.vim [?25l[?12l[?25h[?25l testtext[?12l[?25h[?25l1[?12l[?25h[?25l :[?12l[?25h$w! Xtest1 [?25l"Xtest1" [New File] 1 line, 11 characters written[?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25h$w! Xtest2 [?25l"Xtest2" [New File] 1 line, 11 characters written[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25h$w! Xtest3 [?25l"Xtest3" [New File] 1 line, 11 characters written[?12l[?25h[?25l:[?12l[?25hn! Xtest1 Xtest2 [?25l"Xtest1" 1 line, 11 characterstesttext 1~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l1[?12l[?25h[?25l:[?12l[?25hset hidden [?25l[?12l[?25h[?25l:[?12l[?25h" test for working :n when hidden set; write "testtext 2" [?25l[?12l[?25h[?25l:[?12l[?25hn [?25l"Xtest2" 1 line, 11 characters2[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 1 line, 11 characters written[?12l[?25h[?25l:[?12l[?25h" test for failing :rew when hidden not set; write "testtext 2 2" [?25l[?12l[?25h[?25l:[?12l[?25hset nohidden [?25l[?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25hrew [?25lE37: No write since last change (add ! to override)[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 13 characters appended[?12l[?25h[?25l:[?12l[?25h" test for working :rew when hidden set; write "testtext 1 1" [?25l[?12l[?25h[?25l:[?12l[?25hset hidden [?25l[?12l[?25h[?25l:[?12l[?25hrew [?25l"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)1 1 [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 13 characters appended[?12l[?25h[?25l:[?12l[?25h" test for :all keeping a buffer when it's modified; write "testtext 1 1 1" [?25l[?12l[?25h[?25l:[?12l[?25hset nohidden [?25l[?12l[?25h[?25l1[?12l[?25h[?25l:[?12l[?25hsp [?25lXtest1 [+] testtext 1 1 1Xtest1 [+] [?12l[?25h[?25l:[?12l[?25hn Xtest2 Xtest3 [?25l"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)2 22 [?12l[?25h[?25l:[?12l[?25hall [?25l"Xtest3" 1 line, 11 characterstesttext 1 1 1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest1 [+] testtext 2 2 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest2 [+] testtext 3 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest3 [?12l[?25h[?25l:[?12l[?25h1wincmd w [?25lXtest1 [+] Xtest2 [+]  [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 15 characters appended[?12l[?25h[?25l:[?12l[?25h" test abandoning changed buffer, should be unloaded even when 'hidden' set [?25l[?12l[?25h[?25l:[?12l[?25h" write "testtext 2 2" twice [?25l[?12l[?25h[?25l:[?12l[?25hset hidden [?25l[?12l[?25h[?25l1 1[?12l[?25h[?25l:[?12l[?25hq! [?25ltesttext 2 2 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest2 [+] testtext 3 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest3 [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 13 characters appended[?12l[?25h[?25l:[?12l[?25hunhide [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 13 characters appended[?12l[?25h[?25l:[?12l[?25h" test ":hide" hides anyway when 'hidden' not set; write "testtext 3" [?25l[?12l[?25h[?25l:[?12l[?25hset nohidden [?25l[?12l[?25h[?25l2[?12l[?25h[?25l:[?12l[?25hhide [?25l3~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25h" test ":edit" failing in modified buffer when 'hidden' not set [?25l[?12l[?25h[?25l:[?12l[?25h" write "testtext 3 3" [?25l[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25he Xtest1 [?25lE37: No write since last change (add ! to override)[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 13 characters appended[?12l[?25h[?25l:[?12l[?25h" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1" [?25l[?12l[?25h[?25l:[?12l[?25hset hidden [?25l[?12l[?25h[?25l:[?12l[?25he Xtest1 [?25l"Xtest1" 1 line, 11 characters1[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25h" test ":close" not hiding when 'hidden' not set in modified buffer; [?25l[?12l[?25h[?25l:[?12l[?25h" write "testtext 3 3 3" [?25l[?12l[?25h[?25l:[?12l[?25hsp Xtest3 [?25l"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)3 3Xtest3 [+] testtext 1Xtest1 [?12l[?25h[?25l:[?12l[?25hset nohidden [?25l[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25hclose [?25lE37: No write since last change (add ! to override)[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 15 characters appended[?12l[?25h[?25l:[?12l[?25h" test ":close!" does hide when 'hidden' not set in modified buffer; [?25l[?12l[?25h[?25l:[?12l[?25h" write "testtext 1" [?25l[?12l[?25h[?25l3 3[?12l[?25h[?25l:[?12l[?25hclose! [?25l1~ ~ ~ [?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25hset nohidden [?25l[?12l[?25h[?25l:[?12l[?25h" test ":all!" hides changed buffer; write "testtext 2 2 2" [?25l[?12l[?25h[?25l:[?12l[?25hsp Xtest4 [?25l"Xtest4" [New File]Xtest4 testtext 1Xtest1 [?12l[?25h[?25l 4[+][?12l[?25h[?25l:[?12l[?25hall! [?25l"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2) "Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2) Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h1wincmd w [?25ltesttext 2 2 2 ~ Xtest2 [+] testtext 3 3 3 3~ 3 [+][?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 1 line, 15 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test32.failed test.ok test.out X* viminfo cp test32.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test32.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test32.in" 57 lines, 1242 charactersTest 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= ^WnO#include "Xtestfile" ru^N^N^X^N^[^A O^P^X^N ^X^P^P^P^P^P ^X^P^P^X^X^N^X^N^N^[ :se cpt=.,w,i kOM^N^X^N^X^N^X^X^X^P ^X^L^X^L^P^P^[ :se cpt=kXtestfile :w Xtest11.one :w Xtest11.two O^N^[IX^[A^X^F^N^[ :se cpt=w OST^N^P^P^P^P^[ :se cpt=u nohid ^WoOEN^N unl^N^X^X^P^[ :se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D a^N^[ :wq! test.out ENDTEST start of testfile run1 run2 end of testfile test11 36Gepeto/Tag/ asd test11file 36G Makefileto run ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for insert expansion[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 24 lines, 384 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hse nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff& [?25l"Xtestfile" [New] 3L, 57C written[?12l[?25h[?25l:[?12l[?25hse cot= [?25l[?12l[?25h[?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] o^WnO#include "Xtestfile" ruN^N^X^N^[^A O^P^X^N^X^P^P^P^P^P^X^P^P^X^X^N^X^N^N^[ :se cpt=.,w,ikOM^N^X^N^X^N^X^X^X^P ^X^L^X^L^P^P^[kXtestfile :w Xtest11.one :w Xtest11.two O^N^[IX^[A^X^F^N^[:se cpt=wOSTN^P^P^P^P^[ :se cpt=u nohid ^WoOEN^N unl^N^X^X^P^[ :se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch O^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D a^N^[ :wq! test.outENDTESTstart of testfilerun1run2end of testfiletest32.in [?12l[?25h[?25l-- INSERT -- -- Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Keyword completion (^N^P) match 1 of 4match in file test32.in^-- Keyword completion (^N^P) match 2 of 4-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Adding Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Adding Keyword completion (^N^P) Word from other line#include "Xtestfile" run1 run2[+][?12l[?25h[?25l-- Adding Keyword completion (^N^P) Word from other line-- INSERT --[?12l[?25h[?25l3[?12l[?25h [?25l-- INSERT -- -- Keyword completion (^N^P) -- Searching... Scanning: test32.ino-- Keyword completion (^N^P) match 1 of 103-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Adding Keyword completion (^N^P) -- Searching... Scanning: test32.ino-- Adding Keyword completion (^N^P) Word from other line-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Keyword Local completion (^N^P) -- Searching...match 1 of 4. match 2 of 4 match 3 of 4 match 4 of 4 Back at original-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Keyword Local completion (^N^P) -- Searching...match 1 of 4. match 2 of 4-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Keyword completion (^N^P) -- Searching... Scanning: test32.ino-- Keyword completion (^N^P) The only match-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Adding Keyword completion (^N^P) -- Searching... Scanning: test32.ino-- Adding Keyword completion (^N^P) match 1 of 2match in file test32.ine-- Adding Keyword completion (^N^P) Word from other linerun3 run3 run1 run2[?12l[?25h[?25l-- Adding Keyword completion (^N^P) Word from other line-- INSERT --[?12l[?25h [?25l:[?12l[?25hse cpt=.,w,i [?25l[?12l[?25h[?25l-- INSERT --Keyword completion (^N^P) -- Searching... Scanning: test32.ino included file: Xtestfile match in file test32.in-- Keyword completion (^N^P) The only match-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Adding Keyword completion (^N^P) -- Searching... Scanning: test32.ino included file: Xtestfile match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Adding Keyword completion (^N^P) -- Searching... Scanning: test32.ino included file: Xtestfile match in file test32.in-- Adding Keyword completion (^N^P) The only match-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Keyword Local completion (^N^P) -- Searching...match 1 of 3.-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- Whole line completion (^L^N^P)^ U-- Searching... Scanning: test32.ine-- Whole line completion (^L^N^P) match 1 of 54INSERT --e-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 54Addinge Whole line completion (^L^N^P) -- Searching... Scanning: test32.ine-- Adding Whole line completion (^L^N^P) The only match Back at original The only matchMakefileto run3 Makefileto run3 Makefileto run3[?12l[?25h[?25l-- INSERT --[?12l[?25h[?25l:[?12l[?25hse cpt=kXtestfile [?25l[?12l[?25h[?25l:[?12l[?25hw Xtest11.one [?25l"Xtest11.one" [New] 9L, 104C writtenXtest11.one+ [?12l[?25h[?25l:[?12l[?25hw Xtest11.two [?25l"Xtest11.two" [New] 9L, 104C written[?12l[?25h[?25l-- INSERT --Keyword completion (^N^P) -- Searching... Scanning dictionary: Xtestfile-match in file Xtestfile-- Keyword completion (^N^P) match 1 of 9test11[+]I[?12l[?25h [?25l-- Keyword completion (^N^P) match 1 of 9-- INSERT --[?12l[?25h[?25l-- INSERT --Xtest11 [?12l[?25h[?25l-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- File name completion (^F^N^P)s ^-- Searching...match 1 of 2. match 2 of 2.two[?12l[?25h[?25l-- INSERT --[?12l[?25h[?25l:[?12l[?25hse cpt=w [?25l[?12l[?25h[?25l-- INSERT -- -- Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in^-- Keyword completion (^N^P) The only match Back at originalmatch in file test32.in^-- Keyword completion (^N^P) The only matchSTARTTEST[?12l[?25h[?25l-- Keyword completion (^N^P) The only match-- INSERT --[?12l[?25h[?25l:[?12l[?25hse cpt=u nohid [?25l[?12l[?25h[?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l-- INSERT --Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Keyword completion (^N^P) The only match-- INSERT -- -- Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Keyword completion (^N^P) match 1 of 3-- INSERT -- -- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- INSERTe --^Keyword completion (^N^P) -- Searching... Scanning: test32.inomatch in file test32.in -- Keyword completion (^N^P) The only matchENDTEST unless[?12l[?25h[?25l-- Keyword completion (^N^P) The only match-- INSERT --[?12l[?25h[?25l:[?12l[?25hse cpt=t,d def=^\\k* tags=Xtestfile notagbsearch [?25l[?12l[?25h[?25l-- INSERT --^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- Tag completion (^]^N^P)^ N-- Searching...match 1 of 3.INSERTm --e-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) match 1 of 3Definition completion (^D^N^P)^ U-- Searching...Scanning included file: Xtestfile match in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERTt --n-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match -- Addinge Definition completion (^D^N^P) -- Searching... Scanning included file: Xtestfile^match in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT --f-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match -- INSERTe --^^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) -- Definition completion (^D^N^P)^ U-- Searching... Scanning included file: Xtestfile match in file Xtestfile-- Definition completion (^D^N^P) The only matchINSERTt --n-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match -- Addinge Definition completion (^D^N^P) -- Searching... Scanning included file: Xtestfile^match in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT --f-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match -- Addinge Definition completion (^D^N^P) -- Searching... Scanning included file: Xtestfile^match in file Xtestfile-- Adding Definition completion (^D^N^P) The only matchINSERT --f-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match -- Addinge Definition completion (^D^N^P) -- Searching... Scanning included file: Xtestfile^match in file Xtestfile-- Adding Definition completion (^D^N^P) Word from other lineINSERT --f-- Keyword completion (^N^P) -- Searching... Scanning tags.pincluded file: Xtestfile -- Keyword completion (^N^P) The only matchtest11file 36Gepeto/Tag/ asd asd[?12l[?25h[?25l-- Keyword completion (^N^P) The only match-- INSERT --[?12l[?25h ru[?25l:[?12l[?25hwq! test.out [?25l"test.out" [New] 15L, 175C written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test33.failed test.ok test.out X* viminfo cp test33.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test33.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test33.in" 34 lines, 616 charactersTest 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 "" (html-file ,dest)) ,@body (princ ""))) ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for 'lisp'[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 5 lines, 63 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset lisp [?25l[?12l[?25h[?25l/[?12l[?25h^(defun [?25l[?12l[?25h[?25l22 lines to indent... 23indented  (format nil "~(~A~).html" base)) (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)))) `(progn (format t "" (html-file ,dest)) ,@body (princ "")))[?12l[?25h[?25l:[?12l[?25h/^(defun/,$w! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 23 lines, 544 characters written[?12l[?25h[?25l:[?12l[?25hq! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test34.failed test.ok test.out X* viminfo cp test34.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test34.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test34.in" 76 lines, 1435 charactersTest for user functions. Also test an mapping calling a function. Also test that a builtin function cannot be replaced. 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 ( ListItem() :inoremap [ ListReset() :imap + Expr1() :imap * Expr2() :let retval = "nop" /^here C^R=Table("xxx", 4, "asdf") ^R=Compute(45, 0, "retval") ^R=retval ^R=Compute(45, 5, "retval") ^R=retval ^R=g:FuncRef(333) XX+-XX ---*--- (one (two[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for user functions.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 68 lines, 1283 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[(one again^[:call append(line('$'), max([1, 2, 3])) :call extend(g:, {'max': function('min')}) :call append(line('$'), max([1, 2, 3])) :$-7,$w! test.out :delfunc Table :delfunc Compute :delfunc Expr1 :delfunc Expr2 :delfunc ListItem :delfunc ListReset :unlet retval counter :q! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hfunction Table(title, ...) [?25l : [?12l[?25h: let ret = a:title [?25l: [?12l[?25h: let idx = 1 [?25l: [?12l[?25h: while idx <= a:0 [?25l: [?12l[?25h: exe "let ret = ret . a:" . idx [?25l: [?12l[?25h: let idx = idx + 1 [?25l: [?12l[?25h: endwhile [?25l: [?12l[?25h: return ret [?25l: [?12l[?25h:endfunction [?25l: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[?12l[?25h[?25l :[?12l[?25hfunction Compute(n1, n2, divname) [?25l : [?12l[?25h: if a:n2 == 0 [?25l: [?12l[?25h: return "fail" [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: exe "let g:" . a:divname . " = ". a:n1 / a:n2 [?25l: [?12l[?25h: return "ok" [?25l: [?12l[?25h:endfunction [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0 : return "fail" : endif : exe "let g:" . a:divname . " = ". a:n1 / a:n2[?12l[?25h[?25l :[?12l[?25hfunc Expr1() [?25l : [?12l[?25h: normal! v [?25l: [?12l[?25h: return "111" [?25l: [?12l[?25h:endfunc [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0[?12l[?25h[?25l :[?12l[?25hfunc Expr2() [?25l : [?12l[?25h: call search('XX', 'b') [?25l: [?12l[?25h: return "222" [?25l: [?12l[?25h:endfunc [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0[?12l[?25h[?25l :[?12l[?25hfunc ListItem() [?25l : [?12l[?25h: let g:counter += 1 [?25l: [?12l[?25h: return g:counter . '. ' [?25l: [?12l[?25h:endfunc [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0[?12l[?25h[?25l :[?12l[?25hfunc ListReset() [?25l : [?12l[?25h: let g:counter = 0 [?25l: [?12l[?25h: return '' [?25l: [?12l[?25h:endfunc [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0[?12l[?25h[?25l :[?12l[?25hfunc FuncWithRef(a) [?25l : [?12l[?25h: unlet g:FuncRef [?25l: [?12l[?25h: return a:a [?25l: [?12l[?25h:endfunc [?25l:endfunction :function Compute(n1, n2, divname) : if a:n2 == 0[?12l[?25h[?25l :[?12l[?25hlet g:FuncRef=function("FuncWithRef") [?25l[?12l[?25h[?25l:[?12l[?25hlet counter = 0 [?25l[?12l[?25h[?25l:[?12l[?25hinoremap ( ListItem() [?25l[?12l[?25h[?25l:[?12l[?25hinoremap [ ListReset() [?25l[?12l[?25h[?25l:[?12l[?25himap + Expr1() [?25l[?12l[?25h[?25l:[?12l[?25himap * Expr2() [?25l[?12l[?25h[?25l:[?12l[?25hlet retval = "nop" [?25l[?12l[?25h[?25l/[?12l[?25h^here [?25l here[?12l[?25h[?25lher$ =[?12l[?25hTable("xxx", 4, "asdf") [?25l=[?12l[?25hCompute(45, 0, "retval") [?25l=[?12l[?25hretval [?25l=[?12l[?25hCompute(45, 5, "retval") [?25l=[?12l[?25hretval [?25l=[?12l[?25hg:FuncRef(333) [?25lError detected while processing function Expr1: line 1: E523: Not allowed here Press ENTER or type command to continue[?12l[?25h[?25l: return "ok" :endfunction :func Expr1() : normal! v : return "111endfuncfunc Expr2() : call search('XX', 'b') : return "222" :endfuncfunc ListItem() : let g:counter += 1 : return g:counter . '. ' :endfuncfunc ListReset() : let g:counter = 0 : return ''endfuncfunc FuncWithRef(a) : unlet g:FuncRef : return a:aendfunclet g:FuncRef=function("FuncWithRef") :let counter = 0inoremap ( ListItem() :inoremap [ ListReset() :imap + Expr1() :imap * Expr2()retval = "nop" /^heC^R=Table("xxx", 4, "asdf") ^R=Compute(45, 0, "retval") ^R=retval ^R=Compute(45, 5, "retval") ^R=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])) :$-7,$w! test.out :delfunc Table :delfunc Computedelfunc Expr1delfunc Expr2delfunc ListItemListReset :unlet retval counter :q!ENDTESTxxx4asdf fail nop ok 9 333 XX111-XX---222--- 1. one2. two[?12l[?25h[?25l1. one again[?12l[?25h[?25l :[?12l[?25hcall append(line('$'), max([1, 2, 3])) [?25l[?12l[?25h[?25l:[?12l[?25hcall extend(g:, {'max': function('min')}) [?25lE704: Funcref variable name must start with a capital: max[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), max([1, 2, 3])) [?25l[?12l[?25h[?25l:[?12l[?25h$-7,$w! test.out [?25l"test.out" [New File] 8 lines, 77 characters written[?12l[?25h[?25l:[?12l[?25hdelfunc Table [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc Compute [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc Expr1 [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc Expr2 [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc ListItem [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc ListReset [?25l[?12l[?25h[?25l:[?12l[?25hunlet retval counter [?25l[?12l[?25h[?25l:[?12l[?25hq! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test35.failed test.ok test.out X* viminfo cp test35.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test35.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test35.in" 21 lines, 448 charactersTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal, and octal numbers. STARTTEST /^start-here :set nrformats=octal,hex j^A102^X^Al^Xl^A64^A128^X$^X :set nrformats=octal 0^A102^X^Al^X2^Aw65^A129^Xblx6lD :set nrformats=hex 0101^Xl257^X^ATxldt ^A ^X ^X :set nrformats= 0200^Xl100^Xw78^X^Ak :$-3,$wq! test.out ENDTEST start-here 100 0x100 077 0 100 0x100 077 100 0x100 077 0xfF 0xFf 100 0x100 077 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 10 lines, 200 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^start-here [?25l[?12l[?25h[?25l:[?12l[?25hset nrformats=octal,hex [?25l[?12l[?25h [?25l101[?12l[?25h[?25l -1 0x100 077 0[?12l[?25h[?25l0 0x100 077 0[?12l[?25h0[?25l0ff[?12l[?25hf[?25l 0100 0[?12l[?25h[?25l20[?12l[?25h[?25l00[?12l[?25h0 [?25l-1[?12l[?25h[?25l:[?12l[?25hset nrformats=octal [?25l[?12l[?25h [?25l101[?12l[?25h[?25l -1 0x100 077 -[?12l[?25h[?25l0 0x100 077 [?12l[?25h0[?25l -1x100 077[?12l[?25h[?25l1x100 077 [?12l[?25h[?25l0200[?12l[?25h[?25l1777777777777777777777[?12l[?25h0[?25l7 [?12l[?25h777777[?25l[?12l[?25h[?25l:[?12l[?25hset nrformats=hex [?25l[?12l[?25h [?25l-1 0x100 077 0xfF 0xFf[?12l[?25h1[?25lffffffffffffffff 077 0xfF 0xFf[?12l[?25h[?25l0000000000000000[?12l[?25h0[?25l 077 0xfF 0xFf[?12l[?25h[?25l8[?12l[?25h8[?25lFE[?12l[?25hE[?25lfe[?12l[?25h[?25l:[?12l[?25hset nrformats= [?25l[?12l[?25h [?25l-100 0x100 077 -10[?12l[?25h0[?25l -100x100 077[?12l[?25h[?25l-001[?12l[?25h[?25l000 [?12l[?25h[?25l:[?12l[?25h$-3,$wq! test.out [?25l"test.out" [New File] 4 lines, 120 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test36.failed test.ok test.out X* viminfo cp test36.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test36.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test36.in" 105 lines, 1950 charactersTest 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest character classes in regexp using regexpengine 0, 1, 2.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 98 lines, 1775 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTESTp: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[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^start-here/+1 [?25lstart-here^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\d//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\d//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\d//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[0-9]//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[0-9]//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[0-9]//g [?25l10 substitutions on 1 line:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\D//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\D//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\D//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^0-9]//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^0-9]//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^0-9]//g [?25l72 substitutions on 1 line0123456789[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\o//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\o//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\o//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[0-7]//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[0-7]//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[0-7]//g [?25l8 substitutions on 1 line89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\O//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\O//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\O//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^0-7]//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^0-7]//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^0-7]//g [?25l74 substitutions on 1 line01234567[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\x//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\x//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\x//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[0-9A-Fa-f]//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[0-9A-Fa-f]//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[0-9A-Fa-f]//g [?25l22 substitutions on 1 line:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\X//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\X//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\X//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^0-9A-Fa-f]//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^0-9A-Fa-f]//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^0-9A-Fa-f]//g [?25l60 substitutions on 1 line0123456789ABCDEFabcdef[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\w//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\w//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\w//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[0-9A-Za-z_]//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[0-9A-Za-z_]//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[0-9A-Za-z_]//g [?25l36 substitutions on 1 line:;<=>?@[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\W//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\W//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\W//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^0-9A-Za-z_]//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^0-9A-Za-z_]//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^0-9A-Za-z_]//g [?25l46 substitutions on 1 line0123456789ABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\h//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\h//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\h//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[A-Za-z_]//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[A-Za-z_]//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[A-Za-z_]//g [?25l26 substitutions on 1 line[\]^`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\H//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\H//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\H//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^A-Za-z_]//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^A-Za-z_]//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^A-Za-z_]//g [?25l56 substitutions on 1 lineABCDEFGHIXYZ_abcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\a//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\a//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\a//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[A-Za-z]//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[A-Za-z]//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[A-Za-z]//g [?25l25 substitutions on 1 line[\]^_`{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\A//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\A//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\A//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^A-Za-z]//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^A-Za-z]//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^A-Za-z]//g [?25l57 substitutions on 1 lineABCDEFGHIXYZabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\l//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\l//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\l//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[a-z]//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[a-z]//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[a-z]//g [?25l13 substitutions on 1 line{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\L//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\L//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\L//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^a-z]//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^a-z]//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^a-z]//g [?25l69 substitutions on 1 lineabcdefghiwxyz[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\u//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\u//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\u//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[A-Z]//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[A-Z]//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[A-Z]//g [?25l12 substitutions on 1 line[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0\U//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1\U//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2\U//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=0[^A-Z]//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=1[^A-Z]//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l ^L^M !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~^?~@~B~P~[¦±¼ÇÓé[?12l[?25h[?25l :[?12l[?25hs/\%#=2[^A-Z]//g [?25l70 substitutions on 1 lineABCDEFGHIXYZ[?12l[?25h[?25l:[?12l[?25h/^start-here/+1,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 96 lines, 4032 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test37.failed test.ok test.out X* viminfo cp test37.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test37.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test37.in" 116 lines, 3262 charactersTest for 'scrollbind'. 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 ^Wt: :resize 8 /^start of window 1$/ zt: :set scrollbind ^Wj: :resize 7 /^start of window 2$/ zt: :set scrollbind :" -- start of tests -- :" TEST scrolling down L5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up ^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: :" TEST horizontal scrolling :set scrollopt+=hor gg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG: :set scrollopt-=hor :" ****** tests using two different buffers ***** ^Wt^Wj: :close ^Wt: :set noscrollbind :/^start of window 2$/,/^end of window 2$/y :new ^Wt^Wj4"zpGp: ^Wt/^start of window 1$/ zt: :set scrollbind ^Wj: /^start of window 2$/ zt: :set scrollbind :" -- start of tests -- :" TEST scrolling down L5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up ^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: :" TEST horizontal scrolling :set scrollopt+=hor gg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG: :set scrollopt-=hor :" TEST syncbind ^Wt:set noscb ggL^Wj:set noscb ggL:set scb[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for 'scrollbind'. Do not add a line below![?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 72 lines, 1498 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST^Wt:set scb G^WjG:syncbind Hk^WtH^WjHyy^Wbp^Wtyy^Wbp: ^Wt:set noscb ggL^Wj:set noscb ggL:set scb ^Wt:set scb ^WtG^WjG^Wt:syncbind Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: ^WtH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: :" ***** done with tests ***** :w! test.out" Write contents of this file :qa! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset noscrollbind [?25l[?12l[?25h[?25l:[?12l[?25hset scrollopt=ver,jump [?25l[?12l[?25h[?25l:[?12l[?25hset scrolloff=2 [?25l^Wj: :resize 7/^start of window 2$/ zt::set scrollb:" -- start of tests -- :" TEST scrolling down L5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:up^WtH4kjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3ktH^WjHyy^Wbpr6^WtHyy^Wbpr7:horizontal scrolling :set scrollopt+=horgg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG: :set scrollopt-=hor:" ****** tests using two different buffers ***** ^Wt^Wj:close:set noscrollbind :/^start of window 2$/,/^end of window 2$/y :new^Wt^Wj4"zpGp:^Wt/^start of window 1$/ zt::set scrollbind^Wj: /^start of window 2$/ zt::set scrollb:" -- start of tests -- :" TEST scrolling down L5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3:up^WtH4kjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3ktH^WjHyy^Wbpr6^WtHyy^Wbpr7:horizontal scrolling :set scrollopt+=horgg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG: :set scrollopt-=hor:" TEST syncbind^Wt:set noscbggL^Wj:set noscb ggL:set scb^Wt:set scbG^WjG:syncbind Hk^WtH^WjHyy^Wbp^Wtyy^Wbp: ^Wt:set noscbggL^Wj:set noscbggL:set scb^Wt:set scb^WtG^WjG^Wt:syncbind Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:H3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: :" ***** done with tests ***** :w! test.out " Write contents of this file :qa!ENDTESTstart of window 1[?12l[?25h[?25l:[?12l[?25hset nowrap [?25l[?12l[?25h[?25l:[?12l[?25hset noequalalways [?25l[?12l[?25h[?25l:[?12l[?25hset splitbelow [?25l[?12l[?25h[?25l:[?12l[?25h" TEST using two windows open to one buffer, one extra empty window [?25l[?12l[?25h[?25l:[?12l[?25hsplit [?25l:" TEST scrolling down L5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: :" TEST horizontal scrolling :set scrollopt+=horgg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG:set scrollopt-=hor:" TEST syncbind^Wt:set noscbggL^Wj:set noscbL:set scbt:set scbG^WjG:syncbindHk^WtH^WjHyy^Wbp^Wtyy^Wbp::set noscb ggL^Wj:set noscb ggL:set scb ^Wt:set scb^WtG^WjG^Wt:syncbindHk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:H3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: :" ***** done with tests ***** :w! test.out" Write contents of this file :qa!ENDTESTtest37.in TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: :" TEST horizontal scrollingset scrollopt+=horgg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG: ^Wk10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG::set scrollopt-=hor" TEST syncbind^Wt:set nosggL^Wj:set noscb ggL:set scb^Wt G^WjG:syncbind Hk^WtH^WjHyy^Wbp^Wtyy^Wbp: ^Wt:set noscbggL^Wj:set noscb ggL:set scb^WtG^WjG^Wt:syncbind Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: ^WtH3kjH^WtHyybp^Wt^Wjyy^Wbp: :" ***** done with tests *****w! test.out " Write contents of this file :qa!ENDTESTstart of window 1 test37.in [?12l[?25h[?25l:[?12l[?25hnew [?25lHk^WtH^WjHyy^Wbp^Wtyy^Wbp: ^Wt:set noscbggL^Wj:set noscbggL:set scb^Wt:set scb^WtG^WjG^Wt:syncbind Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:tH3k^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp:" ***** done with tests ***** :w! test.out " Write contents of this file :qa!ENDTESTtest37.in ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] [?12l[?25h[?25l start of window 1 test37.in [No Name]  [?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hresize 8 [?25l^WtH3kjH^WtHyy^Wbp^Wt^Wjyy^Wbp:***** done with tests ***** :w! test.out " Write contents of this fileqa!ENDTESTstart of window 1test37.in j/^start of window 2$/ zt::set scrollbind :" -- start of tests -- :" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up ^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: :" TEST horizontal scrolling :set scrollopt+=horgg"zyyG"zpG^Wt015zly$^Wbp"zpG^Wky$^Wbp"zpG:k10jH7zhg0y$^Wbp"zpG^WtHg0y$^Wbp"zpG: :set scrollopt-=hor" TEST syncbind^Wt:set noscb ggL^Wj:set noscb ggL:set scb ^Wt:set scb G^WjG:syncbindHk^WtH^WjHyy^Wbp^Wtyy^Wbp:^Wt:set noscbggL^Wj:set noscb ggL:set scb^WtG^WjG^Wt:syncbind Hk^WjH^WtHyy^Wbp^Wt^Wjyy^Wbp: ^WtH3kjH^WtHyybp^Wt^Wjyy^Wbp: :" ***** done with tests *****w! test.out " Write contents of this file :qa!ENDTESTstart of window 1[?12l[?25h[?25l/[?12l[?25h^start of window 1$/ [?25l. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01 . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03 . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04 . line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollbind [?25l[?12l[?25htest37.in  test37.in [?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hresize 7 [?25l:" ***** done with tests ***** :w! test.out " Write contents of this file :qa! ENDTESTstart of window 1test37.in ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l/[?12l[?25h^start of window 2$/ [?25lend of window 1start of window 2 . line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01 . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02 . line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03[?12l[?25h[?25l . line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollbind [?25l[?12l[?25h[?25l:[?12l[?25h" -- start of tests -- [?25l[?12l[?25h[?25l:[?12l[?25h" TEST scrolling down [?25l[?12l[?25h [?25l. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 . line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 . line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08 . line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09 . line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05 . line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06 . line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07 . line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08 . line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09[?12l[?25htest37.in  [No Name] [?25l . line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[+][?12l[?25h[?25l0[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[?12l[?25h[?25l1[?12l[?25htest37.in [No Name] [+]   [?25l. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11 . line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12 . line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13 . line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14 . line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15 end of window 1. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10 . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11 . line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12 . line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13 . line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15[?12l[?25htest37.in  [No Name] [+] [?25l . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l2[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h" TEST scrolling up [?25l[?12l[?25htest37.in [No Name] [+]  [?25l. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04 . line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05 . line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 . line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 . line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08440505060607070808090900[?12l[?25htest37.in  test37.in test37.in test37.in  test37.in  [No Name] [+] [?25l . line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[?12l[?25h[?25l4[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06[?12l[?25h[?25l5[?12l[?25htest37.in [No Name] [+]  [?25lstart of window 1 . line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01 . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02 . line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2 . line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01 . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02 . line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03 [?12l[?25htest37.in test37.in  test37.in  test37.in test37.in  [No Name] [+] [?25l . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l6[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l7[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h" TEST horizontal scrolling [?25l[?12l[?25h[?25l:[?12l[?25hset scrollopt+=hor [?25l[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l 156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0656789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06[?12l[?25htest37.in  [No Name] [+] [?25l56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25lUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415UTSRQPONMLKJIHGREDCBA9876543210 09101112131415[?12l[?25h[?25l. 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 . 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[?12l[?25h[?25l[?12l[?25htest37.in  [No Name] [+] [?25l. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]   test37.in  [No Name] [+] [?25l. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollopt-=hor [?25l[?12l[?25h[?25l:[?12l[?25h" ****** tests using two different buffers ***** [?25l[?12l[?25htest37.in [No Name] [+]  test37.in  test37.in [?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hclose [?25lstart of window 20000000000[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset noscrollbind [?25l[?12l[?25h[?25l:[?12l[?25h/^start of window 2$/,/^end of window 2$/y [?25l18 lines yanked[?12l[?25h[?25l:[?12l[?25hnew [?25ltest37.in ~ ~ ~ ~ ~ ~ ~ [No Name] [?12l[?25htest37.in [No Name]  test37.in  [No Name] [?25l4 more lines[+][?12l[?25h [?25l18 more linesstart of window 2. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l/[?12l[?25h^start of window 1$/ [?25lsearch hit BOTTOM, continuing at TOPENDTESTstart of window 1010102020303[?12l[?25h[?25l . line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollbind [?25l[?12l[?25htest37.in  [No Name] [+] [?25l:[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h^start of window 2$/ [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03 . line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04 . line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollbind [?25l[?12l[?25h[?25l:[?12l[?25h" -- start of tests -- [?25l[?12l[?25h[?25l:[?12l[?25h" TEST scrolling down [?25l[?12l[?25h [?25l. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05 . line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 . line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07 . line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08 . line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06 . line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07 . line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08 . line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09 . line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[?12l[?25h[No Name] [+]  [No Name] [+] [?25l . line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[?12l[?25h[?25l0[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[?12l[?25h[?25l1[?12l[?25htest37.in [No Name] [+]   [?25l. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10 . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11 . line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12 . line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13 . line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14 . line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11 . line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12 . line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13 . line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[?12l[?25htest37.in  [No Name] [+] [?25l . line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l2[?12l[?25h[No Name] [+] [No Name] [+]  [No Name] [+]  [No Name] [+] [?25l . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l3[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h" TEST scrolling up [?25l[?12l[?25htest37.in [No Name] [+]  [?25l440505060607070808090900. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04 . line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05 . line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06 . line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07 . line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08[?12l[?25htest37.in  [No Name] [+] test37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[?12l[?25h[?25l4[?12l[?25h[No Name] [+] [No Name] [+]  [No Name] [+]  [No Name] [+] [?25l . line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06[?12l[?25h[?25l5[?12l[?25h[No Name] [+] [No Name] [+]  [?25lstart of window 1 . line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01 . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02 . line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03start of window 2 . line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01 . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02 . line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03 [?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [No Name] [+]  [No Name] [+] [?25l . line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l6[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l . line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l7[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h" TEST horizontal scrolling [?25l[?12l[?25h[?25l:[?12l[?25hset scrollopt+=hor [?25l[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l 156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0156789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0256789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0356789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 0556789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06 2UTSRQPONMLKJIHGREDCBA9876543210 01UTSRQPONMLKJIHGREDCBA9876543210 02UTSRQPONMLKJIHGREDCBA9876543210 03UTSRQPONMLKJIHGREDCBA9876543210 04UTSRQPONMLKJIHGREDCBA9876543210 05UTSRQPONMLKJIHGREDCBA9876543210 06UTSRQPONMLKJIHGREDCBA9876543210 07[?12l[?25htest37.in  [No Name] [+] [?25l56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l[?12l[?25h[No Name] [+] [No Name] [+]  [No Name] [+]  [No Name] [+] [?25lUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[No Name] [+] [No Name] [+]  [?25l56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09101112131415 UTSRQPONMLKJIHGREDCBA9876543210 0910111213141516[?12l[?25h[?25l. 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 . 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[?12l[?25h[?25l[?12l[?25h[No Name] [+]  [No Name] [+] [?25l. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]   test37.in  [No Name] [+] [?25l. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset scrollopt-=hor [?25l[?12l[?25h[?25l:[?12l[?25h" TEST syncbind [?25l[?12l[?25htest37.in [No Name] [+]  [?25l:[?12l[?25hset noscb [?25l[?12l[?25h[?25lTest for 'scrollbind'. Do not add a line below! STARTTEST:so small.vim:set noscrollbind:set scrollopt=ver,jump:set scrolloff=2:set nowrap[?12l[?25h test37.in  [No Name] [+] [?25l:[?12l[?25hset noscb [?25l[?12l[?25h[?25lstart of window 201010202[?12l[?25h[?25l:[?12l[?25hset scb [?25l[?12l[?25htest37.in [No Name] [+]  [?25l:[?12l[?25hset scb [?25l[?12l[?25h[?25l. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16 end of window 2end of test37.in (please don't delete this line) end of window 2 ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lzt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up ^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: test37.in  . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+] [?12l[?25h[?25l:[?12l[?25hsyncbind [?25l[?12l[?25h[?25l/^start of window 2$/. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [No Name] [+]  [No Name] [+] [?25l . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l :set scrollbind[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l:[?12l[?25hset noscb [?25l[?12l[?25h[?25lTest for 'scrollbind'. Do not add a line below! STARTTEST :so small.vimset noscrollbindset scrollopt=ver,jump :set scrolloff=2set nowrap[?12l[?25h test37.in  [No Name] [+] [?25l:[?12l[?25hset noscb [?25l[?12l[?25h[?25lstart of window 2. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l:[?12l[?25hset scb [?25l[?12l[?25htest37.in [No Name] [+]  [?25l:[?12l[?25hset scb [?25l[?12l[?25h[?25l. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14 . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16 end of window 2end of test37.in (please don't delete this line) end of window 2 ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lzt::set scrollbind:" -- start of tests --:" TEST scrolling downL5jHyy^Wbpr0^WtHyy^Wbpr1^WtL6jHyy^Wbpr2^WkHyy^Wbpr3: :" TEST scrolling up ^WtH4k^WjH^WtHyy^Wbpr4^WkHyy^Wbpr5^Wk3k^WtH^WjHyy^Wbpr6^WtHyy^Wbpr7: test37.in  . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15 . line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[No Name] [+] [?12l[?25htest37.in [No Name] [+]  [?25l:[?12l[?25hsyncbind [?25l[?12l[?25h[?25l/^start of window 2$/. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13 . line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14[?12l[?25h[?25l:resize 7test37.in  [No Name] [+] [?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [?25l zt:[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [No Name] [+]  [No Name] [+] [?25l . line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25htest37.in [No Name] [+]  [?25l/^start of window 1$/ zt: :set scrollbind ^Wj:. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09 . line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10 . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11 . line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12[?12l[?25htest37.in  [No Name] [+] test37.in [No Name] [+]  test37.in  [No Name] [+] [?25l :set scrollbind[?12l[?25htest37.in [No Name] [+]  test37.in  [No Name] [+] [No Name] [+]  [No Name] [+] [?25l . line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h" ***** done with tests ***** [?25l[?12l[?25h[?25l:[?12l[?25hw! test.out " Write contents of this file [?25l"test.out" [New File] 33 lines, 1329 characters writtentest.out] [?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test38.failed test.ok test.out X* viminfo cp test38.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test38.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test38.in" 35 lines, 455 charactersTest Virtual replace mode. STARTTEST :so small.vim :" make sure that backspace works, no matter what termcap is used :set t_kD=^Vx7f t_kb=^Vx08 ggdGa abcdefghi jk lmn opq rst ^Duvwxyz ^[gg:set ai :set bs=2 gR0^D 1 A BCDEFGHIJKL MNO PQR^[G:ka o0^D abcdefghi jk lmn opq rst ^Duvwxyz ^['ajgR0^D 1 A BCDEFGHIJKL MNO PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$ iab cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[: iabcdefghijklmnopqrst^[0gRAB IJKLMNO QR^[:wq! test.out ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 29 lines, 407 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" make sure that backspace works, no matter what termcap is used [?25l[?12l[?25h[?25l:[?12l[?25hset t_kD=^^? t_kb=^^H [?25lTest Virtual replace mode. STARTTEST :so small.vim :" make sure that backspace works, no matter what termcap is used :set t_kD=^Vx7f t_kb=^Vx08 ggdGa abcdefghi jk lmn opq rst ^Duvwxyz ^[gg:set ai :set bs=2 gR0^D 1 A BCDEFGHIJKL MNO PQR^[G:ka o0^D abcdefghi jk lmn opq rst ^Duvwxyz ^['ajgR0^D 1 A BCDEFGHIJKL MNO PQR^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^H^[:$ iab cdefghi jkl^[0gRAB......CDEFGHI.J^[o^[: iabcdefghijklmnopqrst^[0gRAB IJKLMNO QR^[:wq! test.out ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --No lines in buffer--[?12l[?25h[?25l abcdefghijk lmn opq rstuvwxyz[?12l[?25h[?25l:[?12l[?25hset ai [?25l[?12l[?25h[?25l:[?12l[?25hset bs=2 [?25l[?12l[?25h[?25l 1 A BCDEFGHIJ KL MNOPQR[?12l[?25h[?25l:[?12l[?25hka [?25l[?12l[?25h[?25labcdefghijk lmn opq rstuvwxyz[?12l[?25h [?25l 1[?12l[?25h[?25l:[?12l[?25h$ [?25l[?12l[?25h[?25lab cdefghi jkl[?12l[?25h [?25lAB......CDEFGHI.J[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h[?25l[?12l[?25h[?25labcdefghijklmnopqrst[?12l[?25h [?25lAB IJKLMNO QR[?12l[?25h[?25l:[?12l[?25hwq! test.out [?25l"test.out" [New File] 13 lines, 107 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test39.failed test.ok test.out X* viminfo cp test39.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test39.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test39.in" 43 lines, 916 charactersTest 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 jllll^Vjj>wll^Vjlll> :" Test shift-left of a block G$hhhh^Vkk< :" Test block-insert Gkl^VkkkIxyz^[ :" Test block-replace Gllll^Vkkklllrq :" Test block-change G$khhh^Vhhkkcmno^[ :$-4,$w! test.out :" gUe must uppercase a whole word, also when ß changes to SS Gothe youtußeuu end^[Ypk0wgUe :" gUfx must uppercase until x, inclusive. O- youßtußexu -^[0fogUfx :" VU must uppercase a whole line YpkVU :" same, when it's the last line in the buffer YPGi111^[VUddP :" Uppercase two lines Oblah di doh dut^[VkUj :" Uppercase part of two lines ddppi333^[k0i222^[fyllvjfuUk :/^the/,$w >> test.out :qa! ENDTEST abcdefghijklm abcdefghijklm abcdefghijklm abcdefghijklm abcdefghijklm ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 31 lines, 740 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25h" This only works when 'encoding' is "latin1", don't depend on the environment [?25l[?12l[?25h[?25l:[?12l[?25hset enc=latin1 [?25lTest 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 jllll^Vjj>wll^Vjlll> :" Test shift-left of a block G$hhhh^Vkk< :" Test block-insert Gkl^VkkkIxyz^[ :" Test block-replace Gllll^Vkkklllrq :" Test block-change G$khhh^Vhhkkcmno^[ :$-4,$w! test.out :" gUe must uppercase a whole word, also when ß changes to SS Gothe youtußeuu end^[Ypk0wgUe :" gUfx must uppercase until x, inclusive. O- youßtußexu -^[0fogUfx :" VU must uppercase a whole line YpkVU :" same, when it's the last line in the buffer YPGi111^[VUddP :" Uppercase two lines Oblah di doh dut^[VkUj :" Uppercase part of two lines ddppi333^[k0i222^[fyllvjfuUk :/^the/,$w >> test.out :qa! ENDTEST abcdefghijklm abcdefghijklm abcdefghijklm abcdefghijklm abcdefghijklm ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l/[?12l[?25h^abcde [?25l[?12l[?25h[?25l:[?12l[?25h" Test shift-right of a block [?25l[?12l[?25h abcd[?25l[?12l[?25h[?25le abcd[?12l[?25h[?25le abcd[?12l[?25h[?25l3 lines >ed 1 time efghijklm abcd efghijklm abcd efghijklm[?12l[?25h ef[?25l[?12l[?25h[?25lg[?12l[?25h[?25lhg[?12l[?25h[?25lih[?12l[?25h[?25lji[?12l[?25h[?25l ghijklm ghijklm[?12l[?25h[?25l:[?12l[?25h" Test shift-left of a block [?25l[?12l[?25h [?25l[?12l[?25h[?25li[?12l[?25h[?25l [?12l[?25h[?25l3 lines > test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" 8 lines, 136 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test40.failed test.ok test.out X* viminfo cp test40.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test40.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test40.in" 63 lines, 1536 charactersTest 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 :" 2test40 :" 3 end of Xxx :" 4 write :au FileReadCmd XtestB '[r Xxx :2r XtestB" will read Xxx below line 2 instead :" 1 start of Xxx :" 2test40 :" 3 start of Xxx :" 4test40 :" 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 :" 2test40 :" 3 start of Xxx :" 4test401 :" 5 end of Xxx :" 6 end of Xxx :" 7 write :" 8test401 :" 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^[^W^W:" :au BufWriteCmd XtestE w! test.out :wall" will write other window to test.out :" 1 start of Xxx :" 2test40 :" 3 start of Xxx :" 4test401 :" 5 end of Xxx :" 6 asdf :" 7 end of Xxx :" 8 write :" 9test401 :" 10 end of Xxx :" 11 end of Xxx :qa! ENDTEST start of Xxx[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for "*Cmd" autocommands[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 55 lines, 1455 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h/^start/,$w! Xxx^I^I" write lines below to Xxx [?25l"Xxx" [New File] 3 lines, 32 characters written[?12l[?25h[?25l:[?12l[?25hau BufReadCmd XtestA 0r Xxx|$del [?25l[?12l[?25h[?25l:[?12l[?25he XtestA^I^I^I" will read text of Xxd instead [?25l"Xxx" 3 lines, 32 charactersstart of Xxxtest40 end of Xxx ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hau BufWriteCmd XtestA call append(line("$"), "write") [?25l[?12l[?25h[?25l:[?12l[?25hw^I^I^I^I" will append a line to the file [?25lwrite[?12l[?25h[?25l:[?12l[?25hr XtestA^I^I^I" should not read anything [?25lE484: Can't open file XtestA[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" now we have: [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 1^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 2^I^Itest40 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 3^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 4^Iwrite [?25l[?12l[?25h[?25l:[?12l[?25hau FileReadCmd XtestB '[r Xxx [?25l[?12l[?25h[?25l:[?12l[?25h2r XtestB^I^I^I" will read Xxx below line 2 instead [?25l"Xxx" 3 lines, 32 charactersstart of Xxxtest40 end of Xxx[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 1^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 2^I^Itest40 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 3^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 4^I^Itest40 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 5^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 6^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 7^Iwrite [?25l[?12l[?25h[?25l:[?12l[?25hau FileWriteCmd XtestC '[,']copy $ [?25l[?12l[?25h[?25ltest401[?12l[?25h[?25l:[?12l[?25h4,5w XtestC^I^I^I" will copy lines 4 and 5 to the end [?25l test401end of Xxx[?12l[?25h[?25l:[?12l[?25hr XtestC^I^I^I" should not read anything [?25lE484: Can't open file XtestC[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 1^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 2^I^Itest40 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 3^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 4^I^Itest401 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 5^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 6^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 7^Iwrite [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 8^I^Itest401 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 9^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25hau FILEAppendCmd XtestD '[,']w! test.out [?25l[?12l[?25h[?25l:[?12l[?25hw >>XtestD^I^I^I" will write all lines to test.out [?25l"test.out" [New File] 9 lines, 91 characters written[?12l[?25h[?25l:[?12l[?25h$r XtestD^I^I^I" should not read anything [?25lE484: Can't open file XtestD[?12l[?25h[?25l:[?12l[?25h$w >>test.out^I^I^I" append "end of Xxx" to test.out [?25l"test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25hau BufReadCmd XtestE 0r test.out|$del [?25l[?12l[?25h[?25l:[?12l[?25hsp XtestE^I^I^I" split window with test.out [?25l"test.out" 10 lines, 102 charactersend of XxxXtestE end of Xxxend of Xxxwrite test401end of XxxXtestA [?12l[?25h[?25lasdf[+][?12l[?25hXtestE [+]  XtestA [?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hau BufWriteCmd XtestE w! test.out [?25l[?12l[?25h[?25l:[?12l[?25hwall^I^I^I^I" will write other window to test.out [?25l"test.out" 11 lines, 107 characters written [?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 1^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 2^I^Itest40 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 3^Istart of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 4^I^Itest401 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 5^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 6^Iasdf [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 7^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 8^Iwrite [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 9^I^Itest401 [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 10^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25h^I^I^I^I" 11^Iend of Xxx [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test41.failed test.ok test.out X* viminfo cp test41.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test41.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test41.in" 24 lines, 421 charactersTest 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 end^[kY3000p2GY3000p :w! Xtest :%d :e! Xtest :.w! test.out 3003G:.w >>test.out 6005G:.w >>test.out :qa! ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for writing and reading a file of over 100 Kbyte[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 13 lines, 196 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h%d [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --No lines in buffer--[?12l[?25h[?25lThis is the start This is the leaderThis is the middleThis is the trailerThis is the end[?12l[?25h[?25l3000 more linestrailer This is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailerThis is the trailer[?12l[?25h[?25lleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleaderleader[?12l[?25h [?25l:[?12l[?25hw! Xtest [?25l"Xtest" [New File] 6005 lines, 117092 characters written[?12l[?25h[?25l:[?12l[?25h%d [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ --No lines in buffer--[?12l[?25h[?25l:[?12l[?25he! Xtest [?25l"Xtest" 6005 lines, 117092 charactersThis is the start This is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leaderThis is the leader[?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New File] 1 line, 18 characters written[?12l[?25h[?25lThis is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the leader This is the middle This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 19 characters appended[?12l[?25h[?25lThis is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the trailer This is the end [?12l[?25h[?25l :[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 16 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test42.failed test.ok test.out X* viminfo cp test42.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test42.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test42.in" 130 lines, 2368 charactersTest for writing and reading a file starting with a BOM STARTTEST :so mbyte.vim :set encoding=utf-8 :set fileencodings=ucs-bom,latin-1 :set ff=unix ffs=unix" This changes the file for DOS and MAC :" --- Write the test files :/^latin-1$/+1w! Xtest0 :/^utf-8$/+1w! Xtest1 :/^utf-8-err$/+1w! Xtest2 :/^ucs-2$/+1w! Xtest3 :/^ucs-2le$/+1w! Xtest4 :" Need to add a NUL byte after the NL byte :set bin :e! Xtest4" Ignore change from setting 'ff' o^V^@^[:set noeol :w :set ffs& nobinary" Allow default test42.in format :e # :set ff=unix" Format for files to write :/^ucs-4$/+1w! Xtest5 :/^ucs-4le$/+1w! Xtest6 :" Need to add three NUL bytes after the NL byte :set bin :e! Xtest6" ! for when setting 'ff' is a change o^V^@^V^@^V^@^[:set noeol :w :set nobin :e # :" :" --- Check that editing a latin-1 file doesn't see a BOM :e! Xtest0 :redir! >test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set bomb fenc=latin-1 :w! Xtest0x :" :" --- Check utf-8 :e! Xtest1 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=utf-8 :w! Xtest1x :" :" --- Check utf-8 with an error (will fall back to latin-1) :e! Xtest2 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=utf-8 :w! Xtest2x :"[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for writing and reading a file starting with a BOM[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 111 lines, 2116 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:w! Xtest3x :" :" --- Check ucs-2le :e! Xtest4 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-2le :w! Xtest4x :" :" --- Check ucs-4 :e! Xtest5 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-4 :w! Xtest5x :" :" --- Check ucs-4le :e! Xtest6 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-4le :w! Xtest6x :" :" --- Check the files written with BOM :set bin :e! test.out :$r Xtest0x :$r Xtest1x :$r Xtest2x :$r Xtest3x :$r Xtest4x :$r Xtest5x :$r Xtest6x :set nobin ff&" Write the file in default format :w! test.out :qa! ENDTEST latin-1 þþlatin-1 utf-8 utf-8 utf-8-err utf-8~@err ucs-2 þÿ^@u^@c^@s^@-^@2^@ ucs-2le ÿþu^@c^@s^@-^@2^@l^@e^@ ucs-4 ^@^@þÿ^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@ ucs-4le ÿþ^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25hset encoding=utf-8 [?25l:w! Xtest3x :" :" --- Check ucs-2le :e! Xtest4 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-2le :w! Xtest4x :" :" --- Check ucs-4 :e! Xtest5 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-4 :w! Xtest5x :" :" --- Check ucs-4le :e! Xtest6 :redir >>test.out :set fileencoding bomb? :redir END :set fenc=latin-1 :w >>test.out :set fenc=ucs-4le :w! Xtest6x :" :" --- Check the files written with BOM :set bin :e! test.out :$r Xtest0x :$r Xtest1x :$r Xtest2x :$r Xtest3x :$r Xtest4x :$r Xtest5x :$r Xtest6x :set nobin ff&" Write the file in default format :w! test.out :qa! ENDTEST latin-1 latin-1 utf-8 utf-8 utf-8-err utf-8<80>err ucs-2 ^@u^@c^@s^@-^@2^@ ucs-2le u^@c^@s^@-^@2^@l^@e^@ ucs-4 ^@^@^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@ ucs-4le ^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@[?12l[?25h[?25l:[?12l[?25hset fileencodings=ucs-bom,latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hset ff=unix ffs=unix " This changes the file for DOS and MAC [?25l[?12l[?25h[?25l:[?12l[?25h" --- Write the test files [?25l[?12l[?25h[?25l:[?12l[?25h/^latin-1$/+1w! Xtest0 [?25l"Xtest0" [New File] 1 line, 10 characters written[?12l[?25h[?25l:[?12l[?25h/^utf-8$/+1w! Xtest1 [?25l"Xtest1" [New File] 1 line, 9 characters written[?12l[?25h[?25l:[?12l[?25h/^utf-8-err$/+1w! Xtest2 [?25l"Xtest2" [New File] 1 line, 13 characters written[?12l[?25h[?25l:[?12l[?25h/^ucs-2$/+1w! Xtest3 [?25l"Xtest3" [New File] 1 line, 14 characters written[?12l[?25h[?25l:[?12l[?25h/^ucs-2le$/+1w! Xtest4 [?25l"Xtest4" [New File] 1 line, 17 characters written[?12l[?25h[?25l:[?12l[?25h" Need to add a NUL byte after the NL byte [?25l[?12l[?25h[?25l:[?12l[?25hset bin [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest4 " Ignore change from setting 'ff' [?25l"Xtest4" 1 line, 17 charactersu^@c^@s^@-^@2^@l^@e^@ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h [?25l^@[?12l[?25h[?25l:[?12l[?25hset noeol [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtest4" [Incomplete last line] 2 lines, 18 characters written[?12l[?25h[?25l:[?12l[?25hset ffs& nobinary " Allow default test42.in format [?25l[?12l[?25h[?25l:[?12l[?25he # [?25l"test42.in" [converted] 130 lines, 2385 characters:w! Xtest3x:" :" --- Check ucs-2le:e! Xtest4:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-2le:w! Xtest4x:":" --- Check ucs-4:e! Xtest5:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-4:w! Xtest5x:":" --- Check ucs-4le:e! Xtest6:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-4le:w! Xtest6x:":" --- Check the files written with BOM:set bin:e! test.out:$r Xtest0x:$r Xtest1x:$r Xtest2x:$r Xtest3x:$r Xtest4x:$r Xtest5x:$r Xtest6x:set nobin ff& " Write the file in default format:w! test.out:qa!ENDTESTlatin-1þþlatin-1utf-8utf-8utf-8-errutf-8<80>errucs-2þÿ^@u^@c^@s^@-^@2^@ucs-2leÿþu^@c^@s^@-^@2^@l^@e^@ucs-4^@^@þÿ^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@ucs-4leÿþ^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@[?12l[?25h[?25l:[?12l[?25hset ff=unix " Format for files to write [?25l[?12l[?25h[?25l:[?12l[?25h/^ucs-4$/+1w! Xtest5 [?25l"Xtest5" [converted][New File] 1 line, 30 characters written[?12l[?25h[?25l:[?12l[?25h/^ucs-4le$/+1w! Xtest6 [?25l"Xtest6" [converted][New File] 1 line, 35 characters written[?12l[?25h[?25l:[?12l[?25h" Need to add three NUL bytes after the NL byte [?25l[?12l[?25h[?25l:[?12l[?25hset bin [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest6 " ! for when setting 'ff' is a change [?25l"Xtest6" 1 line, 33 characters^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h ~ [?25l ^@^@^@[?12l[?25h[?25l:[?12l[?25hset noeol [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtest6" [Incomplete last line] 2 lines, 36 characters written[?12l[?25h[?25l:[?12l[?25hset nobin [?25l[?12l[?25h[?25l:[?12l[?25he # [?25l"test42.in" [converted] 130 lines, 2385 characters:w! Xtest3x:":" --- Check ucs-2le:e! Xtest4:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-2le:w! Xtest4x:":" --- Check ucs-4:e! Xtest5:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-4:w! Xtest5x:":" --- Check ucs-4le:e! Xtest6:redir >>test.out:set fileencoding bomb?:redir END:set fenc=latin-1:w >>test.out:set fenc=ucs-4le:w! Xtest6x:":" --- Check the files written with BOM:set bin:e! test.out:$r Xtest0x:$r Xtest1x:$r Xtest2x:$r Xtest3x:$r Xtest4x:$r Xtest5x:$r Xtest6x:set nobin ff& " Write the file in default format:w! test.out:qa!ENDTESTlatin-1þþlatin-1utf-8utf-8utf-8-errutf-8<80>errucs-2þÿ^@u^@c^@s^@-^@2^@ucs-2leÿþu^@c^@s^@-^@2^@l^@e^@ucs-4^@^@þÿ^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@ucs-4leÿþ^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that editing a latin-1 file doesn't see a BOM [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest0 [?25l"Xtest0" [converted] 1 line, 12 charactersþþlatin-1~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hredir! >test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=latin1 nobomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lþþlatin-1 ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 12 characters appended[?12l[?25h[?25l:[?12l[?25hset bomb fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest0x [?25l"Xtest0x" [converted][New File] 1 line, 12 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check utf-8 [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest1 [?25l"Xtest1" 1 line, 9 charactersutf-8[?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=utf-8 bomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lutf-8 ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 6 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=utf-8 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest1x [?25l"Xtest1x" [New File] 1 line, 9 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check utf-8 with an error (will fall back to latin-1) [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest2 [?25l"Xtest2" [converted] 1 line, 17 charactersutf-8<80>err [?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=latin1 nobomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lutf-8<80>err ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 17 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=utf-8 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest2x [?25l"Xtest2x" [New File] 1 line, 17 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check ucs-2 [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest3 [?25l"Xtest3" [converted] 1 line, 8 charactersucs-2[?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=utf-16 bomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lucs-2 ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 6 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=ucs-2 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest3x [?25l"Xtest3x" [converted][New File] 1 line, 8 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check ucs-2le [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest4 [?25l"Xtest4" [converted] 1 line, 10 charactersle [?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=utf-16le bomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lucs-2le ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 8 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=ucs-2le [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest4x [?25l"Xtest4x" [converted][New File] 1 line, 10 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check ucs-4 [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest5 [?25l"Xtest5" [converted] 1 line, 10 characters4[?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=ucs-4 bomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lucs-4 ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 6 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=ucs-4 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest5x [?25l"Xtest5x" [converted][New File] 1 line, 10 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check ucs-4le [?25l[?12l[?25h[?25l:[?12l[?25he! Xtest6 [?25l"Xtest6" [converted] 1 line, 12 charactersle [?12l[?25h[?25l:[?12l[?25hredir >>test.out [?25l[?12l[?25h[?25l:[?12l[?25hset fileencoding bomb? [?25l fileencoding=ucs-4le bomb Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lucs-4le ~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin-1 [?25l[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" [converted] 1 line, 8 characters appended[?12l[?25h[?25l:[?12l[?25hset fenc=ucs-4le [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtest6x [?25l"Xtest6x" [converted][New File] 1 line, 12 characters written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check the files written with BOM [?25l[?12l[?25h[?25l:[?12l[?25hset bin [?25l[?12l[?25h[?25l:[?12l[?25he! test.out [?25l"test.out" 35 lines, 275 characters fileencoding=latin1nobomblatin-1 fileencoding=utf-8 bombutf-8 fileencoding=latin1nobombutf-8<80>err fileencoding=utf-16 bombucs-2 fileencoding=utf-16le bombucs-2le fileencoding=ucs-4 bombucs-4 fileencoding=ucs-4le bombucs-4le[?12l[?25h[?25l:[?12l[?25h$r Xtest0x [?25l"Xtest0x" 1 line, 10 characterslatin-1[?12l[?25h[?25l:[?12l[?25h$r Xtest1x [?25l"Xtest1x" 1 line, 9 charactersutf-8[?12l[?25h[?25l:[?12l[?25h$r Xtest2x [?25l"Xtest2x" 1 line, 17 charactersutf-8<80>err[?12l[?25h[?25l:[?12l[?25h$r Xtest3x [?25l"Xtest3x" 1 line, 14 characters^@u^@c^@s^@-^@2^@[?12l[?25h[?25l:[?12l[?25h$r Xtest4x [?25l"Xtest4x" [Incomplete last line] 2 lines, 18 charactersu^@c^@s^@-^@2^@l^@e^@^@[?12l[?25h[?25l:[?12l[?25h$r Xtest5x [?25l"Xtest5x" 1 line, 28 characters^@^@^@^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@[?12l[?25h[?25l:[?12l[?25h$r Xtest6x [?25l"Xtest6x" [Incomplete last line] 2 lines, 36 characters^@^@u^@^@^@c^@^@^@s^@^@^@-^@^@^@4^@^@^@l^@^@^@e^@^@^@^@^@^@[?12l[?25h[?25l:[?12l[?25hset nobin ff& " Write the file in default format [?25l[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" 44 lines, 409 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test43.failed test.ok test.out X* viminfo cp test43.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test43.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test43.in" 34 lines, 473 charactersTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for regexp with various magic settings.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 19 lines, 268 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo [?25l[?12l[?25h[?25l/[?12l[?25h^1 [?25l[?12l[?25h[?25l/[?12l[?25ha*b\{2}c\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\Md\*e\{2}f\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset nomagic [?25l[?12l[?25h[?25l/[?12l[?25hg\*h\{2}i\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\mj*k\{2}l\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\vm*n{2}o+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\V^aa$ [?25l[?12l[?25h[?25laa$ x[?12l[?25h[?25l:[?12l[?25hset magic [?25l[?12l[?25h[?25l/[?12l[?25h\v(a)(b)\2\1\1/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\V[ab]\(\[xy]\)\1 [?25l[?12l[?25h[?25lab]x[?12l[?25h[?25l:[?12l[?25h$ [?25l[?12l[?25h[?25l:[?12l[?25hset undolevels=100 [?25l[?12l[?25h[?25l?[?12l[?25hbar? [?25l~ [?12l[?25h[?25l1 more line; before #2 0 seconds agobar[?12l[?25h[?25l9 foo[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h?^1?,$w! test.out [?25l"test.out" [New] 11L, 137C written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test44.failed test.ok test.out X* viminfo cp test44.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test44.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test44.in" 66 lines, 2543 charactersTests for regexp with multi-byte encoding and various magic settings. Test matchstr() with a count and multi-byte chars. STARTTEST :so mbyte.vim :set nocompatible encoding=utf-8 termencoding=latin1 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:" Now search for multi-byte without composing char /ม x:" Now search for multi-byte with composing char /มà¹~H x:" find word by change of word class /ã~A¡\<ã~B«ã~C¨\>ã~A¯ 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#Å~SÌ~Dá¹£Ì~AmÌ¥Ì~DαÌ~DÌ~FÌ~A#g' :@w :?^1?,$w! test.out :e! test.out G:put =matchstr(\"×~P×~Q×~R×~S\", \".\", 0, 2) " ×~Q :put =matchstr(\"×~P×~Q×~R×~S\", \"..\", 0, 2) " ×~Q×~R :put =matchstr(\"×~P×~Q×~R×~S\", \".\", 0, 0) " ×~P :put =matchstr(\"×~P×~Q×~R×~S\", \".\", 4, -1) " ×~R :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 หมà¹~Hx อมx a อมx หมà¹~Hx b ã~A¡ã~B«ã~C¨ã~A¯[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for regexp with multi-byte encoding and various magic settings.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 40 lines, 1352 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo [?25lTests for regexp with multi-byte encoding and various magic settings. Test matchstr() with a count and multi-byte chars. STARTTEST :so mbyte.vim :set nocompatible encoding=utf-8 termencoding=latin1 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:" 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 ¿?¿?¿?¿?[?12l[?25h[?25l/[?12l[?25h^1 [?25l[?12l[?25h[?25l/[?12l[?25ha*b\{2}c\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\Md\*e\{2}f\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset nomagic [?25l[?12l[?25h[?25l/[?12l[?25hg\*h\{2}i\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\mj*k\{2}l\+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\vm*n{2}o+/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\V^aa$ [?25l[?12l[?25h[?25laa$ x[?12l[?25h[?25l:[?12l[?25hset magic [?25l[?12l[?25h[?25l/[?12l[?25h\v(a)(b)\2\1\1/e [?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h\V[ab]\(\[xy]\)\1 [?25l[?12l[?25h[?25lab]x[?12l[?25h[?25l:[?12l[?25h" Now search for multi-byte without composing char [?25l[?12l[?25h[?25l/[?12l[?25h¿ [?25l[?12l[?25h[?25lx[?12l[?25h[?25l:[?12l[?25h" Now search for multi-byte with composing char [?25l[?12l[?25h[?25l/[?12l[?25h¿¿ [?25l[?12l[?25h[?25lx[?12l[?25h[?25l:[?12l[?25h" find word by change of word class [?25l[?12l[?25h[?25l/[?12l[?25h¿?\<¿?¿?\>¿? [?25l[?12l[?25h[?25l¿?¿?¿?[?12l[?25h[?25l:[?12l[?25h" Test \%u, [\u] and friends [?25l[?12l[?25h[?25l/[?12l[?25h\%u20ac [?25l c x ¬¿x[?12l[?25h[?25lx[?12l[?25h[?25l /[?12l[?25h[\u4f7f\u5929]\+ [?25l d ¿?¿?x[?12l[?25h[?25l¿?x [?12l[?25h[?25l /[?12l[?25h\%U12345678 [?25l e ¿y[?12l[?25h[?25ly[?12l[?25h[?25l /[?12l[?25h[\U1234abcd\u1234\uabcd] [?25l f ¿z[?12l[?25h[?25lz[?12l[?25h[?25l /[?12l[?25h\%d21879b [?25l g a¿?bb[?12l[?25h[?25lbb[?12l[?25h[?25l /[?12l[?25h [[=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 [?25lE868: Error building NFA with equivalence class!Press ENTER or type command to continue[?12l[?25h[?25lx/\Md\*e\{2}f\+/e x:set nomagic /g\*h\{2}i\+/e x/\mj*k\{2}l\+/e/\vm*n{2}o+/e x/\V^aa$:set magic/\v(a)(b)\2\1\1/e x/\V[ab]\(\[xy]\)\1 x:" Now search for multi-byte without composing char /¿:" Now search for multi-byte with composing char /¿x:" find word by change of word class /¿?\<¿?¿?\>¿?x:" Test \%u, [\u] and friends /\%u20acx/[\u4f7f\u5929]\+ x/\%U12345678x/[\U1234abcd\u1234\uabcd] x/\%d21879b [[=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=]]*/eabcdefghij==klmnopqrstu=]]* [[=vwxyz x:" Test backwards search from a multi-byte char/xx?.let @w=':%s#comb[i]nations#¿¿m¿#g':@w :?^1?,$w! test.out :e! test.outG:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿ :put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿ :put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿ :put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿ :w!qa!ENDTEST1 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$ x7 (a)(b) abba8 axx ab]xx9 ¿¿x ¿xa ¿¿x ¿xb ¿?¿?¿?c x ¬xd ¿?e y f zg 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Ý¿¿¿¿¿¿ ZZ¿¿¿¿¿¿[?12l[?25h[?25l[?12l[?25h[?25l /[?12l[?25h [[=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 [?25lE868: Error building NFA with equivalence class!Press ENTER or type command to continue[?12l[?25h[?25lx/\mj*k\{2}l\+/e x/\vm*n{2}o+/e x/\V^aa$:set magic/\v(a)(b)\2\1\1/e x/\V[ab]\(\[xy]\)\1 x:" Now search for multi-byte without composing char /¿:" Now search for multi-byte with composing char /¿x:" find word by change of word class /¿?\<¿?¿?\>¿?x:" Test \%u, [\u] and friends /\%u20acx/[\u4f7f\u5929]\+ x/\%U12345678x/[\U1234abcd\u1234\uabcd] x/\%d21879b [[=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=]]*/eabcdefghij==klmnopqrstu=]]* [[=vwxyz x:" Test backwards search from a multi-byte char/xx?.let @w=':%s#comb[i]nations#¿¿m¿#g':@w :?^1?,$w! test.out :e! test.outG:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿ :put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿ :put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿ :put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿ :w!qa!ENDTEST1 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$ x7 (a)(b) abba8 axx ab]xx9 ¿¿x ¿xa ¿¿x ¿xb ¿?¿?¿?c x ¬xd ¿?e y f zg 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Ý¿¿¿¿¿¿ ZZ¿¿¿¿¿ i 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¿¿¿¿¿¿[?12l[?25h[?25l[?12l[?25h[?25l :[?12l[?25h" Test backwards search from a multi-byte char [?25l[?12l[?25h[?25l/[?12l[?25hx [?25l j 0123¿x[?12l[?25h[?25l[?12l[?25h[?25l ?[?12l[?25h. [?25l[?12l[?25h[?25l¿[?12l[?25h[?25l:[?12l[?25hlet @w=':%s#comb[i]nations#¿¿¿¿mmm¿¿¿#g' [?25l[?12l[?25h[?25l:[?12l[?25h@w [?25l k ¿¿m¿[?12l[?25h[?25l :[?12l[?25h?^1?,$w! test.out [?25l"test.out" [New] 20L, 1011C written[?12l[?25h[?25l:[?12l[?25he! test.out [?25l"test.out" 20L, 1011C1 a aa abb abbcc 2 d dd dee deeff 3 g gg ghh ghhii4 j jj jkk jkkll5 m mm mnn mnnoo6 x aa$ x 7 (a)(b) abba8 axx ab]xx 9 ¿¿x ¿xa ¿¿x ¿x b ¿?¿?¿?c x ¬xd ¿?xe yf zg abbh 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Ý¿¿¿¿¿¿ ZZ¿¿¿¿¿i 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¿¿¿¿¿j 012¿k ¿¿m¿ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿ [?25l¿[?12l[?25h[?25l:[?12l[?25hput =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿ [?25l¿¿[?12l[?25h[?25l:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿ [?25l¿[?12l[?25h[?25l:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿ [?25l¿[?12l[?25h[?25l:[?12l[?25hw! [?25l"test.out" 24L, 1025C written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test45.failed test.ok test.out X* viminfo cp test45.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test45.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test45.in" 80 lines, 1824 charactersTests 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^Lj: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("."))[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for folding. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 63 lines, 1691 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST/kk$ :call append("$", foldlevel(".")) :/^last/+1,$w! test.out :delfun Flvl :qa! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" We also need the +syntax feature here. [?25l[?12l[?25h[?25l:[?12l[?25hif !has("syntax") [?25l : [?12l[?25h e! test.ok [?25l: [?12l[?25h w! test.out [?25l: [?12l[?25h qa! [?25l: [?12l[?25h:endif [?25lw! test.out qa! :endif :" basic test if a fold can be created, opened, moving to the end and closed[?12l[?25h[?25l :[?12l[?25h" basic test if a fold can be created, opened, moving to the end and closed [?25l[?12l[?25h[?25l/[?12l[?25h^1 [?25l 1 aa[?12l[?25h[?25l+-- 3 lines: 1 aa------------------------------------------------------------------------------[?12l[?25h[?25l :[?12l[?25hcall append("$", "manual " . getline(foldclosed("."))) [?25l[?12l[?25h[?25l1 aa[?12l[?25h[?25l:[?12l[?25hcall append("$", foldclosed(".")) [?25l[?12l[?25h[?25l2 bb 3 cc[?12l[?25h[?25l :[?12l[?25hcall append("$", getline(".")) [?25l[?12l[?25h[?25l+-- 3 lines: 1 aa------------------------------------------------------------------------------4 dd {{{ 5 ee {{{ }}}[?12l[?25h[?25l:[?12l[?25hcall append("$", getline(foldclosed("."))) [?25l[?12l[?25h[?25l:[?12l[?25h" test folding with markers. [?25l[?12l[?25h[?25l:[?12l[?25hset fdm=marker fdl=1 fdc=3 [?25l :" 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^Lj: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[?12l[?25h[?25l/[?12l[?25h^5 [?25lzf2j:call append("$", "manual " . getline(foldclosed(".")))zo:call append("$", foldclosed("."))]z:call append("$", getline("."))cgetline(foldclosed("."))):" test folding with markers.:set fdm=marker fdl=1 fdc=3/^5call 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 bi ^[jI ^[:call append("$", "indent " . foldlevel("."))k:call append("$", foldlevel(".")):" test syntax folding:set fdm=syntax fdl=0syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3yn region Fd1 start="ee" end="ff" fold containedFd2gghhed3commentstart" end="commentend" fold containedGzk:call append("$", "folding " . getline("."))k:call append("$", getline("."))jAcommentstart ^[Acommentend^[:set fdl=13j:call append("$", getline(".")):set fdl=0zO^Lj:call append("$", getline("."))" test expression folding:fun Flvl() let l = getline(v:lnum) if l =~ "bb$" return 2elseif l =~ "gg$""s1"ii>2kk0"ndifreturn "=endfun:set fdm=expr fde=Flvl()/bb$call append("$", "expr " . foldlevel("."))hhfoldlevel("."))iikk:/^last/+1,$w! test.outdelfun Flvlqa!ENDTEST1 aa2 bb3 cc -4 dd {{{ |-5 ee {{{ }}}[?12l[?25h[?25l:[?12l[?25hcall append("$", "marker " . foldlevel(".")) [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l | {{[?12l[?25h[?25l-{[?12l[?25h[?25l || 6 ff }}}[?12l[?25h[?25l | 7 gg[?12l[?25h[?25l :[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l6 ff }}}[?12l[?25h[?25l  7 gg[?12l[?25h[?25l :[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l:[?12l[?25h" test folding with indent [?25l[?12l[?25h[?25l:[?12l[?25hset fdm=indent sw=2 [?25l- | |- | |- | |- | |- | | [?12l[?25h[?25l/[?12l[?25h^2 b [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l - 2 bb[?12l[?25h[?25l |- 3 cc[?12l[?25h[?25l:[?12l[?25hcall append("$", "indent " . foldlevel(".")) [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l:[?12l[?25h" test syntax folding [?25l[?12l[?25h[?25l:[?12l[?25hset fdm=syntax fdl=0 [?25l  [?12l[?25h[?25l:[?12l[?25hsyn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3 [?25l+ +-- 8 lines: 4 dd --------------------------------------------------------------------------a jjb kklastmanual 1 aa-1[?12l[?25h[?25l:[?12l[?25hsyn region Fd1 start="ee" end="ff" fold contained [?25l[?12l[?25h[?25l:[?12l[?25hsyn region Fd2 start="gg" end="hh" fold contained [?25l[?12l[?25h[?25l:[?12l[?25hsyn region Fd3 start="commentstart" end="commentend" fold contained [?25l[?12l[?25h[?25l 3 cc  1 aa  marker 2  1  1  0  indent 2  1[?12l[?25h[?25l:[?12l[?25hcall append("$", "folding " . getline(".")) [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", getline(".")) [?25l[?12l[?25h[?25l --4 dd {{{commentstart ||5 ee {{{ }}} ||{{{||6 ff }}} ||6 ff }}}||7 gg ||8 hh ||9 ii ||a jj||b kk ||last ||manual 1 aa ||-1||3 cc[?12l[?25h[?25l commentend- |- | [?12l[?25h[?25l:[?12l[?25hset fdl=1 [?25l+ +--- 3 lines: 5 ee ------------------------------------------------------------------------- 6 ff }}}+ +--- 2 lines: 7 gg--------------------------------------------------------------------------9 ii a jj  b kk  lastmanual 1 aa-13 cc1 aamarker 21[?12l[?25h[?25l:[?12l[?25hcall append("$", getline(".")) [?25l[?12l[?25h[?25l:[?12l[?25hset fdl=0 [?25l+ +-- 8 lines: 4 dd commentstart commentend-------------------------------------------------- a jj b kk last manual 1 aa-13 cc1 aarker 2110indent[?12l[?25h[?25l -4 dd {{{commentstart commentend|-5 ee {{{ }}} ||{{{||6 ff }}} |6 ff }}}|-7 gg ||8 hh |9 iia jjb kklastmanual 1 aa-13 cc[?12l[?25h[?25l :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^Lj: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 {{{commentstart commentend |- 5 ee {{{ }}} || {{{ || 6 ff }}} | 6 ff }}} |- 7 gg || 8 hh | 9 ii  a jj  b kk  last  manual 1 aa  -1  3 cc[?12l[?25h[?25l:[?12l[?25hcall append("$", getline(".")) [?25l[?12l[?25h[?25l:[?12l[?25h" test expression folding [?25l[?12l[?25h[?25l:[?12l[?25hfun Flvl() [?25l : [?12l[?25h let l = getline(v:lnum) [?25l: [?12l[?25h if l =~ "bb$" [?25l: [?12l[?25h return 2 [?25l: [?12l[?25h elseif l =~ "gg$" [?25l: [?12l[?25h return "s1" [?25l: [?12l[?25h elseif l =~ "ii$" [?25l: [?12l[?25h return ">2" [?25l: [?12l[?25h elseif l =~ "kk$" [?25l: [?12l[?25h return "0" [?25l: [?12l[?25h endif [?25l: [?12l[?25h return "=" [?25l: [?12l[?25hendfun [?25l :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("."))[?12l[?25h[?25l:[?12l[?25hset fdm=expr fde=Flvl() [?25l+ +-- 11 lines: 2 bb---------------------------------------------------------------------------b kk last manual 1 aa -1 3 cc 1 aa marker 2  1 10indent 21+ +-- 4 lines: folding 9 ii-------------------------------------------------------------------~ ~ [?12l[?25h[?25l/[?12l[?25hbb$ [?25lsearch hit BOTTOM, continuing at TOP-- 2 bb|| 3 cc ||4 dd {{{commentstart commentend ||5 ee {{{ }}} ||{{{ ||6 ff }}} ||6 ff }}} ||7 gg|8 hh |+ +--- 2 lines: 9 ii--------------------------------------------------------------------------b kklastmanual 1 aa  -13 cc1 aa[?12l[?25h[?25l:[?12l[?25hcall append("$", "expr " . foldlevel(".")) [?25l[?12l[?25h[?25l/[?12l[?25hhh$ [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l/[?12l[?25hii$ [?25l-9 ii||a jjb kklastmanual 1 aa-13 cc[?12l[?25h[?25l:[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l/[?12l[?25hkk$ [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", foldlevel(".")) [?25l[?12l[?25h[?25l:[?12l[?25h/^last/+1,$w! test.out [?25l"test.out" [New File] 18 lines, 96 characters written[?12l[?25h[?25l:[?12l[?25hdelfun Flvl [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test46.failed test.ok test.out X* viminfo cp test46.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test46.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test46.in" 27 lines, 431 charactersTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for multi-line regexps with ":s". vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 8 lines, 292 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25h" test if replacing a line break works with a back reference [?25l[?12l[?25h[?25l:[?12l[?25h/^1/,/^2/s/\n\(.\)/ \1/ [?25l4 substitutions on 1 line1 aa bb cc 2 dd ee~ ~ ~ ~ 4 substitutions on 1 line[?12l[?25h[?25l:[?12l[?25h" test if inserting a line break works with a back reference [?25l[?12l[?25h[?25l:[?12l[?25h/^3/,/^4/s/\(.\)$/\r\1/ [?25l3 substitutions on 3 linesfgh 4 i j3 substitutions on 3 lines[?12l[?25h[?25l:[?12l[?25h" test if replacing a line break with another line break works [?25l[?12l[?25h[?25l:[?12l[?25h/^5/,/^6/s/\(\_d\{3}\)/x\1x/ [?25l3 substitutions on 2 linesx8 8xb cx9 9xd 6 ex7 7x7f [?12l[?25h[?25l:[?12l[?25h/^1/,$w! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 13 lines, 70 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test47.failed test.ok test.out X* viminfo cp test47.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test47.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test47.in" 62 lines, 1351 charactersTests 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 ggoyyy^[jjjozzzz^[ :vert diffsplit Xtest :vert diffsplit Xtest2 :" jump to second window for a moment to have filler line appear at start of :" first window ^W^Wgg^Wpgg: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() ^W^Wgg:let two = winline() j:let two = two . "-" . winline() j:let two = two . "-" . winline() j:let two = two . "-" . winline() j:let two = two . "-" . winline() ^W^Wgg: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() ^W^W: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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for vertical splits and filler lines in diff mode[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 52 lines, 1250 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" Disable the title to avoid xterm keeping the wrong one. [?25l[?12l[?25h[?25l:[?12l[?25hset notitle noicon [?25l[?12l[?25h[?25l/[?12l[?25h^1 [?25l[?12l[?25h[?25l5 lines yanked[?12l[?25h[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] j:let three = three . "-" . winline() ^W^W:call append("$", one)wo)call append("$", three) :$-2,$w! test.out" Test that diffing shows correct filler lines :diffoff!windo :bw! :enewput =range(4,10) :1d _ :vnewput =range(1,10) :1d _do :diffthis :wincmd hlet w0=line('w0') :enewput =w0.w >> test.outunlet! one two three w0 :qa!ENDTEST1 aa 2 bb test47.in [?12l[?25h[?25l5 more lines1 aa2 bb3 cc4 dd5 ee[+][?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hw! Xtest [?25l"Xtest" [New File] 5 lines, 25 characters writtenXtesta [?12l[?25h[?25l ~ [+][?12l[?25h [?25l 1 aa[?12l[?25h[?25lX[?12l[?25h[?25lxxx[?12l[?25h[?25l:[?12l[?25hw! Xtest2 [?25l"Xtest2" [New File] 6 lines, 29 characters written [?12l[?25h[?25l:[?12l[?25hfile Nop [?25l"Nop" [Not edited] line 4 of 6 --66%-- col 3Nops [?12l[?25h[?25lyyy[+][?12l[?25h 3 X xx[?25lzzzz[?12l[?25h 5 e[?25l:[?12l[?25hvert diffsplit Xtest [?25l"Xtest" 5 lines, 25 characters 1 aa |  2 bb|  ----------------------------------------------|  3 cc|  4 dd |  ----------------------------------------------|  ----------------------------------------------|  5 ee||||||||||||||||||||||| ----------------------------------------------  ~~~~~~~~~~~~~~~~~~~~~ Xtest+  --------------------------------------------- 2 bb yyy  3 cc X dd  xxx  zzzz  5 ee 1 aa                      ~~~~~~~~~~~~~~~~~~~~~Nop [+] [?12l[?25h[?25l:[?12l[?25hvert diffsplit Xtest2 [?25l"Xtest2" 6 lines, 29 characters ------------------------------|  2 bb|  ------------------------------|  3 cc|  X dd |  xxx |  ------------------------------|  5 ee|  1 aa |||||||||||||||||||||| ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  Xtest2  1 aa | 2 bb| -----------------------------| 3 cc| 4 dd | -----------------------------| -----------------------------| 5 ee||||||||||||||||||||||| -----------------------------                     ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Xtest  ----------------------------- 2 bb yyy  3 cc X dd  xxx  zzzz  5 ee 1 aa                      ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ Nop [+] j:let three = three . "-" . winline() j:let three = three . "-" . winline() j:let three = three . "-" . winline() j:let three = three . "-" . winline() ^W^W: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 test47.in [?12l[?25h[?25l:[?12l[?25h" jump to second window for a moment to have filler line appear at start of [?25l[?12l[?25h[?25l:[?12l[?25h" first window [?25l[?12l[?25h[?25lXtest2  Xtest [?12l[?25h[?25l[?12l[?25h[?25lXtest2 Xtest  [?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = one . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = one . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = one . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = one . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet one = one . "-" . winline() [?25l[?12l[?25h[?25lXtest2  Xtest [?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet two = winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet two = two . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet two = two . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet two = two . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet two = two . "-" . winline() [?25l[?12l[?25h[?25lXtest  Nop [+] [?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hlet three = three . "-" . winline() [?25l[?12l[?25hNop [+]  test47.in [?25l:[?12l[?25hcall append("$", one) [?25l[+][?12l[?25h[?25l:[?12l[?25hcall append("$", two) [?25l[?12l[?25h[?25l:[?12l[?25hcall append("$", three) [?25l[?12l[?25h[?25l:[?12l[?25h$-2,$w! test.out [?25l"test.out" [New File] 3 lines, 36 characters written[?12l[?25h[?25l:[?12l[?25h" Test that diffing shows correct filler lines [?25l[?12l[?25h[?25l:[?12l[?25hdiffoff! [?25l-- 2 bb 3 cc X dd xxx 5 ee 1 aa ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 1 aa 2 bb 3 cc 4 dd 5 ee ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 2 bbyyy3 ccX ddxxxzzzz5 ee1 aa~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hwindo :bw! [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25henew [?25l[?12l[?25h[?25l:[?12l[?25hput =range(4,10) [?25l7 more lines45678910[?12l[?25h[?25l:[?12l[?25h1d _ [?25l ~ [?12l[?25h[?25l:[?12l[?25hvnew [?25l ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||~ ~ ~ ~ ~ ~ [No Name] 45678910~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[No Name] [+] [?12l[?25h[?25l:[?12l[?25hput =range(1,10) [?25l10 more lines1 2 3 4 5 6 7 8 9 10 [+][?12l[?25h[?25l:[?12l[?25h1d _ [?25l1 2 3 4 5 6 7 8 9 10 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~ [?12l[?25h[?25l:[?12l[?25hwindo :diffthis [?25l 1   2   3   4  5  6  7  8  9 - 10  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [No Name] [+]   --------------------------------------------- --------------------------------------------- --------------------------------------------- 4 5 6 7 8 9- 10                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[No Name] [+] [?12l[?25h[?25l:[?12l[?25hwincmd h [?25l[No Name] [+] [No Name] [+]  [?12l[?25h[?25l:[?12l[?25hlet w0=line('w0') [?25l[?12l[?25h[?25l:[?12l[?25henew [?25lE37: No write since last change (add ! to override)[?12l[?25h[?25l:[?12l[?25hput =w0 [?25l123 45678  9 -10 ---------------------------------------------45678 9-10[?12l[?25h[?25l:[?12l[?25h.w >> test.out [?25l"test.out" 1 line, 2 characters appended[?12l[?25h[?25l:[?12l[?25hunlet! one two three w0 [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test48.failed test.ok test.out X* viminfo cp test48.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test48.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test48.in" 78 lines, 1542 charactersThis 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^N^[ :" :" Using "C" then then moves the last remaining character to the next :" line. (Mary Ellen Foster) j^/are C^Mare 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 ^2w^V3jyGp :" :" 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 . ^O^[3li^E^[4li^E^[4li^E <-- should show the name of a noted text editor^[ ^o^[4li^Y^[4li^Y^[4li^Y <-- and its version number^[-dd :" :" Test for yanking and pasting using the small delete register gg/^foo dewve"-p :wq! test.out ENDTEST[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lThis is a test of 'virtualedit'.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 57 lines, 1331 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h[?25l foo, bar[?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset noswf [?25l[?12l[?25h[?25l:[?12l[?25hset ve=all [?25l[?12l[?25h[?25l 61 fewer linesfoo, 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"a^Vb^Msdabcv6efi.him0kl~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h [?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword". [?25l[?12l[?25h[?25l:[?12l[?25h" Repeating CTRL-N fixes it. (Mary Ellen Foster) [?25l[?12l[?25h[?25l/[?12l[?25hw [?25l[?12l[?25h[?25l$Scanning tags. The only matchword[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Using "C" then then moves the last remaining character to the next [?25l[?12l[?25h[?25l:[?12l[?25h" line. (Mary Ellen Foster) [?25l[?12l[?25h [?25l/[?12l[?25hare [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l$are belong to vim 1 2 3 4 5 6 'i 'C 'a 'A 'D'this is a test "r"^Vb^Msdabcv6efi.him0kl[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" When past the end of a line that ends in a single character "b" skips [?25l[?12l[?25h[?25l:[?12l[?25h" that word. [?25l[?12l[?25h [?25l$7[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Make sure 'i' works [?25l[?12l[?25h 'i' [?25l<-- should be 3 ' '[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Make sure 'C' works [?25l[?12l[?25h 'C' [?25l$<-- should be 3 ' '[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Make sure 'a' works [?25l[?12l[?25h 'a' [?25l <-- should be 4 ' '[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Make sure 'A' works [?25l[?12l[?25h 'A' [?25l<-- should be 0 ' '[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Make sure 'D' works [?25l[?12l[?25h 'D' [?25l<-- 'D' should be intact[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test for yank bug reported by Mark Waggoner. [?25l[?12l[?25h[?25l:[?12l[?25hset ve=block [?25l[?12l[?25h [?25l[?12l[?25h[?25laaa[?12l[?25h[?25laaablock of 4 lines yanked[?12l[?25h[?25l3 more linesa aa [?12l[?25h [?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test "r" beyond the end of the line [?25l[?12l[?25h[?25l:[?12l[?25hset ve=all [?25l[?12l[?25h[?25l/[?12l[?25h^"r" [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h"r" [?25lx[?12l[?25h[?25lx<-- should be 'x'[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test to make sure 'x' can delete control characters [?25l[?12l[?25h[?25l:[?12l[?25hset display=uhex [?25l<16>b<0d>sd[?12l[?25h [?25l<16>b<0d>sd[?12l[?25h[?25lb<0d>sd[?12l[?25h[?25l<0d>sd[?12l[?25h[?25lsd[?12l[?25h[?25ld[?12l[?25h[?25l[?12l[?25h[?25l[This line should contain only the text between the brackets.][?12l[?25h[?25l:[?12l[?25hset display= [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test for ^Y/^E due to bad w_virtcol value, reported by [?25l[?12l[?25h[?25l:[?12l[?25h" Roy . [?25l[?12l[?25h [?25l[?12l[?25h [?25lv[?12l[?25hv [?25li[?12l[?25hi [?25lm <-- should show the name of a noted text editor[?12l[?25h [?25l[?12l[?25h [?25l6[?12l[?25h6 [?25l.[?12l[?25h. [?25l0 <-- and its version number[?12l[?25h[?25l ~ [?12l[?25h  [?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test for yanking and pasting using the small delete register [?25l[?12l[?25h[?25l/[?12l[?25h^foo [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l, bar[?12l[?25h, [?25l[?12l[?25h[?25lba[?12l[?25h[?25l[?12l[?25h[?25lfoo[?12l[?25h keyw[?25l:[?12l[?25hwq! test.out [?25l"test.out" [New File] 22 lines, 449 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test49.failed test.ok test.out X* viminfo cp test49.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test49.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test49.in" 30 lines, 632 charactersThis 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: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lThis is a test of the script language.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 21 lines, 401 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hse nocp nomore viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hlang mess C [?25l[?12l[?25h[?25l:[?12l[?25hso test49.vim [?25lError detected while processing function G: line 16: E171: Missing :endif: endwhile *** Test 1: OK (34695) function F() 1 Xpath 1" X: 1 2 let first = 1 3 XloopINIT 2 8 4 while 1 5Xloop 1" X: 2 + 0 * 16 6if first 7Xloop 2" X: 4 + 0 * 32 8let first = 0 9XloopNEXT 10break 11else 12Xloop 4" X: 0 + 0 * 64 13return 14endif 15 endwhile endfunction"/tmp/vuFPY0V/0"[noeol] 18L, 528C 15 substitutions on 15 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/0" 15L, 476C written "test49.in" 30L, 632C function G() 1 Xpath 256" X: 256 + 0 * 2048 2 let first = 1 3 XloopINIT 512 8 4 while 1 5Xloop 1" X: 512 + 0 * 4096 6if first 7Xloop 2" X: 1024 + 0 * 8192 8let first = 0 9XloopNEXT 10break 11else 12Xloop 4" X: 0 + 0 * 16384 13return 14endif 15if 1 " unmatched :if 16 endwhile endfunction"/tmp/vuFPY0V/1"[noeol] 19L, 588C 16 substitutions on 16 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/1" 16L, 534C written "test49.in" 30L, 632C Error detected while processing /tmp/vuFPY0V/1: line 16: E171: Missing :endif: endwhile *** Test 2: OK (34695) *** Test 3: OK (1384648195) *** Test 4: OK (32883) function F() 1 if 1 2Xpath 1" X: 1 3let loops = 3 4XloopINIT 2 16 5while loops > 0" 3: 2: 1: 6Xloop 1" X: 2 + 2*16 + 0*16*16 7if (loops == 2) 8Xloop 2" X: 4*16 9return 10Xloop 4" X: 0 11endif 12Xloop 8" X: 16 13let loops = loops - 1 14XloopNEXT 15endwhile 16Xpath 8192" X: 0 17 else 18Xpath 16384" X: 0 19 endif endfunction"/tmp/vuFPY0V/2"[noeol] 22L, 784C 19 substitutions on 19 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/2" 19L, 724C written "test49.in" 30L, 632C *** Test 5: OK (32883) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "/tmp/vuFPY0V/3" [New] 53L, 1582C written14L, 358C appended26L, 824C appended34L, 986C appended :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/4[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/4" 130L, 2431C appended131L, 2453C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/5[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/5"' -S /tmp/vuFPY0V/4[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/5" 21L, 130C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 6: OK (603978947) Error detected while processing /sources/vim74/src/testdir/test49.vim: line 976: E492: Not an editor command: ^Iasdf line 988: E492: Not an editor command: ^Iasdf line 996: E492: Not an editor command: asdf line 999: E492: Not an editor command: asdf | Xpath 32768^I^I^I^I" X: 0 *** Test 7: OK (90563) Error detected while processing function F: line 5: E492: Not an editor command: ^I asdf line 7: E492: Not an editor command: ^I asdf | Xpath 8^I^I^I" X: 0 line 19: E492: Not an editor command: ^I asdf line 21: E492: Not an editor command: ^I asdf | Xpath 2048^I^I^I" X: 0 line 29: E121: Undefined variable: novar E15: Invalid expression: novar^I^I" returns (default return value 0) Error detected while processing function G: line 5: E492: Not an editor command: ^I asdf^I^I" returns -1 Error detected while processing function H: line 5: E492: Not an editor command: ^I asdf^I^I" returns -1 *** Test 8: OK (562493431) Error detected while processing function F..G..H..I: line 2: E492: Not an editor command: asdf^I^I" error *** Test 9: OK (363) Error detected while processing /sources/vim74/src/testdir/test49.vim: line 1201: E15: Invalid expression: | strlen("\"") | Xpath 512^I^I" X: 0 E15: Invalid expression: 1 ||| strlen("\"") | Xpath 512^I^I" X: 0 line 1211: E15: Invalid expression: | strlen("\"") | Xpath 8192^I^I" X: 0 E15: Invalid expression: 1 ||| strlen("\"") | Xpath 8192^I^I" X: 0 line 1220: E15: Invalid expression: | strlen("\"") | Xpath 131072^I^I" X: 0 E15: Invalid expression: 1 ||| strlen("\"") | Xpath 131072^I^I" X: 0 *** Test 10: OK (559615) line 1252: E492: Not an editor command: asdf^I^I" error *** Test 11: OK (2049) 1 line 1330: E492: Not an editor command: asdf^I^I" error line 1338: E492: Not an editor command: asdf^I^I" error *** Test 12: OK (352256) line 1357: E121: Undefined variable: asdf E15: Invalid expression: asdf line 1368: E121: Undefined variable: asdf E15: Invalid expression: asdf | Xpath 32 | endwhile | Xpath 64^I" X: 0 *** Test 13: OK (145) Error detected while processing function F: line 8: E121: Undefined variable: g:boolvar E15: Invalid expression: g:boolvar^I" possibly undefined *** Test 14: OK (42413) E121: Undefined variable: g:boolvar E15: Invalid expression: g:boolvar | Xloop 8 | else | Xloop 16 | endif " X: 8 *** Test 15: OK (42413) line 5: E583: multiple :else: else^I^I Error detected while processing function G: line 5: E584: :elseif after :else: elseif 1^I^I" aborts function Error detected while processing function H: line 7: E583: multiple :else: else^I^I Error detected while processing function I: line 7: E584: :elseif after :else: elseif 1^I^I" aborts function *** Test 16: OK (8722) Error detected while processing function F: line 18: E171: Missing :endif: endwhile^I E171: Missing :endif: endwhile^I line 34: E171: Missing :endif: endwhile^I E171: Missing :endif: endwhile^I E171: Missing :endif: endwhile^I line 47: E580: :endif without :if: ^Iendif^I E580: :endif without :if: ^Iendif^I E580: :endif without :if: ^Iendif^I Error detected while processing /sources/vim74/src/testdir/test49.vim: line 1626: E171: Missing :endif: endwhile  *** Test 17: OK (285127993) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/6[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/6" 16L, 304C appended17L, 326C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/7[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/7"' -c 'breakadd file 8 /tmp/vuFPY0V/6' -S /tmp /vuFPY0V/6[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/7" 3L, 6C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/8[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/8" 6L, 127C appended7L, 149C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/9[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/9"' -c 'breakadd file 4 /tmp/vuFPY0V/8' -S /tmp /vuFPY0V/8[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/9" 1L, 5C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/10[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/10" 21L, 486C appended22L, 508C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/11[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/11"' -c 'breakadd func 7 F' -S /tmp/vuFPY0V/10[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/11" 3L, 18C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/12[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/12" 13L, 364C appended14L, 386C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/13[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/13"' -c 'breakadd func 3 G' -S /tmp/vuFPY0V/12[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/13" 1L, 9C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 18: OK (67224583) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/14[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/14" 12L, 201C appended13L, 223C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/15[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/15"' -S /tmp/vuFPY0V/14[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/15" 2L, 4C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/16[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/16" 12L, 205C appended13L, 227C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/17[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/17"' -S /tmp/vuFPY0V/16[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/17" 2L, 7C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/18[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/18" 6L, 122C appended7L, 144C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/19[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/19"' -S /tmp/vuFPY0V/18[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/19" 1L, 5C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/20[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/20" 8L, 176C appended9L, 198C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/21[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/21"' -S /tmp/vuFPY0V/20[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/21" 1L, 6C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/22[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/22" 10L, 215C appended11L, 237C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/23[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/23"' -S /tmp/vuFPY0V/22[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/23" 1L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/24[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/24" 7L, 149C appended8L, 171C8L, 170C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/25[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/25"' -S /tmp/vuFPY0V/24[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/25" 1L, 9C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 19: OK (69275973) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/26[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/26" 9L, 135C appended10L, 157C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/27[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/27"' -S /tmp/vuFPY0V/26[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/27" 2L, 4C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/28[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/28" 10L, 155C appended11L, 177C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/29[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/29"' -S /tmp/vuFPY0V/28[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/29" 3L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/30[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/30" 12L, 204C appended13L, 226C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/31[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/31"' -S /tmp/vuFPY0V/30[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/31" 4L, 18C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/32[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/32" 12L, 214C appended13L, 236C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/33[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/33"' -S /tmp/vuFPY0V/32[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/33" 4L, 22C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/34[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/34" 12L, 211C appended13L, 233C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/35[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/35"' -S /tmp/vuFPY0V/34[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/35" 3L, 22C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/36[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/36" 14L, 263C appended15L, 285C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/37[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/37"' -S /tmp/vuFPY0V/36[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/37" 4L, 34C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/38[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/38" 14L, 277C appended15L, 299C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/39[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/39"' -S /tmp/vuFPY0V/38[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/39" 4L, 40C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 20: OK (1874575085) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/40[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/40" 58L, 1022C appended59L, 1044C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/41[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/41"' -S /tmp/vuFPY0V/40[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/41" 9L, 56C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 21: OK (147932225) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/42[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/42" 23L, 418C appended24L, 440C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/43[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/43"' -S /tmp/vuFPY0V/42[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/43" 1L, 2C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/44[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/44" 23L, 437C appended24L, 459C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/45[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/45"' -c 'breakadd func 2 Interrupt' -S /tmp/vuF PY0V/44[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/45" 1L, 3C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/46[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/46" 21L, 386C appended22L, 408C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/47[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/47"' -S /tmp/vuFPY0V/46[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/47" 1L, 5C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 22: OK (4161) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/48[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/48" 25L, 432C appended26L, 454C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/49[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/49"' -S /tmp/vuFPY0V/48[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/49" 3L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 23: OK (49) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/50[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/50" 16L, 392C appended17L, 414C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/51[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/51"' -S /tmp/vuFPY0V/50[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/51" 3L, 7C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 24: OK (41) *** Test 25: OK (260177811) *** Test 26: OK (1681500476) *** Test 27: OK (1996459) function F() 1 try 2Xpath 1" X: 1 3try 4Xpath 2" X: 2 5return 6Xpath 4" X: 0 7finally 8Xpath 8" X: 8 9endtry 10Xpath 16" X: 0 11 finally 12Xpath 32" X: 32 13 endtry 14 Xpath 64" X: 0 endfunction"/tmp/vuFPY0V/52"[noeol] 17L, 552C 14 substitutions on 14 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/52" 14L, 502C written "test49.in" 30L, 632C function G() 1 try 2Xpath 128" X: 128 3return 4Xpath 256" X: 0 5 finally 6Xpath 512" X: 512 7call F() 8Xpath 1024" X: 1024 9 endtry 10 Xpath 2048" X: 0 endfunction"/tmp/vuFPY0V/53"[noeol] 13L, 406C 10 substitutions on 10 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/53" 10L, 378C written "test49.in" 30L, 632C function H() 1 try 2Xpath 4096" X: 4096 3call G() 4Xpath 8192" X: 8192 5 finally 6Xpath 16384" X: 16384 7return 8Xpath 32768" X: 0 9 endtry 10 Xpath 65536" X: 0 endfunction"/tmp/vuFPY0V/54"[noeol] 13L, 409C 10 substitutions on 10 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/54" 10L, 381C written "test49.in" 30L, 632C *** Test 28: OK (1996459) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/55[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/55" 39L, 721C appended40L, 743C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/56[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/56"' -S /tmp/vuFPY0V/55[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/56" 6L, 21C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/57[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/57" 23L, 509C appended24L, 531C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/58[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/58"' -S /tmp/vuFPY0V/57[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/58" 4L, 34C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 29: OK (170428555) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/59[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/59" 60L, 1101C appended61L, 1123C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/60[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/60"' -c 'breakadd func 3 F' -c 'breaka dd file 19 /tmp/vuFPY0V/59' -c 'breakadd file 31 /tmp/vuFPY0V/59' -S /tmp/vuFPY0V/59[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/60" 16L, 89C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 30: OK (190905173) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/61[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/61" 60L, 1122C appended61L, 1144C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/62[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/62"' -S /tmp/vuFPY0V/61[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/62" 16L, 89C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 31: OK (190905173) *** Test 32: OK (354833067) *** Test 33: OK (1216907538) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/63[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/63" 63L, 1288C appended64L, 1310C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/64[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/64"' -c 'breakadd func 16 C' -S /tmp/vuFPY0V/63[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/64" 17L, 127C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 34: OK (2146584868) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/65[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/65" 63L, 1285C appended64L, 1307C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/66[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/66"' -c 'breakadd func 16 B' -S /tmp/vuFPY0V/65[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/66" 17L, 127C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 35: OK (2146584868) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/67[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/67" 66L, 1430C appended67L, 1452C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/68[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/68"' -c 'breakadd func 16 R' -S /tmp/vuFPY0V/67[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/68" 9L, 81C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 36: OK (1071644672) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/69[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/69" 73L, 1488C appended74L, 1510C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/70[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/70"' -c 'breakadd func 16 F' -S /tmp/vuFPY0V/69[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/70" 9L, 81C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 37: OK (1071644672) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/71[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/71" 82L, 1519C appended83L, 1541C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/72[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/72"' -c 'breakadd func 16 E' -S /tmp/vuFPY0V/71[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/72" 8L, 63C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 38: OK (357908480) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/73[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/73" 83L, 1538C appended84L, 1560C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/74[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|s et viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/74"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S /tmp/vuFPY0V/73[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/74" 8L, 63C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 39: OK (357908480) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/75[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/75" 82L, 1519C appended83L, 1541C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/76[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/76"' -c 'breakadd func 16 T' -S /tmp/vuFPY0V/75[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/76" 8L, 63C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** 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) function C() 1 try 2Xpath 1" X: 1 3throw "arrgh" 4Xpath 2" X: 0 5 catch /arrgh/ 6Xpath 4" X: 4 7 endtry 8 Xpath 8" X: 8 endfunction"/tmp/vuFPY0V/77"[noeol] 11L, 334C 8 substitutions on 8 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/77" 8L, 295C written "test49.in" 30L, 632C function T1() 1 XloopNEXT 2 try 3Xloop 1" X: 16 + 16*16 4throw "arrgh" 5Xloop 2" X: 0 6 finally 7Xloop 4" X: 64 + 64*16 8 endtry 9 Xloop 8" X: 0 endfunction"/tmp/vuFPY0V/78"[noeol] 12L, 364C 9 substitutions on 9 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/78" 9L, 323C written "test49.in" 30L, 632C function T2() 1 try 2Xpath 4096" X: 4096 3call T1() 4Xpath 8192" X: 0 5 finally 6Xpath 16384" X: 16384 7 endtry 8 Xpath 32768" X: 0 endfunction"/tmp/vuFPY0V/79"[noeol] 11L, 332C 8 substitutions on 8 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/79" 8L, 305C written "test49.in" 30L, 632C *** Test 50: OK (363550045) *** Test 51: OK (40744667) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/81[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/81" 2L, 41C appended3L, 63C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/82[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' -c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/82"' -S /tmp/vuFPY0V/81[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/82" 1L, 2C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 8L, 182C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/83[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/83" 7L, 115C appended8L, 137C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/84[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/84"' -S /tmp/vuFPY0V/83[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/84" 1L, 2C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 8L, 181C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/85[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/85" 12L, 180C appended13L, 202C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/86[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/86"' -S /tmp/vuFPY0V/85[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/86" 2L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 10L, 209C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/87[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/87" 8L, 139C appended9L, 161C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/88[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/88"' -S /tmp/vuFPY0V/87[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/88" 2L, 11C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 10L, 217C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/89[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/89" 5L, 87C appended6L, 109C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/90[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80 '-c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/t mp/vuFPY0V/90"' -c 'breakadd file 4 /tmp/vuFPY0V/89' -S /tmp/vuFPY0V/89[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/90" 1L, 7C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" [noeol] 9L, 202C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/91[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/91" 7L, 189C appended8L, 211C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/92[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/92"' -S /tmp/vuFPY0V/91[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/92" 1L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 9L, 252C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/93[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/93" 7L, 199C appended8L, 221C8L, 220C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/94[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/80' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/94"' -S /tmp/vuFPY0V/93[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/94" 1L, 10C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/80" 9L, 214C "test49.in" 30L, 632C *** Test 52: OK (1247112011) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/96[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/96" 1L, 10C appended2L, 32C2L, 31C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/97[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/97"' -S /tmp/vuFPY0V/96[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/97" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 154C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/98[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/98" 3L, 39C appended4L, 61C 3 substitutions on 3 lines "/tmp/vuFPY0V/98" 4L, 58C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/99[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/99"' -S /tmp/vuFPY0V/98[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/99" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 158C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/100[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/100" 4L, 45C appended5L, 67C 4 substitutions on 4 lines "/tmp/vuFPY0V/100"5L, 63C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/101[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/101"' -S /tmp/vuFPY0V/100[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/101" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 159C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/102[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/102" 3L, 33C appended4L, 55C 3 substitutions on 3 lines "/tmp/vuFPY0V/102"4L, 52C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/103[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/103"' -S /tmp/vuFPY0V/102[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/103" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 159C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/104[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/104" 5L, 65C appended6L, 87C 5 substitutions on 5 lines "/tmp/vuFPY0V/104"6L, 82C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/105[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/105"' -S /tmp/vuFPY0V/104[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/105" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 159C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/106[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/106" 1L, 9C appended2L, 31C2L, 30C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/107[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/107"' -S /tmp/vuFPY0V/106[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/107" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 153C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/108[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/108" 3L, 38C appended4L, 60C 3 substitutions on 3 lines "/tmp/vuFPY0V/108"4L, 57C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/109[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/109"' -S /tmp/vuFPY0V/108[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/109" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 157C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/110[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/110" 4L, 44C appended5L, 66C 4 substitutions on 4 lines "/tmp/vuFPY0V/110"5L, 62C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/111[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/111"' -S /tmp/vuFPY0V/110[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/111" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 157C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/112[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/112" 3L, 32C appended4L, 54C 3 substitutions on 3 lines "/tmp/vuFPY0V/112"4L, 51C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/113[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/113"' -S /tmp/vuFPY0V/112[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/113" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 157C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/114[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/114" 5L, 64C appended6L, 86C 5 substitutions on 5 lines "/tmp/vuFPY0V/114"6L, 81C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/115[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/115"' -S /tmp/vuFPY0V/114[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/115" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 157C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/116[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/116" 1L, 11C appended2L, 33C2L, 32C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/117[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/117"' -S /tmp/vuFPY0V/116[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/117" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 157C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/118[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/118" 3L, 40C appended4L, 62C 3 substitutions on 3 lines "/tmp/vuFPY0V/118"4L, 59C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/119[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/119"' -S /tmp/vuFPY0V/118[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/119" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 161C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/120[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/120" 4L, 46C appended5L, 68C 4 substitutions on 4 lines "/tmp/vuFPY0V/120"5L, 64C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/121[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/121"' -S /tmp/vuFPY0V/120[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/121" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 161C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/122[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/122" 3L, 34C appended4L, 56C 3 substitutions on 3 lines "/tmp/vuFPY0V/122"4L, 53C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/123[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/123"' -S /tmp/vuFPY0V/122[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/123" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 161C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/124[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/124" 5L, 66C appended6L, 88C 5 substitutions on 5 lines "/tmp/vuFPY0V/124"6L, 83C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/125[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/125"' -S /tmp/vuFPY0V/124[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/125" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 161C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/126[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/126" 4L, 37C appended5L, 59C 4 substitutions on 4 lines "/tmp/vuFPY0V/126"5L, 55C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/127[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/127"' -S /tmp/vuFPY0V/126[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/127" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 150C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/128[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/128" 4L, 41C appended5L, 63C 4 substitutions on 4 lines "/tmp/vuFPY0V/128"5L, 59C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/129[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/95' - c'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/ vuFPY0V/129"' -S /tmp/vuFPY0V/128[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/129" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/95" 6L, 159C "test49.in" 30L, 632C *** Test 53: OK (131071) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/131[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/131" 1L, 13C appended2L, 35C2L, 34C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/132[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/132"' -S /tmp/vuFPY0V/131[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/132" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 164C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/133[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/133" 3L, 36C appended4L, 58C 3 substitutions on 3 lines "/tmp/vuFPY0V/133"4L, 55C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/134[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/134"' -S /tmp/vuFPY0V/133[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/134" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 168C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/135[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/135" 3L, 38C appended4L, 60C 3 substitutions on 3 lines "/tmp/vuFPY0V/135"4L, 57C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/136[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/136"' -S /tmp/vuFPY0V/135[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/136" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 154C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/137[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/137" 4L, 48C appended5L, 70C 4 substitutions on 4 lines "/tmp/vuFPY0V/137"5L, 66C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/138[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/138"' -S /tmp/vuFPY0V/137[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/138" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 168C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/139[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/139" 4L, 53C appended5L, 75C 4 substitutions on 4 lines "/tmp/vuFPY0V/139"5L, 71C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/140[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/140"' -S /tmp/vuFPY0V/139[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/140" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 155C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/141[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/141" 5L, 62C appended6L, 84C 5 substitutions on 5 lines "/tmp/vuFPY0V/141"6L, 79C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/142[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/142"' -S /tmp/vuFPY0V/141[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/142" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 155C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/143[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/143" 5L, 64C appended6L, 86C 5 substitutions on 5 lines "/tmp/vuFPY0V/143"6L, 81C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/144[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/144"' -S /tmp/vuFPY0V/143[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/144" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 154C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/145[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/145" 3L, 36C appended4L, 58C 3 substitutions on 3 lines "/tmp/vuFPY0V/145"4L, 55C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/146[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/146"' -S /tmp/vuFPY0V/145[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/146" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 168C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/147[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/147" 5L, 67C appended6L, 89C 5 substitutions on 5 lines "/tmp/vuFPY0V/147"6L, 84C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/148[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/148"' -S /tmp/vuFPY0V/147[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/148" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 167C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/149[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/149" 5L, 68C appended6L, 90C 5 substitutions on 5 lines "/tmp/vuFPY0V/149"6L, 85C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/150[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/150"' -S /tmp/vuFPY0V/149[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/150" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 168C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/151[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/151" 7L, 95C appended8L, 117C 7 substitutions on 7 lines "/tmp/vuFPY0V/151"8L, 110C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/152[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/152"' -S /tmp/vuFPY0V/151[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/152" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/130" 6L, 167C "test49.in" 30L, 632C *** Test 54: OK (2047) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/154[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/154" 1L, 13C appended2L, 35C2L, 34C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/155[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/155"' -S /tmp/vuFPY0V/154[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/155" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 172C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/156[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/156" 3L, 36C appended4L, 58C 3 substitutions on 3 lines "/tmp/vuFPY0V/156"4L, 55C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/157[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/157"' -S /tmp/vuFPY0V/156[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/157" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 176C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/158[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/158" 4L, 48C appended5L, 70C 4 substitutions on 4 lines "/tmp/vuFPY0V/158"5L, 66C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/159[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/159"' -S /tmp/vuFPY0V/158[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/159" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 176C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/160[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/160" 3L, 36C appended4L, 58C 3 substitutions on 3 lines "/tmp/vuFPY0V/160"4L, 55C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/161[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/161"' -S /tmp/vuFPY0V/160[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/161" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 176C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/162[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/162" 5L, 68C appended6L, 90C 5 substitutions on 5 lines "/tmp/vuFPY0V/162"6L, 85C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/163[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/163"' -S /tmp/vuFPY0V/162[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/163" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 176C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/164[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/164" 1L, 10C appended2L, 32C2L, 31C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/165[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/165"' -S /tmp/vuFPY0V/164[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/165" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 166C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/166[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/166" 3L, 33C appended4L, 55C 3 substitutions on 3 lines "/tmp/vuFPY0V/166"4L, 52C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/167[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/167"' -S /tmp/vuFPY0V/166[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/167" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 170C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/168[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/168" 4L, 45C appended5L, 67C 4 substitutions on 4 lines "/tmp/vuFPY0V/168"5L, 63C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/169[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/169"' -S /tmp/vuFPY0V/168[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/169" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 170C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/170[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/170" 3L, 33C appended4L, 55C 3 substitutions on 3 lines "/tmp/vuFPY0V/170"4L, 52C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/171[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/171"' -S /tmp/vuFPY0V/170[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/171" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 170C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/172[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/172" 5L, 65C appended6L, 87C 5 substitutions on 5 lines "/tmp/vuFPY0V/172"6L, 82C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/173[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/173"' -S /tmp/vuFPY0V/172[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/173" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/153" 6L, 170C "test49.in" 30L, 632C *** Test 55: OK (1023) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/175[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/175" 1L, 11C appended2L, 33C2L, 32C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/176[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/176"' -S /tmp/vuFPY0V/175[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/176" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 158C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/177[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/177" 3L, 34C appended4L, 56C 3 substitutions on 3 lines "/tmp/vuFPY0V/177"4L, 53C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/178[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/178"' -S /tmp/vuFPY0V/177[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/178" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 162C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/179[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/179" 3L, 40C appended4L, 62C 3 substitutions on 3 lines "/tmp/vuFPY0V/179"4L, 59C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/180[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/180"' -S /tmp/vuFPY0V/179[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/180" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 162C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/181[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/181" 3L, 32C appended4L, 54C 3 substitutions on 3 lines "/tmp/vuFPY0V/181"4L, 51C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/182[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/182"' -S /tmp/vuFPY0V/181[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/182" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 152C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/183[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/183" 3L, 35C appended4L, 57C 3 substitutions on 3 lines "/tmp/vuFPY0V/183"4L, 54C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/184[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/184"' -S /tmp/vuFPY0V/183[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/184" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 155C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/185[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/185" 4L, 44C appended5L, 66C 4 substitutions on 4 lines "/tmp/vuFPY0V/185"5L, 62C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/186[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/186"' -S /tmp/vuFPY0V/185[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/186" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 152C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/187[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/187" 4L, 47C appended5L, 69C 4 substitutions on 4 lines "/tmp/vuFPY0V/187"5L, 65C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/188[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/188"' -S /tmp/vuFPY0V/187[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/188" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 155C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/189[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/189" 5L, 64C appended6L, 86C 5 substitutions on 5 lines "/tmp/vuFPY0V/189"6L, 81C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/190[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/190"' -S /tmp/vuFPY0V/189[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/190" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 152C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/191[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/191" 5L, 67C appended6L, 89C 5 substitutions on 5 lines "/tmp/vuFPY0V/191"6L, 84C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/192[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vuFPY0V/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp /vuFPY0V/192"' -S /tmp/vuFPY0V/191[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/192" 0L, 0C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/tmp/vuFPY0V/174" 6L, 155C "test49.in" 30L, 632C *** Test 56: OK (511) function FuncException() 1 let g:exception = v:exception endfunction"/tmp/vuFPY0V/193" [noeol] 4L, 80C Pattern not found: ^\s*$ "/tmp/vuFPY0V/193"1L, 36C written "test49.in" 30L, 632C function FuncThrowpoint() 1 let g:throwpoint = v:throwpoint endfunction"/tmp/vuFPY0V/194" [noeol] 4L, 83C Pattern not found: ^\s*$ "/tmp/vuFPY0V/194"1L, 38C written "test49.in" 30L, 632C function T(arg, line) 1 if a:line == 2 2throw a:arg" in line 2 3 elseif a:line == 4 4throw a:arg" in line 4 5 elseif a:line == 6 6throw a:arg" in line 6 7 elseif a:line == 8 8throw a:arg" in line 8 9 endif endfunction"/tmp/vuFPY0V/195"[noeol] 12L, 341C 9 substitutions on 9 lines 8 substitutions on 8 lines Pattern not found: ^\s*$ "/tmp/vuFPY0V/195"9L, 292C written "test49.in" 30L, 632C function G(arg, line) 1 call T(a:arg, a:line) endfunction"/tmp/vuFPY0V/196"[noeol] 4L, 69C Pattern not found: ^\s*$ "/tmp/vuFPY0V/196"1L, 30C written "test49.in" 30L, 632C function F(arg, line) 1 call G(a:arg, a:line) endfunction"/tmp/vuFPY0V/197"[noeol] 4L, 69C Pattern not found: ^\s*$ "/tmp/vuFPY0V/197"1L, 30C written "test49.in" 30L, 632C *** Test 57: OK (2147450880) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/198[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/198" 87L, 1700C appended88L, 1722C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/199[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/199"' -c 'breakadd func 4 T' -S /tmp/vuFPY0V/19 8[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/199" 8L, 36C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 58: OK (624945) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/200[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/200" 293L, 5789C appended294L, 5811C 3 substitutions on 3 lines "/tmp/vuFPY0V/200"294L, 5808C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/201[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraV imBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/201"' -c 'breakadd file 115 /tmp/vuFPY0V/200 '-c 'breakadd file 225 /tmp/vuFPY0V/200' -S /tmp/vuFPY0V/200[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/201"28L, 162C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 59: OK (2038431743) "/n/o/n/w/r/i/t/a/b/l/e/_/f/i/l/e" "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/202[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/202" 33L, 765C appended34L, 787C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/203[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/203"' -c 'breakadd file 7 /tmp/vuFPY0V/202' -S /tmp/vuFPY0V/202[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/203" 3L, 27C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 60: OK (311511339) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/204[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/204" 115L, 2272C appended116L, 2294C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/205[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/205"' -c 'breakadd file 8 /tmp/v uFPY0V/204' -c 'breakadd file 36 /tmp/vuFPY0V/204' -c 'breakadd file 40 /tmp/vuFPY0V/204' -c 'br eakadd file 69 /tmp/vuFPY0V/204' -c 'breakadd file 95 /tmp/vuFPY0V/204' -c 'breakadd file 97 /tm p/vuFPY0V/204' -S /tmp/vuFPY0V/204[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/205" 14L, 81C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 61: OK (374889517) function F() 1 while 1 2 " Missing :endwhile endfunction"/tmp/vuFPY0V/206"[noeol] 5L, 73C Pattern not found: ^\s*$ "/tmp/vuFPY0V/206"2L, 40C written "test49.in" 30L, 632C *** Test 62: OK (286331153) "/i/m/p/o/s/s/i/b/l/e" Error detected while processing /sources/vim74/src/testdir/test49.vim: line 6342: "/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing *** Test 63: OK (236978127) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/207[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/207" 149L, 2828C appended150L, 2850C 6 substitutions on 6 lines "/tmp/vuFPY0V/207"150L, 2844C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/208[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/208"' -c 'breakadd file 63 /tmp/vuFPY0V/207' -S /tmp/vuFPY0V/207[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/208" 16L, 97C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 64: OK (1499645335) *** Test 65: OK (70187) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/209[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/209" 78L, 1520C appended79L, 1542C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/210[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/210"' -c 'breakadd func 8 F' -S /tmp/vuFPY0V/20 9[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/210" 6L, 22C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** 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) function F0() endfunction function F1() endfunction *** Test 73: OK (9032615) "/tmp/vuFPY0V/211" [New File] "test49.in" 30L, 632C "/tmp/vuFPY0V/212" [New File] "test49.in" 30L, 632C *** Test 74: OK (224907669) *** Test 75: OK (2000403408) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/213[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/213" 253L, 6369C appended254L, 6391C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/214[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvi minfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/214"' -c 'breakadd func 2 INT' -S /tmp/vuFPY0V/213[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/214" 28L, 167C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 76: OK (1610087935) Error detected while processing function ERR: line 2: E492: Not an editor command: asdf E492: Not an editor command: asdf E492: Not an editor command: asdf *** Test 77: OK (1388671) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/215[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/215" 161L, 4543C appended162L, 4565C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/216[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/216"' -S /tmp/vuFPY0V/215[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/216" 1L, 10C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 78: OK (134217728) Error detected while processing function NEXT: line 1: E121: Undefined variable: novar E15: Invalid expression: novar | Xloop 1 E121: Undefined variable: novar E488: Trailing characters E108: No such variable: "novar" E488: Trailing characters E121: Undefined variable: novar E15: Invalid expression: novar E475: Invalid argument: {novar} | Xloop 1 E121: Undefined variable: novar E15: Invalid expression: novar E475: Invalid argument: { novar} | Xloop 1 *** Test 79: OK (70288929) Error detected while processing /sources/vim74/src/testdir/test49.vim: line 8828: E584: :elseif after :else: elseif 1 ||| 2 line 8838: E584: :elseif after :else: elseif 1 ||| 2 line 8846: E582: :elseif without :if: elseif 1 ||| 2 line 8854: E582: :elseif without :if: elseif 1 ||| 2 *** Test 80: OK (17895765) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/217[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/217" 15L, 272C appended16L, 294C16L, 293C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/218[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/218"' -S /tmp/vuFPY0V/217[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/218" 2L, 4C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/219[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/219" 12L, 227C appended13L, 249C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/220[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/220"' -c 'breakadd file 8 /tmp/vuFPY0V/219' -S /tmp/vuFPY0V/219[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/220" 2L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 81: OK (387) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/221[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/221" 20L, 417C appended21L, 439C21L, 438C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/222[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/222"' -S /tmp/vuFPY0V/221[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/222" 1L, 2C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/223[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/223" 24L, 480C appended25L, 502C25L, 501C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/224[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/224"' -S /tmp/vuFPY0V/223[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/224" 1L, 4C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/225[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/225" 17L, 390C appended18L, 412C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/226[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/226"' -c 'breakadd file 7 /tmp/vuFPY0V/225' -S /tmp/vuFPY0V/225[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/226" 1L, 6C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/227[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/227" 21L, 444C appended22L, 466C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/228[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/228"' -c 'breakadd func 6 I' -S /tmp/vuFPY0V/22 7[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/228" 1L, 8C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 82: OK (8454401) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/229[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/229" 17L, 307C appended18L, 329C18L, 328C written "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/230[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi n= 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/230"' -S /tmp/vuFPY0V/229[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/230" 3L, 7C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/231[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/231" 14L, 266C appended15L, 288C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/232[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB egin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/232"' -c 'breakadd file 8 /tmp/vuFPY0V/231' -S /tmp/vuFPY0V/231[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/232" 3L, 13C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 83: OK (2835) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/233[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/233" 154L, 3580C appended155L, 3602C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/234[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraV imBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/234"' -c 'breakadd func 1 INT' -S /tmp/vuFPY 0V/233[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/234"18L, 118C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 84: OK (934782101) TMP "/tmp/vuFPY0V/235" [noeol] 2L, 6C/ "test49.in" 30L, 632C "/n/o/n/e/x/i/s/t/e/n/t" "/tmp/vuFPY0V/237" 1L, 1C "test49.in" 30L, 632C :!echo XYZ >/tmp/vuFPY0V/238[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/239" [New File] "test49.in" 30L, 632C *** Test 85: OK (198689) Error detected while processing /sources/vim74/src/testdir/test49.vim: line 9612: E123: Undefined function: F Make_amiga.mak (1 of 1): tango down line 9616: E193: :endfunction not inside a function Error detected while processing function ExecAsScript..MakeScript: line 3: E123: Undefined function: F "/tmp/vuFPY0V/240" c[noeol] 4L, 106C search hit BOTTOM, continuing at TOP line 10: E486: Pattern not found: .*F(.*) search hit BOTTOM, continuing at TOP line 11: E486: Pattern not found: ^\d*\s*endfunction\> 4 substitutions on 4 lines "/tmp/vuFPY0V/240"3L, 106C written "test49.in" 30L, 632C Error detected while processing /tmp/vuFPY0V/240: line 1: E492: Not an editor command: Error detected while processing function ExecAsScript..MakeScript: line 2: E492: Not an editor command: line 3: line 3: E492: Not an editor command: E123: Undefined function: F Error detected while processing /sources/vim74/src/testdir/test49.vim: line 9622: E130: Unknown function: F *** Test 86: OK (0) 5 *** Test 87: OK (0) "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!echo 'source /tmp/vuFPY0V/3' >/tmp/vuFPY0V/241[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h=[?25l/^\s*if\s\+ExtraVim(.*)/+ 1 "/tmp/vuFPY0V/241" 151L, 3929C appended152L, 3951C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C :!>/tmp/vuFPY0V/242[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l:!echo 'q^Mq^Mq^Mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let Ext raVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vuFPY0V/242"' -c 'breakadd func 5 ThrowOnInterrup t' -S /tmp/vuFPY0V/241[?1l>[?12l[?25h[?1049l shell returned 1 Press ENTER or type command to continue[?1049h[?1h=[?25l"/tmp/vuFPY0V/242" 16L, 281C "/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C "test49.in" 30L, 632C *** Test 88: OK (50443995) Press ENTER or type command to continueThis 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: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l98 more lines*** 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)[?12l[?25h[?25l:[?12l[?25h.-,$w! test.out [?25l"test.out" [New] 99L, 2869C written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" make valgrind happy [?25l[?12l[?25h[?25l:[?12l[?25hredir => funclist [?25l[?12l[?25h[?25l:[?12l[?25hsilent func [?25l[?12l[?25h[?25l:[?12l[?25hredir END [?25l[?12l[?25h[?25l:[?12l[?25hfor line in split(funclist, "\n") [?25l : [?12l[?25h: let name = matchstr(line, 'function \zs[A-Z]\w*\ze(') [?25l: [?12l[?25h: if name != '' [?25l: [?12l[?25h: exe "delfunc " . name [?25l: [?12l[?25h: endif [?25l: [?12l[?25h:endfor [?25lThis 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"[?12l[?25h[?25l:[?12l[?25hfor v in keys(g:) [?25l : [?12l[?25h: silent! exe "unlet " . v [?25l: [?12l[?25h:endfor [?25lThis is a test of the script language.[?12l[?25h[?25l:[?12l[?25hunlet v [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test51.failed test.ok test.out X* viminfo cp test51.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test51.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test51.in" 36 lines, 808 charactersTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for ":highlight". vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 31 lines, 746 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" basic test if ":highlight" doesn't crash [?25l[?12l[?25h[?25l:[?12l[?25hhighlight [?25l SpecialKey xxx term=bold ctermfg=4 guifg=Blue NonTextxxx term=bold cterm=bold ctermfg=4 gui=bold guifg=Blue Directory xxx term=bold ctermfg=4 guifg=Blue ErrorMsgxxx term=standout cterm=bold ctermfg=7 ctermbg=1 guifg=White guibg=Red IncSearch xxx term=reverse cterm=reverse gui=reverse Searchxxx term=reverse ctermfg=0 ctermbg=3 guibg=Yellow MoreMsgxxx term=bold ctermfg=2 gui=bold guifg=SeaGreen ModeMsgxxx term=bold cterm=bold gui=bold LineNrxxx term=underline ctermfg=3 guifg=Brown CursorLineNr xxx term=bold ctermfg=3 gui=bold guifg=Brown Questionxxx term=standout ctermfg=2 gui=bold guifg=SeaGreen StatusLine xxx term=bold,reverse cterm=bold,reverse gui=bold,reverse StatusLineNC xxx term=reverse cterm=reverse gui=reverse VertSplit xxx term=reverse cterm=reverse gui=reverse Titlexxx term=bold ctermfg=5 gui=bold guifg=Magenta Visualxxx term=reverse cterm=reverse guibg=LightGrey VisualNOS xxx cleared WarningMsg xxx term=standout ctermfg=1 guifg=Red WildMenuxxx term=standout ctermfg=0 ctermbg=3 guifg=Black guibg=Yellow Foldedxxx term=standout ctermfg=4 ctermbg=7 guifg=DarkBlue guibg=LightGrey FoldColumn xxx term=standout ctermfg=4 ctermbg=7 guifg=DarkBlue guibg=Grey DiffAddxxx term=bold ctermbg=4 guibg=LightBlue DiffChange xxx term=bold ctermbg=5 guibg=LightMagenta DiffDelete xxx term=bold cterm=bold ctermfg=4 ctermbg=6 gui=bold guifg=Blue guibg=LightCyan DiffTextxxx term=reverse cterm=bold ctermbg=1 gui=bold guibg=Red SignColumn xxx term=standout ctermfg=4 ctermbg=7 guifg=DarkBlue guibg=Grey Concealxxx cleared SpellBadxxx term=reverse ctermbg=1 gui=undercurl guisp=Red SpellCapxxx term=reverse ctermbg=4 gui=undercurl guisp=Blue SpellRare xxx term=reverse ctermbg=5 gui=undercurl guisp=Magenta SpellLocal xxx term=underline ctermbg=6 gui=undercurl guisp=DarkCyan Pmenuxxx ctermfg=0 ctermbg=5 guibg=LightMagenta PmenuSelxxx ctermfg=0 ctermbg=7 guibg=Grey PmenuSbar xxx ctermbg=7 guibg=Grey PmenuThumb xxx ctermbg=0 guibg=Black TabLinexxx term=underline cterm=underline ctermfg=0 ctermbg=7 gui=underline guibg=LightGrey TabLineSel xxx term=bold cterm=bold gui=bold TabLineFill xxx term=reverse cterm=reverse gui=reverse CursorColumn xxx term=reverse ctermbg=7 guibg=Grey90 CursorLine xxx term=underline cterm=underline guibg=Grey90 ColorColumn xxx term=reverse ctermbg=1 guibg=LightRed MatchParen xxx term=reverse ctermbg=6 guibg=Cyan Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Search [?25l Searchxxx term=reverse ctermfg=0 ctermbg=3 guibg=Yellow Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" test setting colors. [?25lTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h" test clearing one color and all doesn't generate error or warning [?25l[?12l[?25h[?25l:[?12l[?25hhi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#00ff00 guibg=Cyan [?25lE418: Illegal value: guifg=#00ff00[?12l[?25h[?25l:[?12l[?25hhi Group2 term= cterm= [?25lE418: Illegal value: cterm=[?12l[?25h[?25l:[?12l[?25hhi Group3 term=underline cterm=bold [?25l[?12l[?25h[?25l:[?12l[?25hredir! >test.out [?25l[?12l[?25h[?25l:[?12l[?25hhi NewGroup [?25l NewGroupxxx term=bold cterm=italic ctermfg=4 ctermbg=7 Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Group2 [?25l Group2xxx cleared Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Group3 [?25l Group3xxx term=underline cterm=bold Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi clear NewGroup [?25lTests for ":highlight". vim: set ft=vim : STARTTEST :so small.vim :" basic test if ":highlight" doesn't crash :highlight[?12l[?25h[?25l:[?12l[?25hhi NewGroup [?25l NewGroupxxx cleared Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Group2 [?25l Group2xxx cleared Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Group2 NONE [?25lTests for ":highlight". vim: set ft=vim : STARTTEST :so small.vim[?12l[?25h[?25l:[?12l[?25hhi Group2 [?25l Group2xxx cleared Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi clear [?25lTests 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hhi Group3 [?25l Group3xxx cleared Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hhi Crash term='asdf [?25lE475: Invalid argument: term='asdf Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lTests for ":highlight". vim: set ft=vim : STARTTEST[?12l[?25h[?25l:[?12l[?25h" filter ctermfg and ctermbg, the numbers depend on the terminal [?25l[?12l[?25h[?25l:[?12l[?25he test.out [?25l"test.out" 20 lines, 289 charactersNewGroup xxx term=bold cterm=italic ctermfg=4 ctermbg=7Group2 xxx clearedGroup3 xxx term=underline cterm=boldNewGroup xxx clearedGroup2 xxx clearedGroup2 xxx clearedGroup3 xxx clearedE475: Invalid argument: term='asdf ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h%s/ctermfg=\d*/ctermfg=2/ [?25l2 [?12l[?25h[?25l:[?12l[?25h%s/ctermbg=\d*/ctermbg=3/ [?25l3 [?12l[?25h[?25l:[?12l[?25h" filter out possibly translated error message [?25l[?12l[?25h[?25l:[?12l[?25h%s/E475: [^:]*:/E475:/ [?25lterm='asdf[?12l[?25h[?25l:[?12l[?25h" fix the fileformat [?25l[?12l[?25h[?25l:[?12l[?25hset ff& [?25l[?12l[?25h[?25l:[?12l[?25hwq! [?25l"test.out" 20 lines, 271 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test52.failed test.ok test.out X* viminfo cp test52.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test52.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test52.in" 65 lines, 1645 charactersTests 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for reading and writing files with conversion for Win32.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 57 lines, 1333 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25h" make this a dummy test for non-Win32 systems [?25l[?12l[?25h[?25l:[?12l[?25hif !has("win32") | e! test.ok | wq! test.out | endif [?25l"test.ok" 18 lines, 1374 characters "test.out" [New File] 18 lines, 1374 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test53.failed test.ok test.out X* viminfo cp test53.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test53.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test53.in" 78 lines, 1336 charactersTests 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() STARTTEST :so small.vim /^start:/ da" 0va'a'rx 02f`da` 0fXdi" 03f'vi'ry :set quoteescape=+*- di` $F"va"oha"i"rz :" /^ first match) :put =matchstr(\"abcd\", \".\", 0, -1) " a :put =match(\"abcd\", \".\", 0, 5) " -1 :put =match(\"abcd\", \".\", 0, -1) " 0 /^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^[ :/^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 -asdfXasdfasdf-[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for string and html text objects. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 42 lines, 644 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25h^start:/ [?25l[?12l[?25h[?25lfo[?12l[?25h [?25l[?12l[?25h[?25l'foo'[?12l[?25h[?25l 'bar'[?12l[?25h[?25l xxxxxxxxxxxx [?12l[?25h [?25lblah[?12l[?25h [?25l"[?12l[?25h [?25l[?12l[?25h[?25l' rep[?12l[?25h[?25lyyyyy[?12l[?25h[?25l:[?12l[?25hset quoteescape=+*- [?25l[?12l[?25h[?25l` b`la[?12l[?25h[?25l[?12l[?25h[?25l" sdf"[?12l[?25h[?25l" [?12l[?25h[?25l"[?12l[?25h[?25l asdf" sdf [?12l[?25h[?25lah" sdf " voo "[?12l[?25h[?25lzzzzzzzzzzzzzzzzzzzzzzzzzzzz voo "[?12l[?25h [?25l:[?12l[?25h" [?25l[?12l[?25h[?25l/[?12l[?25h^asdf-[?12l[?25h[?25l -asdXasdfasdf-[?12l[?25h [?25l-[?12l[?25h[?25l -asdfXasdfasdf- -[?12l[?25h[?25lasdf-[?12l[?25h[?25l -asdXasdfasdf-[?12l[?25h [?25l --[?12l[?25h[?25l  <[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hput =matchstr(\"abcd\", \".\", 0, 2) " b [?25l b[?12l[?25h[?25l :[?12l[?25hput =matchstr(\"abcd\", \"..\", 0, 2) " bc [?25l bc[?12l[?25h[?25l :[?12l[?25hput =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match) [?25l c[?12l[?25h[?25l :[?12l[?25hput =matchstr(\"abcd\", \".\", 0, -1) " a [?25l a[?12l[?25h[?25l :[?12l[?25hput =match(\"abcd\", \".\", 0, 5) " -1 [?25l -1[?12l[?25h[?25l :[?12l[?25hput =match(\"abcd\", \".\", 0, -1) " 0 [?25l 0[?12l[?25h[?25l /[?12l[?25h^foobar [?25lSEARCH: foobar[?12l[?25h[?25lfooba[?12l[?25h[?25l searchmatch[?12l[?25h[?25l /[?12l[?25hone\_s*two\_s [?25l one[?12l[?25h[?25l :[?12l[?25h1 [?25lTests 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() STARTTEST :so small.vim /^start:/ da" 0va'a'rx 02f`da` 0fXdi"[?12l[?25h[?25l-- -asdfasdf- -- b bc c a -1 0 SEARCH: searchmatch one two[?12l[?25h[?25labcdx | abcdx | abcdx join[?12l[?25h [?25l /[?12l[?25h[a]bcdx [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l:[?12l[?25h1 [?25lTests 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() STARTTEST :so small.vim /^start:/ da" 0va'a'rx 02f`da` 0fXdi" 03f'vi'ry[?12l[?25h[?25l-- -asdfasdf- -- b bc c a -1 0 SEARCH: searchmatch abcdx | abcdx | abcdx[?12l[?25h[?25l | abcdx[?12l[?25h[?25l /[?12l[?25hjoin [?25l join[?12l[?25h[?25l /[?12l[?25h$ [?25l[?12l[?25h [?25ljoin [?12l[?25h[?25llines[?12l[?25h[?25l zero width pattern[?12l[?25h[?25l /[?12l[?25h\>\zs [?25l[?12l[?25h [?25lzero[?12l[?25h[?25lwidth pattern[?12l[?25h[?25l/[?12l[?25h^ [?25l delete first and last chars[?12l[?25h[?25l[?12l[?25h[?25lelete first and last chars[?12l[?25h[?25l /[?12l[?25h\zs [?25l[?12l[?25h[?25l[?12l[?25h[?25l[?12l[?25h[?25l/[?12l[?25h[u]niquepattern/s [?25l uniquepattern uniquepattern[?12l[?25h[?25l[?12l[?25h[?25lu[?12l[?25h[?25lniquepatter[?12l[?25h[?25l uniquepattern[?12l[?25h[?25l my very excellent mother just served us nachos [?12l[?25h[?25l /[?12l[?25hmother [?25l[?12l[?25h[?25l:[?12l[?25hset selection=exclusive [?25l[?12l[?25h[?25lngoose just served us nachos[?12l[?25h[?25l/[?12l[?25hi [?25l for (i=0; i<=10; i++)[?12l[?25h[?25lj[?12l[?25h[?25l end:[?12l[?25h[?25l :[?12l[?25h/^start:/,/^end:/wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 30 lines, 395 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test54.failed test.ok test.out X* viminfo cp test54.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test54.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test54.in" 22 lines, 658 charactersSome tests for buffer-local autocommands STARTTEST :so small.vim :e xx :if has("vms") : !del test.out.* : au BufLeave :!write sys$output "buffer-local autommand in %" > test.out :else : !rm -f test.out : au BufLeave :!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 :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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lSome tests for buffer-local autocommands[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 15 lines, 555 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25he xx [?25l"xx" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hif has("vms") [?25l : [?12l[?25h: !del test.out.* [?25l: [?12l[?25h: au BufLeave :!write sys$output "buffer-local autommand in %" > test.out [?25l: [?12l[?25h:else [?25l: [?12l[?25h: !rm -f test.out [?25l:!rm -f test.out[?1l>[?12l[?25h[?1049l Press ENTER or type command to continue[?1049h[?1h= [?25l: :[?12l[?25h au BufLeave :!echo buffer-local autommand in %>> test.out [?25l: [?12l[?25h:endif [?25l:[?12l[?25he somefile " here, autocommand for xx shall write test.out [?25l:!echo buffer-local autommand in xx>> test.out [?12l[?25h[?25l"somefile" [New File] Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h " but autocommand shall not apply to buffer named [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hbwipe xx " here, autocommand shall be auto-deleted [?25l[?12l[?25h[?25l:[?12l[?25he xx " nothing shall be written [?25l"xx" [New File][?12l[?25h[?25l:[?12l[?25he somefile " nothing shall be written [?25l"somefile" [New File][?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l # For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test55.failed test.ok test.out X* viminfo cp test55.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test55.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test55.in" 395 lines, 8118 charactersTests 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 :"[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for List and Dictionary types. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 389 lines, 8032 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:$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^R=a^M^[:" :lang C :redir => a :try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry :redir END o^R=a^M^[:" :" :/^start:/,$wq! test.out ENDTEST start:[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hfun Test(...) [?25l : [?12l[?25h:lang C [?25l: [?12l[?25h:" Creating List directly with different types [?25l: [?12l[?25h:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25h:$put =string(l[-1]) [?25l: [?12l[?25h:$put =string(l[-4]) [?25l: [?12l[?25h:try [?25l: [?12l[?25h: $put =string(l[-5]) [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:14] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" List slices [?25l: [?12l[?25h:$put =string(l[:]) [?25l: [?12l[?25h:$put =string(l[1:]) [?25l: [?12l[?25h:$put =string(l[:-2]) [?25l: [?12l[?25h:$put =string(l[0:8]) [?25l: [?12l[?25h:$put =string(l[8:-1]) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" List identity [?25l: [?12l[?25h:let ll = l [?25l: [?12l[?25h:let lx = copy(l) [?25l: [?12l[?25h:try [?25l: [?12l[?25h: $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l isnot lx) [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Creating Dictionary directly with different types [?25l: [?12l[?25h:let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},} [?25l: [?12l[?25h:$put =string(d) . d.1 [?25l: [?12l[?25h:$put =string(sort(keys(d))) [?25l: [?12l[?25h:$put =string (values(d)) [?25l: [?12l[?25h:for [key, val] in items(d) [?25l: [?12l[?25h: $put =key . ':' . string(val) [?25l: [?12l[?25h: unlet key val [?25l: [?12l[?25h:endfor [?25l: [?12l[?25h:call extend (d, {3:33, 1:99}) [?25l: [?12l[?25h:call extend(d, {'b':'bbb', 'c':'ccc'}, "keep") [?25l: [?12l[?25h:try [?25l: [?12l[?25h: call extend(d, {3:333,4:444}, "error") [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:15] . v:exception[-1:-1] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:$put =string(d) [?25l: [?12l[?25h:call filter(d, 'v:key =~ ''[ac391]''') [?25l: [?12l[?25h:$put =string(d) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Dictionary identity [?25l: [?12l[?25h:let dd = d [?25l: [?12l[?25h:let dx = copy(d) [?25l: [?12l[?25h:try [?25l: [?12l[?25h: $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d isnot dx) [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Changing var type should fail [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let d = [] [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:14] . v:exception[-1:-1] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let l = {} [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:14] . v:exception[-1:-1] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" removing items with :unlet [?25l: [?12l[?25h:unlet l[2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25h:let l = range(8) [?25l: [?12l[?25h:try [?25l: [?12l[?25h:unlet l[:3] [?25l: [?12l[?25h:unlet l[1:] [?25l: [?12l[?25h:catch [?25l: [?12l[?25h:$put =v:exception [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:unlet d.c [?25l: [?12l[?25h:unlet d[-1] [?25l: [?12l[?25h:$put =string(d) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" removing items out of range: silently skip items that don't exist [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[2:1] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[2:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[2:3] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[2:4] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[2:5] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-1:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-2:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-3:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-4:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-5:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25hlet l = [0, 1, 2, 3] [?25l: [?12l[?25h:unlet l[-6:2] [?25l: [?12l[?25h:$put =string(l) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" assignment to a list [?25l: [?12l[?25h:let l = [0, 1, 2, 3] [?25l: [?12l[?25h:let [va, vb] = l[2:3] [?25l: [?12l[?25h:$put =va [?25l: [?12l[?25h:$put =vb [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let [va, vb] = l [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:14] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let [va, vb] = l[1:1] [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:14] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" manipulating a big Dictionary (hashtable.c has a border of 1000 entries) [?25l: [?12l[?25h:let d = {} [?25l: [?12l[?25h:for i in range(1500) [?25l: [?12l[?25h: let d[i] = 3000 - i [?25l: [?12l[?25h:endfor [?25l: [?12l[?25h:$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499] [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let n = d[1500] [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '') [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" lookup each items [?25l: [?12l[?25h:for i in range(1500) [?25l: [?12l[?25h: if d[i] != 3000 - i [?25l: [?12l[?25h: $put =d[i] [?25l: [?12l[?25h: endif [?25l: [?12l[?25h:endfor [?25l: [?12l[?25h: let i += 1 [?25l: [?12l[?25h:" delete even items [?25l: [?12l[?25h:while i >= 2 [?25l: [?12l[?25h: let i -= 2 [?25l: [?12l[?25h: unlet d[i] [?25l: [?12l[?25h:endwhile [?25l: [?12l[?25h:$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1] [?25l: [?12l[?25h:" delete odd items, checking value, one intentionally wrong [?25l: [?12l[?25h:let d[33] = 999 [?25l: [?12l[?25h:let i = 1 [?25l: [?12l[?25h:while i < 1500 [?25l: [?12l[?25h: if d[i] != 3000 - i [?25l: [?12l[?25h: $put =i . '=' . d[i] [?25l: [?12l[?25h: else [?25l: [?12l[?25h: unlet d[i] [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: let i += 2 [?25l: [?12l[?25h:endwhile [?25l: [?12l[?25h:$put =string(d) " must be almost empty now [?25l: [?12l[?25h:unlet d [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Dictionary function [?25l: [?12l[?25h:let dict = {} [?25l: [?12l[?25h:func dict.func(a) dict [?25l: [?12l[?25h: $put =a:a . len(self.data) [?25l: [?12l[?25h:endfunc [?25l: [?12l[?25h:let dict.data = [1,2,3] [?25l: [?12l[?25h:call dict.func("len: ") [?25l: [?12l[?25h:let x = dict.func("again: ") [?25l: [?12l[?25h:try [?25l: [?12l[?25h: let Fn = dict.func [?25l: [?12l[?25h: call Fn('xxx') [?25l: [?12l[?25h:catch [?25l: [?12l[?25h: $put =v:exception[:15] [?25l: [?12l[?25h:endtry [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Function in script-local List or Dict [?25l: [?12l[?25h:let g:dict = {} [?25l: [?12l[?25h:function g:dict.func() dict [?25l: [?12l[?25h: $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf') [?25l: [?12l[?25h:endfunc [?25l: [?12l[?25h:let g:dict.foo = ['-', 2, 3] [?25l: [?12l[?25h:call insert(g:dict.foo, function('strlen')) [?25l: [?12l[?25h:call g:dict.func() [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Nasty: remove func from Dict that's being called (works) [?25l: [?12l[?25h:let d = {1:1} [?25l: [?12l[?25h:func d.func(a) [?25l:[?12l[?25h: return "a:". a:a [?25l:[?12l[?25h:endfunc [?25l:[?12l[?25h:$put =d.func(string(remove(d, 'func'))) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" Nasty: deepcopy() dict that refers to itself (fails when noref used) [?25l:[?12l[?25h:let d = {1:1, 2:2} [?25l:[?12l[?25h:let l = [4, d, 6] [?25l:[?12l[?25h:let d[3] = l [?25l:[?12l[?25h:let dc = deepcopy(d) [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let dc = deepcopy(d, 1) [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put =v:exception[:14] [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:let l2 = [0, l, l, 3] [?25l:[?12l[?25h:let l[1] = l2 [?25l:[?12l[?25h:let l3 = deepcopy(l2) [?25l:[?12l[?25h:$put ='same list: ' . (l3[1] is l3[2]) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" Locked variables [?25l:[?12l[?25h:for depth in range(5) [?25l:[?12l[?25h: $put ='depth is ' . depth [?25l:[?12l[?25h: for u in range(3) [?25l:[?12l[?25h: unlet l [?25l:[?12l[?25h: let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}] [?25l:[?12l[?25h: exe "lockvar " . depth . " l" [?25l:[?12l[?25h: if u == 1 [?25l:[?12l[?25h: exe "unlockvar l" [?25l:[?12l[?25h: elseif u == 2 [?25l:[?12l[?25h: exe "unlockvar " . depth . " l" [?25l:[?12l[?25h: endif [?25l:[?12l[?25h: 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]") [?25l:[?12l[?25h: $put =ps [?25l:[?12l[?25h: let ps = '' [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[1][1][0] = 99 [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[1][1] = [99] [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[1] = [99] [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[2]['6'][7] = 99 [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[2][6] = {99: 99} [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l[2] = {99: 99} [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: try [?25l:[?12l[?25h: let l = [99] [?25l:[?12l[?25h: let ps .= 'p' [?25l:[?12l[?25h: catch [?25l:[?12l[?25h: let ps .= 'F' [?25l:[?12l[?25h: endtry [?25l:[?12l[?25h: $put =ps [?25l:[?12l[?25h: endfor [?25l:[?12l[?25h:endfor [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" a:000 function argument [?25l:[?12l[?25h:" first the tests that should fail [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let a:000 = [1, 2] [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put ='caught a:000' [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let a:000[0] = 9 [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put ='caught a:000[0]' [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let a:000[2] = [9, 10] [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put ='caught a:000[2]' [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let a:000[3] = {9: 10} [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put ='caught a:000[3]' [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:" now the tests that should pass [?25l:[?12l[?25h:try [?25l:[?12l[?25h: let a:000[2][1] = 9 [?25l:[?12l[?25h: call extend(a:000[2], [5, 6]) [?25l:[?12l[?25h: let a:000[3][5] = 8 [?25l:[?12l[?25h: let a:000[3]['a'] = 12 [?25l:[?12l[?25h: $put =string(a:000) [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put ='caught ' . v:exception [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" reverse() and sort() [?25l:[?12l[?25h:let l = ['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', [0, 1, 2], 'x8'] [?25l:[?12l[?25h:$put =string(reverse(l)) [?25l:[?12l[?25h:$put =string(reverse(reverse(l))) [?25l:[?12l[?25h:$put =string(sort(l)) [?25l:[?12l[?25h:$put =string(reverse(sort(l))) [?25l:[?12l[?25h:$put =string(sort(reverse(sort(l)))) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" splitting a string to a List [?25l:[?12l[?25h:$put =string(split(' aa bb ')) [?25l:[?12l[?25h:$put =string(split(' aa bb ', '\W\+', 0)) [?25l:[?12l[?25h:$put =string(split(' aa bb ', '\W\+', 1)) [?25l:[?12l[?25h:$put =string(split(' aa bb ', '\W', 1)) [?25l:[?12l[?25h:$put =string(split(':aa::bb:', ':', 0)) [?25l:[?12l[?25h:$put =string(split(':aa::bb:', ':', 1)) [?25l:[?12l[?25h:$put =string(split('aa,,bb, cc,', ',\s*', 1)) [?25l:[?12l[?25h:$put =string(split('abc', '\zs')) [?25l:[?12l[?25h:$put =string(split('abc', '\zs', 1)) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" compare recursively linked list and dict [?25l:[?12l[?25h:let l = [1, 2, 3, 4] [?25l:[?12l[?25h:let d = {'1': 1, '2': l, '3': 3} [?25l:[?12l[?25h:let l[1] = d [?25l:[?12l[?25h:$put =(l == l) [?25l:[?12l[?25h:$put =(d == d) [?25l:[?12l[?25h:$put =(l != deepcopy(l)) [?25l:[?12l[?25h:$put =(d != deepcopy(d)) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" compare complex recursively linked list and dict [?25l:[?12l[?25h:let l = [] [?25l:[?12l[?25h:call add(l, l) [?25l:[?12l[?25h:let dict4 = {"l": l} [?25l:[?12l[?25h:call add(dict4.l, dict4) [?25l:[?12l[?25h:let lcopy = deepcopy(l) [?25l:[?12l[?25h:let dict4copy = deepcopy(dict4) [?25l:[?12l[?25h:$put =(l == lcopy) [?25l:[?12l[?25h:$put =(dict4 == dict4copy) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" Pass the same List to extend() [?25l:[?12l[?25h:let l = [1, 2, 3, 4, 5] [?25l:[?12l[?25h:call extend(l, l) [?25l:[?12l[?25h:$put =string(l) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" Pass the same Dict to extend() [?25l:[?12l[?25h:let d = { 'a': {'b': 'B'}} [?25l:[?12l[?25h:call extend(d, d) [?25l:[?12l[?25h:$put =string(d) [?25l:[?12l[?25h:" [?25l:[?12l[?25h:" Pass the same Dict to extend() with "error" [?25l:[?12l[?25h:try [?25l:[?12l[?25h: call extend(d, d, "error") [?25l:[?12l[?25h:catch [?25l:[?12l[?25h: $put =v:exception[:15] . v:exception[-1:-1] [?25l:[?12l[?25h:endtry [?25l:[?12l[?25h:$put =string(d) [?25l:[?12l[?25h:endfun [?25l:$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^R=a^M^[:" :lang C :redir => a :try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry :redir END o^R=a^M^[:" :" :/^start:/,$wq! test.out ENDTEST start:[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hcall Test(1, 2, [3, 4], {5: 6}) " This may take a while [?25lError detected while processing function Test: line 87: E684: list index out of range: 1 line 102: E684: list index out of range: 2 Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25l0000-000 ppppppp 0000-000 ppppppp depth is 1 1000-000ppppppF0000-000ppppppp0000-000pppppppdepth is 2 1100-100ppFppFF0000-000ppppppp0000-000pppppppdepth is 31110-110pFFpFFF0010-010 pFppFpp0000-000pppppppdepth is 41111-111 FFFFFFF0011-011FFpFFpp0000-000ppppppp caught a:000caught a:000[0] caught a:000[2]caught a:000[3] [1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}]['x8', [0, 1, 2], 'foo6', 'foo', 4, 'xaaa', 2, 'A11', '-0'] ['x8', [0, 1, 2], 'foo6', 'foo', 4, 'xaaa', 2, 'A11', '-0'] ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 2, 4, [0, 1, 2]] [[0, 1, 2], 4, 2, 'xaaa', 'x8', 'foo6', 'foo', 'A11', '-0'] ['-0', 'A11', 'foo', 'foo6', 'x8', 'xaaa', 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', ''] 110011[1, 2, 3, 4, 5, 1, 2, 3, 4, 5] {'a': {'b': 'B'}} Vim(call):E737: a {'a': {'b': 'B'}}[?12l[?25h[?25l :[?12l[?25hdelfunc Test [?25l[?12l[?25h[?25l:[?12l[?25hunlet dict [?25l[?12l[?25h[?25l:[?12l[?25hcall garbagecollect(1) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" test for patch 7.3.637 [?25l[?12l[?25h[?25l:[?12l[?25hlet a = 'No error caught' [?25l[?12l[?25h[?25l:[?12l[?25htry|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry [?25l[?12l[?25h[?25l=[?12l[?25ha [?25l Vim(foldopen):E490:[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hlang C [?25l[?12l[?25h[?25l:[?12l[?25hredir => a [?25l[?12l[?25h[?25l:[?12l[?25htry|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry [?25lError detected while processing : E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hredir END [?25lppppppp 0000-000[?12l[?25h[?25l =[?12l[?25ha [?25lError detected while processing : E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h/^start:/,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 123 lines, 2133 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test56.failed test.ok test.out X* viminfo cp test56.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test56.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test56.in" 21 lines, 457 charactersTest 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 DoLast() call append(line('$'), "last line") endfun fun s:DoNothing() call append(line('$'), "nothing line") endfun nnoremap _x :call DoNothing()call DoLast()delfunc DoNothinggdelfunc DoLast end: ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for script-local function. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 7 lines, 120 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hset nocp viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25h/^start:/+1,/^end:/-1w! Xtest.vim [?25l"Xtest.vim" [New] 7L, 251C written[?12l[?25h[?25l:[?12l[?25hsource Xtest.vim [?25l[?12l[?25h[?25l:call 3_DoNothing()|call 3_DoLast()|delfunc 3_DoNothing|delfunc 3_DoLast nothing linelast line[?12l[?25h [?25l:[?12l[?25h$-1,$wq! test.out [?25l"test.out" [New] 2L, 23C written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test57.failed test.ok test.out X* viminfo cp test57.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test57.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test57.in" 500 lines, 3666 charactersTests 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for :sort command. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 30 lines, 842 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h/^t01:/+1,/^t02/-1sort [?25l 123b2 a123 a ababcbb1b b322 c123d c321d[?12l[?25h[?25l:[?12l[?25h/^t02:/+1,/^t03/-1sort n [?25l-24x-22[?12l[?25h[?25l:[?12l[?25h/^t03:/+1,/^t04/-1sort x [?25l0 a122 a123 b123 c123d 123b a321 b321 c321d b321 b321b b322b t03: hexadecimal[?12l[?25h[?25l :[?12l[?25h/^t04:/+1,/^t05/-1sort u [?25la ab abc 123b a122 a123 a321 b123 b321 b321 b321b b322b c123d c321d t04: alpha, unique[?12l[?25h[?25l :[?12l[?25h/^t05:/+1,/^t06/-1sort! [?25l123b a a122 a123 a321 ab abc b123 b321 b321b b322b c123d c321d t05: alpha, reverse c321d[?12l[?25h[?25l :[?12l[?25h/^t06:/+1,/^t07/-1sort! n [?25lc123d b322b b321b b321 b321 b123 abc ab a321 a123 a122 a 123b t06: numeric, reverse b322b[?12l[?25h[?25l :[?12l[?25h/^t07:/+1,/^t08/-1sort! u [?25lb321b b321 c321d b321 a321 123b c123d b123 a123 a122 a ab abc t07: unique, reverse c321d[?12l[?25h[?25l :[?12l[?25h/^t08:/+1,/^t09/-1sort o [?25lc123d b322b b321b b321 b123 abc ab a321 a123 a122 a 123b t08: octal abc[?12l[?25h[?25l :[?12l[?25h/^t09:/+1,/^t10/-1sort! x [?25lab a a122 a123 b123 c123d 123b a321 b321 c321d b321 b321b b322b t09: reverse, hexadecimal c321d[?12l[?25h[?25l :[?12l[?25h/^t10:/+1,/^t11/-1sort/./ [?25lc123d b322b b321b b321 b321 b123 a321 a123 a122 123b abc ab a t10: alpha, skip first character a[?12l[?25h[?25l :[?12l[?25h/^t11:/+1,/^t12/-1sort/../ [?25la122 a123 b123 123b c123d a321 b321 b321 b321b c321d b322b ab abc t11: alpha, skip first 2 characters ab[?12l[?25h[?25l :[?12l[?25h/^t12:/+1,/^t13/-1sort/../u [?25la a321 b321 b321 b321b c321d a122 b322b a123 b123 123b c123d abc t12: alpha, unique, skip first 2 characters ab[?12l[?25h[?25l :[?12l[?25h/^t13:/+1,/^t14/-1sort/./n [?25la a321 b321 b321b c321d a122 b322b a123 b123 123b c123d abc t13: numeric, skip first character abc[?12l[?25h[?25l :[?12l[?25h/^t14:/+1,/^t15/-1sort/./r [?25lab a a122 a123 b123 c123d 123b a321 b321 c321d b321 b321b b322b t14: alpha, sort on first character[?12l[?25h[?25l :[?12l[?25h/^t15:/+1,/^t16/-1sort/../r [?25l123b abc ab a a321 a123 a122 b321 b123 b322b b321 b321b c123d c321d t15: alpha, sort on first 2 characters a[?12l[?25h[?25l :[?12l[?25h/^t16:/+1,/^t17/-1sort/./rn [?25l123b a123 a122 a321 abc ab b123 b321 b322b b321 b321b c123d c321d t16: numeric, sort on first character abc[?12l[?25h[?25l :[?12l[?25h/^t17:/+1,/^t18/-1sort/\d/ [?25lab a a321 a123 a122 b321 b123 c123d 123b c321d b322b b321 b321b t17: alpha, skip past first digit abc[?12l[?25h[?25l :[?12l[?25h/^t18:/+1,/^t19/-1sort/\d/r [?25lab a a321 b321 b321 b321b c321d a122 b322b a123 b123 123b c123d t18: alpha, sort on first digit abc[?12l[?25h[?25l :[?12l[?25h/^t19:/+1,/^t20/-1sort/\d/n [?25lab a a123 a122 b123 c123d 123b a321 b321 c321d b322b b321 b321b t19: numeric, skip past first digit abc[?12l[?25h[?25l :[?12l[?25h/^t20:/+1,/^t21/-1sort/\d/rn [?25lab a a321 b321 c321d b321 b321b a122 b322b a123 b123 c123d 123b t20: numeric, sort on first digit abc[?12l[?25h[?25l :[?12l[?25h/^t21:/+1,/^t22/-1sort/\d\d/ [?25lab a a123 a122 b123 c123d 123b a321 b321 c321d b322b b321 b321b t21: alpha, skip past first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t22:/+1,/^t23/-1sort/\d\d/n [?25lab a a321 b321 b321 b321b c321d a122 b322b a123 b123 123b c123d t22: numeric, skip past first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t23:/+1,/^t24/-1sort/\d\d/x [?25lab a a321 b321 c321d b321 b321b a122 b322b a123 b123 c123d 123b t23: hexadecimal, skip past first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t24:/+1,/^t25/-1sort/\d\d/r [?25lab a a321 b321 b321 a122 a123 b123 b321b c321d b322b 123b c123d t24: alpha, sort on first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t25:/+1,/^t26/-1sort/\d\d/rn [?25lab a a123 a122 b123 c123d 123b a321 b321 c321d b322b b321 b321b t25: numeric, sort on first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t26:/+1,/^t27/-1sort/\d\d/rx [?25lab a a123 a122 b123 c123d 123b a321 b321 c321d b322b b321 b321b t26: hexadecimal, sort on first 2 digits abc[?12l[?25h[?25l :[?12l[?25h/^t27:/+1,/^t28/-1sort no [?25lE474: Invalid argument[?12l[?25h[?25l:[?12l[?25h/^t01:/,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 459 lines, 2739 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test58.failed test.ok test.out X* viminfo cp test58.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test58.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test58.in" 639 lines, 10884 charactersTests 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 iasd^[z=:" :" :" 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('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') :"[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for spell checking. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 109 lines, 2556 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST]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 ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeeceeeeeeeedneeeeeeeeeeep? 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[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Don't want to depend on the locale from the environment [?25l[?12l[?25h[?25l:[?12l[?25hset enc=latin1 [?25l]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 ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeeceeeeeeeedneeeeeeeeeeep? 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[?12l[?25h[?25l:[?12l[?25he! [?25l"test58.in" 639 lines, 10884 charactersTests for spell checking. vim: set ft=vim :STARTTESTso small.vim :":" Don't want to depend on the locale from the environment :set enc=latin1e!:"" Check using z= in new buffer (crash fixed by patch 7.4a.028). :set maxmem=512 spell iasd^[z=:"" 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 spelldum %yank quit $put $put ='-------' " find all bad words and suggestions for them exe '1;/^' . a:aff . 'good:' normal 0f:]s let prevbad = '' while 1let [bad, a] = spellbadword() if bad == '' || bad == prevbad || bad == 'badend' break endiflet 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') :"[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check using z= in new buffer (crash fixed by patch 7.4a.028). [?25l[?12l[?25h[?25l:[?12l[?25hset maxmem=512 spell [?25lWarning: Cannot find word list "en.latin1.spl" or "en.ascii.spl"[?12l[?25h[?25lasdTests for spell checking. vim: set ft=vim : as[?12l[?25h[?25lE756: Spell checking is not enabled[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Function to test .aff/.dic with list of good and bad words. [?25l[?12l[?25h[?25l:[?12l[?25hfunc TestOne(aff, dic) [?25l : [?12l[?25h set spellfile= [?25l: [?12l[?25h $put ='' [?25l: [?12l[?25h $put ='test '. a:aff . '-' . a:dic [?25l: [?12l[?25h " Generate a .spl file from a .dic and .aff file. [?25l: [?12l[?25h exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff' [?25l: [?12l[?25h exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic' [?25l: [?12l[?25h mkspell! Xtest Xtest [?25l: [?12l[?25h " use that spell file [?25l: [?12l[?25h set spl=Xtest.latin1.spl spell [?25l: [?12l[?25h " list all valid words [?25l: [?12l[?25h spelldump [?25l: [?12l[?25h %yank [?25l: [?12l[?25h quit [?25l: [?12l[?25h $put [?25l: [?12l[?25h $put ='-------' [?25l: [?12l[?25h " find all bad words and suggestions for them [?25l: [?12l[?25h exe '1;/^' . a:aff . 'good:' [?25l: [?12l[?25h normal 0f:]s [?25l: [?12l[?25h let prevbad = '' [?25l: [?12l[?25h while 1 [?25l: [?12l[?25h let [bad, a] = spellbadword() [?25l: [?12l[?25h if bad == '' || bad == prevbad || bad == 'badend' [?25l: [?12l[?25h break [?25l: [?12l[?25h endif [?25l: [?12l[?25h let prevbad = bad [?25l: [?12l[?25h let lst = spellsuggest(bad, 3) [?25l: [?12l[?25h normal mm [?25l: [?12l[?25h $put =bad [?25l: [?12l[?25h $put =string(lst) [?25l: [?12l[?25h normal `m]s [?25l: [?12l[?25h endwhile [?25l: [?12l[?25hendfunc [?25lasdTests 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 iasd^[z=:" :" :" 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:'[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('1', '1') [?25lWarning: Cannot find word list "en.latin1.spl" or "en.ascii.spl" "Xtest.aff" [New File] 46 lines, 754 characters written "Xtest.dic" [New File] 11 lines, 71 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 29 of 127 nodes; 98 (77%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 490 bytes Reading back spell file... Performing soundfolding... Total number of words: 16 Number of words after soundfolding: 16 Compressing word tree... Compressed 39 of 104 nodes; 65 (62%) remaining Writing suggestion file Xtest.latin1.sug ... Estimated runtime memory use: 357 bytes 17 lines yanked 17 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h$put =soundfold('goobledygoook') [?25lTest NOSLITSUGS 8affstart SET ISO8859-1 NOSPLITSUGS 8affend 8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badendtest output:test 1-1# file: Xtest.latin1.spl CommentdeoldéôrinputOKoutputoutputsouttestputputstesttestentestntheukwrong-------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[?12l[?25h[?25l :[?12l[?25h$put =soundfold('kóopërÿnôven') [?25l kepereneven[?12l[?25h[?25l :[?12l[?25h$put =soundfold('oeverloos gezwets edale') [?25l everles gesvets etele[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" and now with SAL instead of SOFO items; test automatic reloading [?25l[?12l[?25h[?25lasdTests 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 iasd^[z=:" :" :" 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('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') :"[?12l[?25h[?25l:[?12l[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff [?25l"Xtest.aff" 151 lines, 3412 characters written[?12l[?25h[?25l:[?12l[?25hmkspell! Xtest Xtest [?25lReading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 29 of 127 nodes; 98 (77%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 490 bytes Performing soundfolding... Total number of words: 16 Number of words after soundfolding: 15 Compressing word tree... Compressed 33 of 75 nodes; 42 (56%) remaining Writing suggestion file Xtest.latin1.sug ... Estimated runtime memory use: 241 bytes Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h$put =soundfold('goobledygoook') [?25l8affstart SET ISO8859-1 NOSPLITSUGS 8affend 8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoobadendtest output:test 1-# file: Xtes.latin1.spl CommentdeoldéôrinputOKoutput outputs outtestputputstesttestentestnthe endukwrong-------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'] gebletegekkepereneveeverles gesvets etelekbltykk[?12l[?25h[?25l :[?12l[?25h$put =soundfold('kóopërÿnôven') [?25l kprnfn[?12l[?25h[?25l :[?12l[?25h$put =soundfold('oeverloos gezwets edale') [?25l *fls kswts tl[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" also use an addition file [?25l[?12l[?25h[?25lasdTests 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 iasd^[z=:" :" :" 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('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') :"[?12l[?25h[?25l:[?12l[?25h/^addstart/+1,/^addend/-1w! Xtest.latin1.add [?25l"Xtest.latin1.add" [New File] 3 lines, 38 characters written[?12l[?25h[?25l:[?12l[?25hmkspell! Xtest.latin1.add.spl Xtest.latin1.add [?25lReading word file Xtest.latin1.add ... Compressing word tree... Compressed 0 of 29 nodes; 29 (100%) remaining Writing spell file Xtest.latin1.add.spl ... Done! Estimated runtime memory use: 145 bytes Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hset spellfile=Xtest.latin1.add [?25lasdTests for spell checking. vim: set ft=vim : STARTTEST :so small.vim :" :" Don't want to depend on the locale from the environment[?12l[?25h[?25l/[?12l[?25h^test2: [?25lSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lNOSPLITSUGS 8affend 8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_us.latin1.spl [?25l[?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l8affend 8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25lSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_gb.latin1.spl [?25lelequint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 search hit BOTTOM, continuing at TOP[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l8dicstart 1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25lSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l1234 foo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_nz.latin1.spl [?25lelequint elekwint elekwint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lfoo bar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25lSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lbar faabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_ca.latin1.spl [?25lelequint elekwint elekwint elequint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lfaabar 8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25lSFX 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 déôl 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ï mïfoo mïbar mïmï lala mïla lamï foola labar badend Tests for compounding. 4affstart SET ISO8859-1 FOL àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l8dicend 8good: foo bar faabar bad: foobar barfoo badend test output: test 1-1 # file: Xtest.latin1.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 [?12l[?25h[?25l :[?12l[?25hunlet str a [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Postponed prefixes [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('2', '1') [?25l"Xtest.aff" 44 lines, 447 characters written "Xtest.dic" 11 lines, 71 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 10 of 98 nodes; 88 (89%) remaining Compressed 0 of 13 nodes; 13 (100%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 505 bytes 17 lines yanked 17 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lPFX 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 9MAP aàáâãäå MAP eèéêë MAP iìíîï MAP oòóôõö MAP uùúûü MAP nñ MAP cçMAP yÿý MAP sß 2affend2good: putsbad: inputs comment ok Ok end the. test déôl badendaddstart/regions=usgbnz elequint/2elekwint/3 addendtest2:elequint test elekwint test elekwent asdfTest rules for compounding.3affstart SET ISO8859-1COMPOUNDMIN 3 COMPOUNDRULE m*NEEDCOMPOUND x 3affend3dicstart 1234foo/mbar/mxmï/mla/mx3dicend3good: foo mï foobar foofoobar barfoo barbarfoo[?12l[?25h[?25l:[?12l[?25h" Compound words [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('3', '3') [?25l"Xtest.aff" 5 lines, 60 characters written "Xtest.dic" 5 lines, 29 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - foo Compressing word tree... Compressed 6 of 29 nodes; 23 (79%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 115 bytes 3 lines yanked 3 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('4', '4') [?25l"Xtest.aff" 45 lines, 559 characters written "Xtest.dic" 8 lines, 59 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - word Compressing word tree... Compressed 2 of 91 nodes; 89 (97%) remaining Compressed 0 of 15 nodes; 15 (100%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 520 bytes 12 lines yanked 12 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('5', '5') [?25l"Xtest.aff" 25 lines, 237 characters written "Xtest.dic" 6 lines, 57 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - foo Compressing word tree... Compressed 19 of 105 nodes; 86 (81%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 440 bytes 10 lines yanked 10 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('6', '6') [?25l"Xtest.aff" 23 lines, 211 characters written "Xtest.dic" 6 lines, 53 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - mee Compressing word tree... Compressed 19 of 87 nodes; 68 (78%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 350 bytes 9 lines yanked 9 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('7', '7') [?25l"Xtest.aff" 22 lines, 223 characters written "Xtest.dic" 6 lines, 67 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - mee Compressing word tree... Compressed 19 of 89 nodes; 70 (78%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 360 bytes 9 lines yanked 9 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lCOMPOUNDRULE 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 leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar 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: test 1-1 # file: Xtest.latin1.spl Comment deoldéôr input[?12l[?25h[?25l:[?12l[?25h" NOSLITSUGS [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('8', '8') [?25l"Xtest.aff" 3 lines, 27 characters written "Xtest.dic" 4 lines, 20 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - foo Compressing word tree... Compressed 8 of 26 nodes; 18 (69%) remaining Writing spell file Xtest.latin1.spl ... Done! Estimated runtime memory use: 90 bytes 4 lines yanked 4 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25l1234 mee/391,111,9999 bar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead leadprobar badendTest NOSLITSUGS8start SET ISO8859-1NOSPLITSUGS 8affend8dicstart 1234foobarfaabar 8dicend8good: foo bar faabarbad: foobar barfootest output:test 1-1# file: Xtest.latin1.spl Commentdeoldéôr inputOKoutput outputs outtest putputs testtestentestthe end uk wrong------- bad['put', 'uk', 'OK']inputs['input', 'puts', 'outputs'] comment ['Comment', 'outtest', 'the end'][?12l[?25h[?25l:[?12l[?25h" clean up for valgrind [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc TestOne [?25l[?12l[?25h[?25l:[?12l[?25hset spl= enc=latin1 [?25l1234 mee/391,111,9999 bar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar 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: test 1-1 # file: Xtest.latin1.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'][?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25lasdTests 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 iasd^[z=:" :" :" 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('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') :"[?12l[?25h[?25l:[?12l[?25h/^test output:/,$wq! test.out [?25l"test.out" [New File] 283 lines, 3793 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test59.failed test.ok test.out X* viminfo cp test59.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test59.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test59.in" 626 lines, 10897 charactersTests 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') :"[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for spell checking with 'encoding' set to "utf-8". vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 106 lines, 2520 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:$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 ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeeceeeeeeeedneeeeeeeeeeep? 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][?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Don't want to depend on the locale from the environment. The .aff and .dic [?25l[?12l[?25h[?25l:[?12l[?25h" text is in latin1, the test text is utf-8. [?25l[?12l[?25h[?25l:[?12l[?25hset enc=latin1 [?25l:$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 ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeeeeeceeeeeeeedneeeeeeeeeeep? 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][?12l[?25h[?25l:[?12l[?25he! [?25l"test59.in" 626 lines, 10897 charactersTests for spell checking with 'encoding' set to "utf-8". vim: set ft=vim :STARTTEST :so small.vimso 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 spelldum %yank quit $put $put ='-------' " find all bad words and suggestions for them exe '1;/^' . a:aff . 'good:' normal 0f:]s let prevbad = '' while 1let [bad, a] = spellbadword() if bad == '' || bad == prevbad || bad == 'badend' break endiflet 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') :"[?12l[?25h[?25l:[?12l[?25hset enc=utf-8 [?25lTests 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') :"[?12l[?25h[?25l:[?12l[?25hset fenc= [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Function to test .aff/.dic with list of good and bad words. [?25l[?12l[?25h[?25l:[?12l[?25hfunc TestOne(aff, dic) [?25l : [?12l[?25h set spellfile= [?25l: [?12l[?25h $put ='' [?25l: [?12l[?25h $put ='test '. a:aff . '-' . a:dic [?25l: [?12l[?25h " Generate a .spl file from a .dic and .aff file. [?25l: [?12l[?25h exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff' [?25l: [?12l[?25h exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic' [?25l: [?12l[?25h mkspell! Xtest Xtest [?25l: [?12l[?25h " use that spell file [?25l: [?12l[?25h set spl=Xtest.utf-8.spl spell [?25l: [?12l[?25h " list all valid words [?25l: [?12l[?25h spelldump [?25l: [?12l[?25h %yank [?25l: [?12l[?25h quit [?25l: [?12l[?25h $put [?25l: [?12l[?25h $put ='-------' [?25l: [?12l[?25h " find all bad words and suggestions for them [?25l: [?12l[?25h exe '1;/^' . a:aff . 'good:' [?25l: [?12l[?25h normal 0f:]s [?25l: [?12l[?25h let prevbad = '' [?25l: [?12l[?25h while 1 [?25l: [?12l[?25h let [bad, a] = spellbadword() [?25l: [?12l[?25h if bad == '' || bad == prevbad || bad == 'badend' [?25l: [?12l[?25h break [?25l: [?12l[?25h endif [?25l: [?12l[?25h let prevbad = bad [?25l: [?12l[?25h let lst = spellsuggest(bad, 3) [?25l: [?12l[?25h normal mm [?25l: [?12l[?25h $put =bad [?25l: [?12l[?25h $put =string(lst) [?25l: [?12l[?25h normal `m]s [?25l: [?12l[?25h endwhile [?25l: [?12l[?25hendfunc [?25lTests 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:'[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('1', '1') [?25l"Xtest.aff" [New File] 48 lines, 768 characters written "Xtest.dic" [New File] 11 lines, 71 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 29 of 131 nodes; 102 (77%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 510 bytes Reading back spell file... Performing soundfolding... Total number of words: 16 Number of words after soundfolding: 16 Compressing word tree... Compressed 39 of 104 nodes; 65 (62%) remaining Writing suggestion file Xtest.utf-8.sug ... Estimated runtime memory use: 357 bytes 17 lines yanked 17 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h$put =soundfold('goobledygoook') [?25lSFX 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 leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badendtest output:test 1-1# file: Xtest.utf-8.splCommentdeoldéôrinputOKoutputoutputsouttestputputstesttestentestntheukwrong-------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[?12l[?25h[?25l :[?12l[?25h$put =soundfold('kóopërÿnôven') [?25l kepereneven[?12l[?25h[?25l :[?12l[?25h$put =soundfold('oeverloos gezwets edale') [?25l everles gesvets etele[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" and now with SAL instead of SOFO items; test automatic reloading [?25l[?12l[?25h[?25lTests 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') :"[?12l[?25h[?25l:[?12l[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff [?25l"Xtest.aff" 153 lines, 3426 characters written[?12l[?25h[?25l:[?12l[?25hmkspell! Xtest Xtest [?25lReading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 29 of 131 nodes; 102 (77%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 510 bytes Performing soundfolding... Total number of words: 16 Number of words after soundfolding: 15 Compressing word tree... Compressed 33 of 75 nodes; 42 (56%) remaining Writing suggestion file Xtest.utf-8.sug ... Estimated runtime memory use: 241 bytes Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h$put =soundfold('goobledygoook') [?25lPFX 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 leadprebarlead tail leadtail leadmiddletail bad: me meea2 prabar probarmaat middle leadmiddle middletail taillead leadprobar badendtest output:test 1-# file: Xtes.utf-8.pl CommentdeoldéôrinputOKoutput outputs outtestputputstesttestentestnthe endukwrong-------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'] gebletegekkepereneveeverles gesvets etelekbltykk[?12l[?25h[?25l :[?12l[?25h$put =soundfold('kóopërÿnôven') [?25l kprnfn[?12l[?25h[?25l :[?12l[?25h$put =soundfold('oeverloos gezwets edale') [?25l *fls kswts tl[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" also use an addition file [?25l[?12l[?25h[?25lTests 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') :"[?12l[?25h[?25l:[?12l[?25h/^addstart/+1,/^addend/-1w! Xtest.utf-8.add [?25l"Xtest.utf-8.add" [New File] 3 lines, 38 characters written[?12l[?25h[?25l:[?12l[?25hmkspell! Xtest.utf-8.add.spl Xtest.utf-8.add [?25lReading word file Xtest.utf-8.add ... Compressing word tree... Compressed 0 of 29 nodes; 29 (100%) remaining Writing spell file Xtest.utf-8.add.spl ... Done! Estimated runtime memory use: 145 bytes Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hset spellfile=Xtest.utf-8.add [?25lTests for spell checking with 'encoding' set to "utf-8". vim: set ft=vim : STARTTEST :so small.vim :so mbyte.vim :"[?12l[?25h[?25l/[?12l[?25h^test2: [?25lPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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 .[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l7dicstart 1234 mee/391,111,9999 bar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_us.utf-8.spl [?25l[?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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 . search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l1234 mee/391,111,9999 bar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25lPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lmee/391,111,9999 bar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_gb.utf-8.spl [?25lelequint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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 . search hit BOTTOM, continuing at TOP[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lbar/17,61003,123 lead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25lPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25llead/2 tail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_nz.utf-8.spl [?25lelequint elekwint elekwint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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 . search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25ltail/123 middle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25lPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25lmiddle/77,1 7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25l :[?12l[?25hset spl=Xtest_ca.utf-8.spl [?25lelequint elekwint elekwint elequint [?12l[?25h[?25l/[?12l[?25h^test2: [?25lsearch hit BOTTOM, continuing at TOPPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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 . search hit BOTTOM, continuing at TOP[?12l[?25h [?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l7dicend 7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25lPFX 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-okbork borkbork borkborkbork borkborkborkbork borkborkborkborkborktomato tomatotomato startend startword startwordword startwordendstartwordwordend startwordwordwordend prebork preborkborkpreborkborkborknouword bad: wordutilize pro borkborkborkborkborkbork tomatotomatotomatoendstart endend startstart wordend wordstartpreborkprebork preborkpreborkborkstartwordwordwordwordend borkpreborkpreborkborkutilsbork 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[?12l[?25h[?25l:[?12l[?25hlet [str, a] = spellbadword() [?25l[?12l[?25h[?25l:[?12l[?25h$put =str [?25l7good: meea1 meeaé bar prebar barmeat prebarmeat leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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 [?12l[?25h[?25l :[?12l[?25hunlet str a [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Postponed prefixes [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('2', '1') [?25l"Xtest.aff" 46 lines, 461 characters written "Xtest.dic" 11 lines, 71 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - test Compressing word tree... Compressed 10 of 102 nodes; 92 (90%) remaining Compressed 0 of 13 nodes; 13 (100%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 525 bytes 17 lines yanked 17 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lMAP c MAP y MAP s 2affend 1dicstart 123456 test/NO # comment wrong Comment OK ukput/ISO the end deol dr 1dicendaddstart /regions=usgbnz elequint/2 elekwint/3 addend1good: wrong OK puts. Test the end bad: inputs comment ok Ok. test déôl end the badend2good: putsbad: inputs comment ok Ok end the. test déôl badendTest rules for compounding.3affstartSET ISO8859-1COMPOUNDMIN 3 COMPOUNDRULE m*NEEDCOMPOUND x 3affend3dicstart1234 foo/mbar/mxm/mla/mx3dicend3good: foo mï foobar foofoobar barfoo barbarfoo bad: bar la foomï barmï mïfoo mïbar mïmï lala mïla lamï foola labar badendTests for compounding.4affstart SET ISO8859-1[?12l[?25h[?25l:[?12l[?25h" Compound words [?25l[?12l[?25h[?25l:[?12l[?25hcall TestOne('3', '3') [?25l"Xtest.aff" 5 lines, 60 characters written "Xtest.dic" 5 lines, 29 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - foo Compressing word tree... Compressed 6 of 31 nodes; 25 (80%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 125 bytes 3 lines yanked 3 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('4', '4') [?25l"Xtest.aff" 45 lines, 559 characters written "Xtest.dic" 8 lines, 59 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - word Compressing word tree... Compressed 2 of 91 nodes; 89 (97%) remaining Compressed 0 of 15 nodes; 15 (100%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 520 bytes 12 lines yanked 12 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('5', '5') [?25l"Xtest.aff" 25 lines, 237 characters written "Xtest.dic" 6 lines, 57 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - foo Compressing word tree... Compressed 19 of 107 nodes; 88 (82%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 440 bytes 10 lines yanked 10 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('6', '6') [?25l"Xtest.aff" 23 lines, 211 characters written "Xtest.dic" 6 lines, 53 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - mee Compressing word tree... Compressed 19 of 89 nodes; 70 (78%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 350 bytes 9 lines yanked 9 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hcall TestOne('7', '7') [?25l"Xtest.aff" 26 lines, 338 characters written "Xtest.dic" 6 lines, 67 characters written Reading affix file Xtest.aff ... Reading dictionary file Xtest.dic ... line 2, word 0 - mee Compressing word tree... Compressed 19 of 91 nodes; 72 (79%) remaining Writing spell file Xtest.utf-8.spl ... Done! Estimated runtime memory use: 360 bytes 9 lines yanked 9 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lCOMPOUNDRULE 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 leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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[?12l[?25h[?25l:[?12l[?25h" clean up for valgrind [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc TestOne [?25l[?12l[?25h[?25l:[?12l[?25hset spl= enc=latin1 [?25lCOMPOUNDRULE 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 leadprebarlead tail leadtail leadmiddletail bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadleadprobar badend 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[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25lTests 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') :"[?12l[?25h[?25l:[?12l[?25h/^test output:/,$wq! test.out [?25l"test.out" [New File] 270 lines, 3685 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test60.failed test.ok test.out X* viminfo cp test60.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test60.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test60.in" 580 lines, 12483 charactersTests for the exists() function. vim: set ft=vim : STARTTEST :so small.vim :function! RunTest(str, result) if exists(a:str) == a:resultecho "OK" elseecho "FAILED: Checking for " . a:str endif endfunction :function! TestExists() augroup myagroupautocmd! BufEnter *.my echo 'myfile edited' augroup ENDlet 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]][?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for the exists() function. vim: set ft=vim :[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 575 lines, 12411 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST" Existing Vim internal variable echo 'v:version: 1' if exists('v:version')echo "OK" elseecho "FAILED" endif" Non-existing Vim internal variable echo 'v:non_exists_var: 0' if !exists('v:non_exists_var')echo "OK" elseecho "FAILED" endif" Function arguments function TestFuncArg(func_arg, ...)echo 'a:func_arg: 1'if exists('a:func_arg')echo "OK"elseecho "FAILED"endifecho 'a:non_exists_arg: 0'if !exists('a:non_exists_arg')echo "OK"elseecho "FAILED"endifecho 'a:1: 1'if exists('a:1')echo "OK"elseecho "FAILED"endifecho 'a:2: 0'if !exists('a:2')echo "OK"elseecho "FAILED"endif endfunctioncall TestFuncArg("arg1", "arg2")redir END endfunction :call TestExists() :delfunc TestExists :delfunc RunTest :delfunc TestFuncArg :edit! test.out :set ff=unix :w :qa! ENDTEST [?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hfunction! RunTest(str, result) [?25l : [?12l[?25h if exists(a:str) == a:result [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED: Checking for " . a:str [?25l: [?12l[?25h endif [?25l: [?12l[?25hendfunction [?25l" Existing Vim internal variable echo 'v:version: 1' if exists('v:version')echo "OK" elseecho "FAILED"[?12l[?25h[?25l :[?12l[?25hfunction! TestExists() [?25l : [?12l[?25h augroup myagroup [?25l: [?12l[?25h^Iautocmd! BufEnter *.my echo 'myfile edited' [?25l: [?12l[?25h augroup END [?25l: [?12l[?25h [?25l: [?12l[?25h let test_cases = [] [?25l: [?12l[?25h [?25l: [?12l[?25h " valid autocmd group [?25l: [?12l[?25h let test_cases += [['#myagroup', 1]] [?25l: [?12l[?25h " valid autocmd group with garbage [?25l: [?12l[?25h let test_cases += [['#myagroup+b', 0]] [?25l: [?12l[?25h " Valid autocmd group and event [?25l: [?12l[?25h let test_cases += [['#myagroup#BufEnter', 1]] [?25l: [?12l[?25h " Valid autocmd group, event and pattern [?25l: [?12l[?25h let test_cases += [['#myagroup#BufEnter#*.my', 1]] [?25l: [?12l[?25h " Valid autocmd event [?25l: [?12l[?25h let test_cases += [['#BufEnter', 1]] [?25l: [?12l[?25h " Valid autocmd event and pattern [?25l: [?12l[?25h let test_cases += [['#BufEnter#*.my', 1]] [?25l: [?12l[?25h " Non-existing autocmd group or event [?25l: [?12l[?25h let test_cases += [['#xyzagroup', 0]] [?25l: [?12l[?25h " Non-existing autocmd group and valid autocmd event [?25l: [?12l[?25h let test_cases += [['#xyzagroup#BufEnter', 0]] [?25l: [?12l[?25h " Valid autocmd group and event with no matching pattern [?25l: [?12l[?25h let test_cases += [['#myagroup#CmdwinEnter', 0]] [?25l: [?12l[?25h " Valid autocmd group and non-existing autocmd event [?25l: [?12l[?25h let test_cases += [['#myagroup#xyzacmd', 0]] [?25l: [?12l[?25h " Valid autocmd group and event and non-matching pattern [?25l: [?12l[?25h let test_cases += [['#myagroup#BufEnter#xyzpat', 0]] [?25l: [?12l[?25h " Valid autocmd event and non-matching pattern [?25l: [?12l[?25h let test_cases += [['#BufEnter#xyzpat', 0]] [?25l: [?12l[?25h " Empty autocmd group, event and pattern [?25l: [?12l[?25h let test_cases += [['###', 0]] [?25l: [?12l[?25h " Empty autocmd group and event or empty event and pattern [?25l: [?12l[?25h let test_cases += [['##', 0]] [?25l: [?12l[?25h " Valid autocmd event [?25l: [?12l[?25h let test_cases += [['##FileReadCmd', 1]] [?25l: [?12l[?25h " Non-existing autocmd event [?25l: [?12l[?25h let test_cases += [['##MySpecialCmd', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing and working option (long form) [?25l: [?12l[?25h let test_cases += [['&textwidth', 1]] [?25l: [?12l[?25h " Existing and working option (short form) [?25l: [?12l[?25h let test_cases += [['&tw', 1]] [?25l: [?12l[?25h " Existing and working option with garbage [?25l: [?12l[?25h let test_cases += [['&tw-', 0]] [?25l: [?12l[?25h " Global option [?25l: [?12l[?25h let test_cases += [['&g:errorformat', 1]] [?25l: [?12l[?25h " Local option [?25l: [?12l[?25h let test_cases += [['&l:errorformat', 1]] [?25l: [?12l[?25h " Negative form of existing and working option (long form) [?25l: [?12l[?25h let test_cases += [['&nojoinspaces', 0]] [?25l: [?12l[?25h " Negative form of existing and working option (short form) [?25l: [?12l[?25h let test_cases += [['&nojs', 0]] [?25l: [?12l[?25h " Non-existing option [?25l: [?12l[?25h let test_cases += [['&myxyzoption', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing and working option (long form) [?25l: [?12l[?25h let test_cases += [['+incsearch', 1]] [?25l: [?12l[?25h " Existing and working option with garbage [?25l: [?12l[?25h let test_cases += [['+incsearch!1', 0]] [?25l: [?12l[?25h " Existing and working option (short form) [?25l: [?12l[?25h let test_cases += [['+is', 1]] [?25l: [?12l[?25h " Existing option that is hidden. [?25l: [?12l[?25h let test_cases += [['+autoprint', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing environment variable [?25l: [?12l[?25h let $EDITOR_NAME = 'Vim Editor' [?25l: [?12l[?25h let test_cases += [['$EDITOR_NAME', 1]] [?25l: [?12l[?25h " Non-existing environment variable [?25l: [?12l[?25h let test_cases += [['$NON_ENV_VAR', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid internal function [?25l: [?12l[?25h let test_cases += [['*bufnr', 1]] [?25l: [?12l[?25h " Valid internal function with () [?25l: [?12l[?25h let test_cases += [['*bufnr()', 1]] [?25l: [?12l[?25h " Non-existing internal function [?25l: [?12l[?25h let test_cases += [['*myxyzfunc', 0]] [?25l: [?12l[?25h " Valid internal function with garbage [?25l: [?12l[?25h let test_cases += [['*bufnr&6', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid user defined function [?25l: [?12l[?25h let test_cases += [['*TestExists', 1]] [?25l: [?12l[?25h " Non-existing user defined function [?25l: [?12l[?25h let test_cases += [['*MyxyzFunc', 0]] [?25l: [?12l[?25h [?25l: [?12l[?25h redir! > test.out [?25l: [?12l[?25h [?25l: [?12l[?25h for [test_case, result] in test_cases [?25l: [?12l[?25h ^Iecho test_case . ": " . result [?25l: [?12l[?25h call RunTest(test_case, result) [?25l: [?12l[?25h endfor [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid internal command (full match) [?25l: [?12l[?25h echo ':edit: 2' [?25l: [?12l[?25h if exists(':edit') == 2 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid internal command (full match) with garbage [?25l: [?12l[?25h echo ':edit/a: 0' [?25l: [?12l[?25h if exists(':edit/a') == 0 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid internal command (partial match) [?25l: [?12l[?25h echo ':q: 1' [?25l: [?12l[?25h if exists(':q') == 1 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing internal command [?25l: [?12l[?25h echo ':invalidcmd: 0' [?25l: [?12l[?25h if !exists(':invalidcmd') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " User defined command (full match) [?25l: [?12l[?25h command! MyCmd :echo 'My command' [?25l: [?12l[?25h echo ':MyCmd: 2' [?25l: [?12l[?25h if exists(':MyCmd') == 2 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " User defined command (partial match) [?25l: [?12l[?25h command! MyOtherCmd :echo 'Another command' [?25l: [?12l[?25h echo ':My: 3' [?25l: [?12l[?25h if exists(':My') == 3 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Command modifier [?25l: [?12l[?25h echo ':rightbelow: 2' [?25l: [?12l[?25h if exists(':rightbelow') == 2 [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing user defined command (full match) [?25l: [?12l[?25h delcommand MyCmd [?25l: [?12l[?25h [?25l: [?12l[?25h echo ':MyCmd: 0' [?25l: [?12l[?25h if !exists(':MyCmd') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing user defined command (partial match) [?25l: [?12l[?25h delcommand MyOtherCmd [?25l: [?12l[?25h [?25l: [?12l[?25h echo ':My: 0' [?25l: [?12l[?25h if !exists(':My') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local variable [?25l: [?12l[?25h let local_var = 1 [?25l: [?12l[?25h echo 'local_var: 1' [?25l: [?12l[?25h if exists('local_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local variable with garbage [?25l: [?12l[?25h let local_var = 1 [?25l: [?12l[?25h echo 'local_var%n: 0' [?25l: [?12l[?25h if !exists('local_var%n') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing local variable [?25l: [?12l[?25h unlet local_var [?25l: [?12l[?25h echo 'local_var: 0' [?25l: [?12l[?25h if !exists('local_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local list [?25l: [?12l[?25h let local_list = ["blue", "orange"] [?25l: [?12l[?25h echo 'local_list: 1' [?25l: [?12l[?25h if exists('local_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local list item [?25l: [?12l[?25h echo 'local_list[1]: 1' [?25l: [?12l[?25h if exists('local_list[1]') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local list item with garbage [?25l: [?12l[?25h echo 'local_list[1]+5: 0' [?25l: [?12l[?25h if !exists('local_list[1]+5') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Invalid local list item [?25l: [?12l[?25h echo 'local_list[2]: 0' [?25l: [?12l[?25h if !exists('local_list[2]') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing local list [?25l: [?12l[?25h unlet local_list [?25l: [?12l[?25h echo 'local_list: 0' [?25l: [?12l[?25h if !exists('local_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Valid local dictionary [?25l: [?12l[?25h let local_dict = {"xcord":100, "ycord":2} [?25l: [?12l[?25h echo 'local_dict: 1' [?25l: [?12l[?25h if exists('local_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing local dictionary [?25l: [?12l[?25h unlet local_dict [?25l: [?12l[?25h echo 'local_dict: 0' [?25l: [?12l[?25h if !exists('local_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing local curly-brace variable [?25l: [?12l[?25h let str = "local" [?25l: [?12l[?25h let curly_{str}_var = 1 [?25l: [?12l[?25h echo 'curly_' . str . '_var: 1' [?25l: [?12l[?25h if exists('curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing local curly-brace variable [?25l: [?12l[?25h unlet curly_{str}_var [?25l: [?12l[?25h echo 'curly_' . str . '_var: 0' [?25l: [?12l[?25h if !exists('curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing global variable [?25l: [?12l[?25h let g:global_var = 1 [?25l: [?12l[?25h echo 'g:global_var: 1' [?25l: [?12l[?25h if exists('g:global_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing global variable with garbage [?25l: [?12l[?25h echo 'g:global_var-n: 1' [?25l: [?12l[?25h if !exists('g:global_var-n') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing global variable [?25l: [?12l[?25h unlet g:global_var [?25l: [?12l[?25h echo 'g:global_var: 0' [?25l: [?12l[?25h if !exists('g:global_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing global list [?25l: [?12l[?25h let g:global_list = ["blue", "orange"] [?25l: [?12l[?25h echo 'g:global_list: 1' [?25l: [?12l[?25h if exists('g:global_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing global list [?25l: [?12l[?25h unlet g:global_list [?25l: [?12l[?25h echo 'g:global_list: 0' [?25l: [?12l[?25h if !exists('g:global_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing global dictionary [?25l: [?12l[?25h let g:global_dict = {"xcord":100, "ycord":2} [?25l: [?12l[?25h echo 'g:global_dict: 1' [?25l: [?12l[?25h if exists('g:global_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing global dictionary [?25l: [?12l[?25h unlet g:global_dict [?25l: [?12l[?25h echo 'g:global_dict: 0' [?25l: [?12l[?25h if !exists('g:global_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing global curly-brace variable [?25l: [?12l[?25h let str = "global" [?25l: [?12l[?25h let g:curly_{str}_var = 1 [?25l: [?12l[?25h echo 'g:curly_' . str . '_var: 1' [?25l: [?12l[?25h if exists('g:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing global curly-brace variable [?25l: [?12l[?25h unlet g:curly_{str}_var [?25l: [?12l[?25h echo 'g:curly_' . str . '_var: 0' [?25l: [?12l[?25h if !exists('g:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing window variable [?25l: [?12l[?25h echo 'w:window_var: 1' [?25l: [?12l[?25h let w:window_var = 1 [?25l: [?12l[?25h if exists('w:window_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing window variable [?25l: [?12l[?25h unlet w:window_var [?25l: [?12l[?25h echo 'w:window_var: 0' [?25l: [?12l[?25h if !exists('w:window_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing window list [?25l: [?12l[?25h let w:window_list = ["blue", "orange"] [?25l: [?12l[?25h echo 'w:window_list: 1' [?25l: [?12l[?25h if exists('w:window_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing window list [?25l: [?12l[?25h unlet w:window_list [?25l: [?12l[?25h echo 'w:window_list: 0' [?25l: [?12l[?25h if !exists('w:window_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing window dictionary [?25l: [?12l[?25h let w:window_dict = {"xcord":100, "ycord":2} [?25l: [?12l[?25h echo 'w:window_dict: 1' [?25l: [?12l[?25h if exists('w:window_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing window dictionary [?25l: [?12l[?25h unlet w:window_dict [?25l: [?12l[?25h echo 'w:window_dict: 0' [?25l: [?12l[?25h if !exists('w:window_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing window curly-brace variable [?25l: [?12l[?25h let str = "window" [?25l: [?12l[?25h let w:curly_{str}_var = 1 [?25l: [?12l[?25h echo 'w:curly_' . str . '_var: 1' [?25l: [?12l[?25h if exists('w:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing window curly-brace variable [?25l: [?12l[?25h unlet w:curly_{str}_var [?25l: [?12l[?25h echo 'w:curly_' . str . '_var: 0' [?25l: [?12l[?25h if !exists('w:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing buffer variable [?25l: [?12l[?25h echo 'b:buffer_var: 1' [?25l: [?12l[?25h let b:buffer_var = 1 [?25l: [?12l[?25h if exists('b:buffer_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing buffer variable [?25l: [?12l[?25h unlet b:buffer_var [?25l: [?12l[?25h echo 'b:buffer_var: 0' [?25l: [?12l[?25h if !exists('b:buffer_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing buffer list [?25l: [?12l[?25h let b:buffer_list = ["blue", "orange"] [?25l: [?12l[?25h echo 'b:buffer_list: 1' [?25l: [?12l[?25h if exists('b:buffer_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing buffer list [?25l: [?12l[?25h unlet b:buffer_list [?25l: [?12l[?25h echo 'b:buffer_list: 0' [?25l: [?12l[?25h if !exists('b:buffer_list') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing buffer dictionary [?25l: [?12l[?25h let b:buffer_dict = {"xcord":100, "ycord":2} [?25l: [?12l[?25h echo 'b:buffer_dict: 1' [?25l: [?12l[?25h if exists('b:buffer_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing buffer dictionary [?25l: [?12l[?25h unlet b:buffer_dict [?25l: [?12l[?25h echo 'b:buffer_dict: 0' [?25l: [?12l[?25h if !exists('b:buffer_dict') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing buffer curly-brace variable [?25l: [?12l[?25h let str = "buffer" [?25l: [?12l[?25h let b:curly_{str}_var = 1 [?25l: [?12l[?25h echo 'b:curly_' . str . '_var: 1' [?25l: [?12l[?25h if exists('b:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing buffer curly-brace variable [?25l: [?12l[?25h unlet b:curly_{str}_var [?25l: [?12l[?25h echo 'b:curly_' . str . '_var: 0' [?25l: [?12l[?25h if !exists('b:curly_{str}_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Script-local tests [?25l: [?12l[?25h source test60.vim [?25l: [?12l[?25h [?25l: [?12l[?25h " Existing Vim internal variable [?25l: [?12l[?25h echo 'v:version: 1' [?25l: [?12l[?25h if exists('v:version') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Non-existing Vim internal variable [?25l: [?12l[?25h echo 'v:non_exists_var: 0' [?25l: [?12l[?25h if !exists('v:non_exists_var') [?25l: [?12l[?25h^Iecho "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h^Iecho "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h " Function arguments [?25l: [?12l[?25h function TestFuncArg(func_arg, ...) [?25l: [?12l[?25h echo 'a:func_arg: 1' [?25l: [?12l[?25h if exists('a:func_arg') [?25l: [?12l[?25h echo "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h echo "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h echo 'a:non_exists_arg: 0' [?25l: [?12l[?25h if !exists('a:non_exists_arg') [?25l: [?12l[?25h echo "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h echo "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h echo 'a:1: 1' [?25l: [?12l[?25h if exists('a:1') [?25l: [?12l[?25h echo "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h echo "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h [?25l: [?12l[?25h echo 'a:2: 0' [?25l: [?12l[?25h if !exists('a:2') [?25l: [?12l[?25h echo "OK" [?25l: [?12l[?25h else [?25l: [?12l[?25h echo "FAILED" [?25l: [?12l[?25h endif [?25l: [?12l[?25h endfunction [?25l: [?12l[?25h [?25l: [?12l[?25h call TestFuncArg("arg1", "arg2") [?25l: [?12l[?25h [?25l: [?12l[?25h redir END [?25l: [?12l[?25hendfunction [?25l" Existing Vim internal variable echo 'v:version: 1' if exists('v:version')echo "OK" elseecho "FAILED" endif" Non-existing Vim internal variable echo 'v:non_exists_var: 0' if !exists('v:non_exists_var')echo "OK" elseecho "FAILED" endif" Function arguments function TestFuncArg(func_arg, ...)echo 'a:func_arg: 1'if exists('a:func_arg')echo "OK"elseecho "FAILED"endifecho 'a:non_exists_arg: 0'if !exists('a:non_exists_arg')echo "OK"elseecho "FAILED"endifecho 'a:1: 1'if exists('a:1')echo "OK"elseecho "FAILED"endifecho 'a:2: 0'if !exists('a:2')echo "OK"elseecho "FAILED"endif endfunctioncall TestFuncArg("arg1", "arg2")redir END endfunction :call TestExists() :delfunc TestExists :delfunc RunTest :delfunc TestFuncArg :edit! test.out :set ff=unix :w :qa! ENDTEST [?12l[?25h[?25l :[?12l[?25hcall TestExists() [?25l#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 :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 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 Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hdelfunc TestExists [?25l" Existing Vim internal variable echo 'v:version: 1' if exists('v:version')echo "OK" elseecho "FAILED" endif" Non-existing Vim internal variable echo 'v:non_exists_var: 0' if !exists('v:non_exists_var')echo "OK" elseecho "FAILED" endif" Function arguments function TestFuncArg(func_arg, ...)echo 'a:func_arg: 1'if exists('a:func_arg')echo "OK"elseecho "FAILED"endifecho 'a:non_exists_arg: 0'if !exists('a:non_exists_arg')echo "OK"elseecho "FAILED"endifecho 'a:1: 1'if exists('a:1')echo "OK"elseecho "FAILED"endifecho 'a:2: 0'if !exists('a:2')echo "OK"elseecho "FAILED"endif endfunctioncall TestFuncArg("arg1", "arg2")redir END endfunction :call TestExists() :delfunc TestExists :delfunc RunTest :delfunc TestFuncArg :edit! test.out :set ff=unix :w :qa! ENDTEST [?12l[?25h[?25l :[?12l[?25hdelfunc RunTest [?25l[?12l[?25h[?25l:[?12l[?25hdelfunc TestFuncArg [?25l[?12l[?25h[?25l:[?12l[?25hedit! test.out [?25l"test.out" [Incomplete last line] 197 lines, 1844 characters#myagroup: 1OK#myagroup+b: 0OK#myagroup#BufEnter: 1 OK#myagroup#BufEnter#*.my: 1 OK#BufEnter: 1OK#BufEnter#*.my: 1 OK#xyzagroup: 0OK#xyzagroup#BufEnter: 0 OK#myagroup#CmdwinEnter: 0OK#myagroup#xyzacmd: 0OK#myagroup#BufEnter#xyzpat: 0 OK#BufEnter#xyzpat: 0 OK ###: 0OK##: 0OK##FileReadCmd: 1OK##MySpecialCmd: 0 OK&textwidth: 1OK&tw: 1OK&tw-: 0OK &g:errorformat: 1OK&l:errorformat: 1OK&nojoinspaces: 0OK&nojs: 0OK &myxyzoption: 0OK +incsearch: 1 OK+incsearch!1: 0OK+is: 1OK+autoprint: 0OK$EDITOR_NAME: 1 OK$NON_ENV_VAR: 0 OK[?12l[?25h[?25l:[?12l[?25hset ff=unix [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"test.out" 197 lines, 1845 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test61.failed test.ok test.out X* viminfo cp test61.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test61.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test61.in" 113 lines, 1774 charactersTests 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 obbbb^[u:.w >>test.out obbbb^[:set ul=100 :undojoin occcc^[u:.w >>test.out :e! Xtest ione one one^[:set ul=100 :w! otwo^[:set ul=100[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for undo tree.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 1 line, 25 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hecho undotree().entries [?25l[][?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 97 lines, 1501 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTESTotwo^[: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 o1^[a2^R=setline('.','1234') ^[uu:" oc^[ :set ul=100 o1^[a2^R=setline('.','1234') ^[u:" od^[ :set ul=100 o1^[a2^R=string(123) ^[u:" :%w >>test.out :qa! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25h" Delete three characters and undo [?25l[?12l[?25h[?25l1111 ----- 2222 ----- 123456789[?12l[?25h[?25l23456789[?12l[?25h[?25l :[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l3456789[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l456789[?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New File] 1 line, 7 characters written[?12l[?25h[?25l 1 change; before #3 0 seconds ago3456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 8 characters appended[?12l[?25h[?25l 1 change; before #2 0 seconds ago23456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 9 characters appended[?12l[?25h[?25l 1 change; before #1 0 seconds ago123456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l Already at oldest change[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h/^111/w >>test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25h" Delete three other characters and go back in time step by step [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l:[?12l[?25hsleep 1 [?25l[?12l[?25h[?25l 1 change; before #6 1 seconds ago7[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 8 characters appended[?12l[?25h[?25l 1 change; before #5 1 seconds ago8[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 9 characters appended[?12l[?25h[?25l 4 changes; after #3 1 seconds ago456789[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l 1 change; before #3 1 seconds ago3456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 8 characters appended[?12l[?25h[?25l 1 change; before #2 1 seconds ago23456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 9 characters appended[?12l[?25h[?25l 1 change; before #1 1 seconds ago123456789 [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l Already at oldest change[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l Already at oldest change[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l 3 changes; after #6 1 seconds ago[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h/^222/w >>test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" 1 line, 11 characters appended[?12l[?25h[?25l:[?12l[?25h" Delay for three seconds and go some seconds forward and backward [?25l[?12l[?25h[?25l:[?12l[?25hsleep 2 [?25l[?12l[?25h[?25l6a[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25lab[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25lbc[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l:[?12l[?25hear 1s [?25l3 changes; before #7 0 seconds ago[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l:[?12l[?25hear 3s [?25l3 changes; before #1 4 seconds ago789[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l:[?12l[?25hlater 1s [?25l3 changes; after #6 4 seconds ago[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 7 characters appended[?12l[?25h[?25l:[?12l[?25hlater 1h [?25l3 changes; after #9 0 seconds agoabc[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 10 characters appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" test undojoin [?25l[?12l[?25h [?25l aaaa[?12l[?25h[?25l :[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l bbbb[?12l[?25h[?25l 1 line less; before #11 0 seconds ago~ [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 5 characters appended[?12l[?25h[?25l bbbb[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hundojoin [?25l[?12l[?25h[?25l cccc[?12l[?25h[?25l 2 fewer lines; before #12 0 seconds ago~ ~ [?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1 line, 5 characters appended[?12l[?25h[?25l:[?12l[?25he! Xtest [?25l"Xtest" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lone one one[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hw! [?25l"Xtest" [New File] 1 line, 12 characters written[?12l[?25h[?25l two[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l two[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtest" 3 lines, 20 characters written[?12l[?25h[?25l three[?12l[?25h[?25l:[?12l[?25hearlier 1f [?25l1 line less; before #4 0 seconds ago~ [?12l[?25h[?25l:[?12l[?25h" expect "one one one\ntwo\ntwo" [?25l[?12l[?25h[?25l:[?12l[?25h%yank a [?25l3 lines yanked[?12l[?25h[?25l:[?12l[?25hearlier 1f [?25l2 fewer lines; before #2 0 seconds ago~ ~ [?12l[?25h[?25l:[?12l[?25h" expect "one one one" [?25l[?12l[?25h[?25l:[?12l[?25h%yank b [?25l[?12l[?25h[?25l:[?12l[?25hearlier 1f [?25l1 line less; before #1 0 seconds ago[?12l[?25h[?25l:[?12l[?25h" expect empty line [?25l[?12l[?25h[?25l:[?12l[?25h%yank c [?25l[?12l[?25h[?25l:[?12l[?25hlater 1f [?25l1 more line; after #1 0 seconds agoone one one [?12l[?25h[?25l:[?12l[?25h" expect "one one one" [?25l[?12l[?25h[?25l:[?12l[?25h%yank d [?25l[?12l[?25h[?25l:[?12l[?25hlater 1f [?25l2 more lines; after #3 0 seconds agotwotwo[?12l[?25h[?25l:[?12l[?25h" expect "one one one\ntwo\ntwo" [?25l[?12l[?25h[?25l:[?12l[?25h%yank e [?25l3 lines yanked[?12l[?25h[?25l:[?12l[?25hlater 1f [?25l1 more line; after #4 0 seconds agothree[?12l[?25h[?25l:[?12l[?25h" expect "one one one\ntwo\ntwo\nthree" [?25l[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25h0put e [?25l3 more linesone one one two two3 more lines[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25h0put d [?25lone one one[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25h0put c [?25l[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25h0put b [?25lone one one[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25h0put a [?25l3 more linesone one one two two3 more lines[?12l[?25h[?25l---[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 19 lines, 115 characters appended[?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset nocp viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25henew! [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l-- INSERT --a[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l-- INSERT --b[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l-- INSERT --1[?12l[?25h[?25l-- INSERT --=[?12l[?25hsetline('.','1234') [?25l20 34-- INSERT --u[?12l[?25h3[?25l[?12l[?25h[?25l1 line less; before #4 0 seconds ago~ [?12l[?25h[?25l3~ [?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l-- INSERT --c[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l-- INSERT --1[?12l[?25h[?25l-- INSERT --=[?12l[?25hsetline('.','1234') [?25l20 34-- INSERT --u[?12l[?25h3[?25l[?12l[?25h[?25l1 line less; before #7 0 seconds ago~ [?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l-- INSERT --d[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l-- INSERT --1[?12l[?25h[?25l-- INSERT --=[?12l[?25hstring(123) [?25l2123[?12l[?25h[?25l1 line less; before #9 0 seconds ago~ [?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h%w >>test.out [?25l"test.out" 6L, 12C appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. flaky test ok first time # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test62.failed test.ok test.out X* viminfo cp test62.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test62.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test62.in" 190 lines, 5506 charactersTests for tab pages STARTTEST :so small.vim :" 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(22, '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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for tab pages[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 184 lines, 5457 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTESTautocmd BufLeave * :call add(g:r, 'BufLeave') endif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" Simple test for opening and closing a tab page [?25l[?12l[?25h[?25l:[?12l[?25htabnew [?25l test62.in  [No Name]  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hlet nr = tabpagenr() [?25l[?12l[?25h[?25l:[?12l[?25hq [?25lautocmd BufLeave * :call add(g:r, 'BufLeave') endif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall append(line('$'), 'tab page ' . nr) [?25l[?12l[?25h[?25l:[?12l[?25hunlet nr [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Open three tab pages and use ":tabdo" [?25l[?12l[?25h[?25l:[?12l[?25h0tabnew [?25l [No Name]  + test62.in  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h1tabnew [?25l [No Name]  [No Name]  + test62.in  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h888tabnew [?25l [No Name] [No Name] + test62.in  [No Name]  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25htabdo call append(line('$'), 'this is tab page ' . tabpagenr()) [?25l + [No Name] + [No Name] + test62.in  + [No Name]  Xthis is tab page 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25htabclose! 2 [?25ltest62.in + [No Name]   X[?12l[?25h[?25l:[?12l[?25htabrewind [?25l + [No Name]  + test62.in + [No Name]  Xthis is tab page 1 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hlet line1 = getline('$') [?25l[?12l[?25h[?25l:[?12l[?25hundo [?25l2 fewer lines; before #1 0 seconds ago[No Name]e ]  + test62.in + [No Name]   X~ [?12l[?25h[?25l:[?12l[?25hq [?25l + test62.in  + [No Name]  Xendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25htablast [?25l + test62.in  + [No Name]  Xthis is tab page 4 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hlet line2 = getline('$') [?25l[?12l[?25h[?25l:[?12l[?25hq! [?25lautocmd BufLeave * :call add(g:r, 'BufLeave') endif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall append(line('$'), line1) [?25l[?12l[?25h[?25l:[?12l[?25hcall append(line('$'), line2) [?25l[?12l[?25h[?25l:[?12l[?25hunlet line1 line2 [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test for settabvar() and gettabvar() functions. Open a new tab page and [?25l[?12l[?25h[?25l:[?12l[?25h" set 3 variables to a number, string and a list. Verify that the variables [?25l[?12l[?25h[?25l:[?12l[?25h" are correctly set. [?25l[?12l[?25h[?25l:[?12l[?25htabnew [?25l + test62.in  [No Name]  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25htabfirst [?25l + test62.in  [No Name]  Xendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall settabvar(2, 'val_num', 100) [?25l + test62.in  [No Name]  Xendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall settabvar(2, 'val_str', 'SetTabVar test') [?25l + test62.in  [No Name]  Xendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall settabvar(2, 'val_list', ['red', 'blue', 'green']) [?25l + test62.in  [No Name]  Xendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hlet test_status = 'gettabvar: fail' [?25l[?12l[?25h[?25l:[?12l[?25hif gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar( 2, 'val_list') == ['red', 'blue', 'green'] [?25l: [?12l[?25h: let test_status = 'gettabvar: pass' [?25l: [?12l[?25h:endif  + test62.in  [No Name]  X[?25lendif[?12l[?25h[?25l :[?12l[?25hcall append(line('$'), test_status) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25htabnext 2 [?25l + test62.in  [No Name]  X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hlet test_status = 'settabvar: fail' [?25l[?12l[?25h[?25l:[?12l[?25hif t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green' ][?25l: [?12l[?25h: let test_status = 'settabvar: pass' [?25l: [?12l[?25h:endif  + test62.in  [No Name]  X[?25l[?12l[?25h[?25l:[?12l[?25htabclose [?25lautocmd BufLeave * :call add(g:r, 'BufLeave') endif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h[?25l :[?12l[?25hcall append(line('$'), test_status) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hif has('gui') || has('clientserver') [?25l : [?12l[?25h:" Test for ":tab drop exist-file" to keep current window. [?25l: [?12l[?25h:sp test1 [?25l: [?12l[?25h:tab drop test1 [?25l: [?12l[?25h:let test_status = 'tab drop 1: fail' [?25l: [?12l[?25h:if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1 [?25l: [?12l[?25h: let test_status = 'tab drop 1: pass' [?25l: [?12l[?25h:endif [?25l: [?12l[?25h:close [?25l: [?12l[?25h:call append(line('$'), test_status) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Test for ":tab drop new-file" to keep current window of tabpage 1. [?25l: [?12l[?25h:split [?25l: [?12l[?25h:tab drop newfile [?25l: [?12l[?25h:let test_status = 'tab drop 2: fail' [?25l: [?12l[?25h:if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1 [?25l: [?12l[?25h: let test_status = 'tab drop 2: pass' [?25l: [?12l[?25h:endif [?25l: [?12l[?25h:tabclose [?25l: [?12l[?25h:q [?25l: [?12l[?25h:call append(line('$'), test_status) [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" [?25l: [?12l[?25h:" Test for ":tab drop multi-opend-file" to keep current tabpage and window. [?25l: [?12l[?25h:new test1 [?25l: [?12l[?25h:tabnew [?25l: [?12l[?25h:new test1 [?25l: [?12l[?25h:tab drop test1 [?25l: [?12l[?25h:let test_status = 'tab drop 3: fail' [?25l: [?12l[?25h:if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1 [?25l: [?12l[?25h: let test_status = 'tab drop 3: pass' [?25l: [?12l[?25h:endif [?25l: [?12l[?25h:tabclose [?25l: [?12l[?25h:q [?25l: [?12l[?25h:call append(line('$'), test_status) [?25l: [?12l[?25h:else [?25l: [?12l[?25h:" :drop not supported [?25l: [?12l[?25h:call append(line('$'), 'tab drop 1: pass') [?25l: [?12l[?25h:call append(line('$'), 'tab drop 2: pass') [?25l: [?12l[?25h:call append(line('$'), 'tab drop 3: pass') [?25l: [?12l[?25h:endif [?25lautocmd BufLeave * :call add(g:r, 'BufLeave') endif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hfor i in range(9) | tabnew | endfor [?25l + t62.in No Name] No Name] No Name] No Name] No Name] No Name] No Name] No Name]  No Na X~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h + t62.in  No Name] No Name] No Name] No Name] No Name] No Name] No Name] No Name] No Na X[?25lendif let t:a='a' C tab split if !hasaulet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] endif let t:a='b' C tabnew if !hasaulet 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 !hasaulet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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:[?12l[?25h [?25ltab 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 [?12l[?25h[?25l =[?12l[?25htabpagenr() [?25l1[?12l[?25h[?25l :[?12l[?25htabmove 5 [?25l No Name]   + t62.in a X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 6[?12l[?25h[?25l :[?12l[?25htabmove -2 [?25l + t62.in  No Name]  a X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 4[?12l[?25h[?25l :[?12l[?25htabmove +4 [?25l No Name]   + t62.in a X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 8[?12l[?25h[?25l :[?12l[?25htabmove [?25l No Name]   + t62 X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 10[?12l[?25h[?25l :[?12l[?25htabmove -20 [?25l + t62.in  No Na X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 1[?12l[?25h[?25l :[?12l[?25htabmove +20 [?25l No Name]   + t62 X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 10[?12l[?25h[?25l :[?12l[?25h3tabmove [?25l + t62.in  No Na X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 4[?12l[?25h[?25l :[?12l[?25h7tabmove 5 [?25l No Name]   + t62.in a X[?12l[?25h[?25l=[?12l[?25htabpagenr() [?25l 6[?12l[?25h[?25l :[?12l[?25hlet a='No error caught.' [?25l[?12l[?25h[?25l:[?12l[?25htry [?25l : [?12l[?25h:tabmove foo [?25l: [?12l[?25h:catch E474 [?25l: [?12l[?25h:let a='E474 caught.' [?25l: [?12l[?25h:endtry  No Name] No Name] No Name] No Name] No Name]  + t62.in  No Name] No Name] No Name] No Na X[?25lendif let w:a='a' let tabn=tabpagenr()[?12l[?25h[?25l =[?12l[?25ha [?25lE474 caught.[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test autocommands [?25l[?12l[?25h[?25l:[?12l[?25htabonly! [?25l let g:r+=['WinLeave', 'WinEnter'][?12l[?25h[?25l:[?12l[?25hlet g:r=[] [?25l[?12l[?25h[?25l:[?12l[?25hcommand -nargs=1 -bar C :call add(g:r, '=== ' . . ' ===')| [?25l[?12l[?25h[?25l:[?12l[?25hfunction Test() [?25l : [?12l[?25h let hasau=has('autocmd') [?25l: [?12l[?25h if hasau [?25l: [?12l[?25h autocmd TabEnter * :call add(g:r, 'TabEnter') [?25l: [?12l[?25h autocmd WinEnter * :call add(g:r, 'WinEnter') [?25l: [?12l[?25h autocmd BufEnter * :call add(g:r, 'BufEnter') [?25l: [?12l[?25h autocmd TabLeave * :call add(g:r, 'TabLeave') [?25l: [?12l[?25h autocmd WinLeave * :call add(g:r, 'WinLeave') [?25l: [?12l[?25h autocmd BufLeave * :call add(g:r, 'BufLeave') [?25l: [?12l[?25h endif [?25l: [?12l[?25h let t:a='a' [?25l: [?12l[?25h C tab split [?25l: [?12l[?25h if !hasau [?25l: [?12l[?25h let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] [?25l: [?12l[?25h endif [?25l: [?12l[?25h let t:a='b' [?25l: [?12l[?25h C tabnew [?25l: [?12l[?25h if !hasau [?25l: [?12l[?25h let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter'] [?25l: [?12l[?25h endif [?25l: [?12l[?25h let t:a='c' [?25l: [?12l[?25h call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) [?25l: [?12l[?25h C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') [?25l: [?12l[?25h call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) [?25l: [?12l[?25h let w:a='a' [?25l: [?12l[?25h C vsplit [?25l: [?12l[?25h if !hasau [?25l: [?12l[?25h let g:r+=['WinLeave', 'WinEnter'] [?25l: [?12l[?25h endif [?25l: [?12l[?25h let w:a='a' [?25l: [?12l[?25h let tabn=tabpagenr() [?25l: [?12l[?25h let winr=range(1, winnr('$')) [?25l: [?12l[?25h C tabnext 1 [?25l: [?12l[?25h if !hasau [?25l: [?12l[?25h let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter'] [?25l: [?12l[?25h endif [?25l: [?12l[?25h call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) [?25l: [?12l[?25h C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') [?25l: [?12l[?25h call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) [?25l: [?12l[?25h if hasau [?25l: [?12l[?25h augroup TabDestructive [?25l: [?12l[?25h autocmd TabEnter * :C tabnext 2 | C tabclose 3 [?25l: [?12l[?25h augroup END [?25l: [?12l[?25h C tabnext 3 [?25l: [?12l[?25h let g:r+=[tabpagenr().'/'.tabpagenr('$')] [?25l: [?12l[?25h autocmd! TabDestructive TabEnter [?25l: [?12l[?25h C tabnew [?25l: [?12l[?25h C tabnext 1 [?25l: [?12l[?25h autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3 [?25l: [?12l[?25h C tabnext 3 [?25l: [?12l[?25h let g:r+=[tabpagenr().'/'.tabpagenr('$')] [?25l: [?12l[?25h else [?25l: [?12l[?25h let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnte r","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnt er","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEn ter","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabE nter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",] [?25l: [?12l[?25h endif [?25l: [?12l[?25hendfunction [?25llet g:r+=['WinLeave', 'WinEnter'] endif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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: 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.[?12l[?25h[?25l :[?12l[?25hcall Test() [?25l + test62.in  + test62.in  Xendif let w:a='a' let tabn=tabpagenr() let winr=range(1, winnr('$')) C tabnext 1 if !hasaulet 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 hasauaugroup TabDestructiveautocmd TabEnter * :C tabnext 2 | C tabclose 3augroup ENDC tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')]autocmd! TabDestructive TabEnterC tabnewC tabnext 1autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3C tabnext 3let g:r+=[tabpagenr().'/'.tabpagenr('$')] elselet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","==== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTabEnter","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: 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.[?12l[?25h[?25l :[?12l[?25h$ put =g:r [?25l68 more linesWinEnterTabEnterBufLeaveBufEntera b c=== call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') === 2 4 6=== vsplit === WinLeaveWinEnter=== tabnext 1 ===BufLeaveWinLeaveTabLeaveWinEnterTabEnterBufEntera a=== call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') === 2 4=== tabnext 3 ===BufLeaveWinLeaveTabLeav WinEnterTabEnter=== tabnext 2 ====== tabclose 3 ===2/2new ===WinLeaveTabLeaveWinEnterTabEnterBufLeave BufEnter === tabnext 1 ===BufLeave WinLeave TabLeave WinEnter TabEnterBufEnter=== tabnext 3 ===BufLeaveWinLeaveTabLeaveWinEnterTabEnter=== tabnext 2 === BufLeave WinLeave TabLeave WinEnter TabEnter === tabnext 2 === === tabclose 3 === BufEnter === tabclose 3 === 2/2[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h/^Results/,$w! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 88 lines, 1038 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test63.failed test.ok test.out X* viminfo cp test63.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test63.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test63.in" 157 lines, 4784 charactersTest 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': 'XXXX', '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() == [][?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 150 lines, 4605 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST: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}, {'groupp': '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:[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that "matcharg()" returns the correct group and pattern if a match [?25l[?12l[?25h[?25l:[?12l[?25h" --- is defined. [?25l[?12l[?25h[?25l:[?12l[?25hlet @r = "*** Test 1: " [?25l[?12l[?25h[?25l:[?12l[?25hhighlight MyGroup1 ctermbg=red [?25l[?12l[?25h[?25l:[?12l[?25hhighlight MyGroup2 ctermbg=green [?25l[?12l[?25h[?25l:[?12l[?25hhighlight MyGroup3 ctermbg=blue [?25l[?12l[?25h[?25l:[?12l[?25hmatch MyGroup1 /TODO/ [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25h2match MyGroup2 /FIXME/ [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25h3match MyGroup3 /XXX/ [?25lXXX[?12l[?25h[?25l:[?12l[?25hif matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME'] && matcharg(3) == ['MyGroup3', 'XXX'] [?25l: [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25h" --- Check that "matcharg()" returns an empty list if the argument is not 1, [?25l[?12l[?25h[?25l:[?12l[?25h" --- 2 or 3 (only 0 and 4 are tested). [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 2: " [?25l[?12l[?25h[?25l:[?12l[?25hif matcharg(0) == [] && matcharg(4) == [] [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25h" --- Check that "matcharg()" returns ['', ''] if a match is not defined. [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 3: " [?25l[?12l[?25h[?25l:[?12l[?25hmatch [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25h2match [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25h3match [?25lXXX[?12l[?25h[?25l:[?12l[?25hif matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', ''] [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25h" --- Check that "matchadd()" and "getmatches()" agree on added matches and [?25l[?12l[?25h[?25l:[?12l[?25h" --- that default values apply. [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 4: " [?25l[?12l[?25h[?25l:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO") [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42) [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17) [?25lXXX[?12l[?25h[?25l:[?12l[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, {'group ': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'X XX', 'priority': 60, 'id': 17}] [?25l: [?12l[?25h: let @r .= "OK\n" [?25l : [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25h" --- Check that "matchdelete()" deletes the matches defined in the previous [?25l[?12l[?25h[?25l:[?12l[?25h" --- test correctly. [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 5: " [?25l[?12l[?25h[?25l:[?12l[?25hcall matchdelete(m1) [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hcall matchdelete(m2) [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25hcall matchdelete(m3) [?25lXXX[?12l[?25h[?25l:[?12l[?25hunlet m1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m2 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m3 [?25l[?12l[?25h[?25l:[?12l[?25hif getmatches() == [] [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25h" --- Check that "matchdelete()" returns 0 if successful and otherwise -1. [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 6: " [?25l[?12l[?25h[?25l:[?12l[?25hlet m = matchadd("MyGroup1", "TODO") [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet r1 = matchdelete(m) [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet r2 = matchdelete(42) [?25lE803: ID not found: 42[?12l[?25h[?25l:[?12l[?25hif r1 == 0 && r2 == -1 [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25hunlet m [?25l[?12l[?25h[?25l:[?12l[?25hunlet r1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet r2 [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that "clearmatches()" clears all matches defined by ":match" and [?25l[?12l[?25h[?25l:[?12l[?25h" --- "matchadd()". [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 7: " [?25l[?12l[?25h[?25l:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO") [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42) [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17) [?25lXXX[?12l[?25h[?25l:[?12l[?25hmatch MyGroup1 /COFFEE/ [?25lCOFFEE[?12l[?25h[?25l:[?12l[?25h2match MyGroup2 /HUMPPA/ [?25lHUMPPA[?12l[?25h[?25l:[?12l[?25h3match MyGroup3 /VIM/ [?25lVIM[?12l[?25h[?25l:[?12l[?25hcall clearmatches() [?25lFIXMEXXXCOFFEEHUMPPAVIMTODOpp'FIXMETODO== TODO[?12l[?25h[?25l:[?12l[?25hif getmatches() == [] [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25hunlet m1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m2 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m3 [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that "setmatches()" restores a list of matches saved by [?25l[?12l[?25h[?25l:[?12l[?25h" --- "getmatches()" without changes. (Matches with equal priority must also [?25l[?12l[?25h[?25l:[?12l[?25h" --- remain in the same order.) [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 8: " [?25l[?12l[?25h[?25l:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO") [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42) [?25lFIXMEFIXME[?12l[?25h[?25l:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17) [?25lXXX[?12l[?25h[?25l:[?12l[?25hmatch MyGroup1 /COFFEE/ [?25lCOFFEE[?12l[?25h[?25l:[?12l[?25h2match MyGroup2 /HUMPPA/ [?25lHUMPPA[?12l[?25h[?25l:[?12l[?25h3match MyGroup3 /VIM/ [?25lVIM[?12l[?25h[?25l:[?12l[?25hlet ml = getmatches() [?25l[?12l[?25h[?25l:[?12l[?25hcall clearmatches() [?25lFIXMEXXXCOFFEEHUMPPAVIMTODOpp'FIXMETODO== TODO[?12l[?25h[?25l:[?12l[?25hcall setmatches(ml) [?25lFIXMEXXXCOFFEEHUMPPAVIMTODOpp'FIXMETODO== TODO[?12l[?25h[?25l:[?12l[?25hif getmatches() == ml [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25hcall clearmatches() [?25lFIXMEXXXCOFFEEHUMPPAVIMTODOpp'FIXMETODO== TODO[?12l[?25h[?25l:[?12l[?25hunlet m1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m2 [?25l[?12l[?25h[?25l:[?12l[?25hunlet m3 [?25l[?12l[?25h[?25l:[?12l[?25hunlet ml [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that "setmatches()" will not add two matches with the same ID. The [?25l[?12l[?25h[?25l:[?12l[?25h" --- expected behaviour (for now) is to add the first match but not the [?25l[?12l[?25h[?25l:[?12l[?25h" --- second and to return 0 (even though it is a matter of debate whether [?25l[?12l[?25h[?25l:[?12l[?25h" --- this can be considered successful behaviour). [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 9: " [?25l[?12l[?25h[?25l:[?12l[?25hlet r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'grou p': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}]) [?25lE801: ID already taken: 1Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 = = 0 [?25l: [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/ :3match MyGroup3 /VIM/TODOpp'TODO== TODO[?12l[?25h[?25l :[?12l[?25hcall clearmatches() [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hunlet r1 [?25l[?12l[?25h[?25l:[?12l[?25h" --- Check that "setmatches()" returns 0 if successful and otherwise -1. [?25l[?12l[?25h[?25l:[?12l[?25h" --- (A range of valid and invalid input values are tried out to generate the [?25l[?12l[?25h[?25l:[?12l[?25h" --- return values.) [?25l[?12l[?25h[?25l:[?12l[?25hlet @r .= "*** Test 10: " [?25l[?12l[?25h[?25l:[?12l[?25hlet rs1 = setmatches([]) [?25l[?12l[?25h[?25l:[?12l[?25hlet rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}]) [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hcall clearmatches() [?25lTODOpp'TODO== TODO[?12l[?25h[?25l:[?12l[?25hlet rf1 = setmatches(0) [?25lE714: List required[?12l[?25h[?25l:[?12l[?25hlet rf2 = setmatches([0]) [?25lE474: Invalid argument[?12l[?25h[?25l:[?12l[?25hlet rf3 = setmatches([{'wrong key': 'wrong value'}]) [?25lE474: Invalid argument[?12l[?25h[?25l:[?12l[?25hif rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1 [?25l : [?12l[?25h: let @r .= "OK\n" [?25l: [?12l[?25h:else [?25l: [?12l[?25h: let @r .= "FAILED\n" [?25l: [?12l[?25h:endif [?25l:let m2 = matchadd("MyGroup2", "FIXME", 42) :let m3 = matchadd("MyGroup3", "XXX", 60, 17) :match MyGroup1 /COFFEE/ :2match MyGroup2 /HUMPPA/[?12l[?25h[?25l :[?12l[?25hunlet rs1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet rs2 [?25l[?12l[?25h[?25l:[?12l[?25hunlet rf1 [?25l[?12l[?25h[?25l:[?12l[?25hunlet rf2 [?25l[?12l[?25h[?25l:[?12l[?25hunlet rf3 [?25l[?12l[?25h[?25l:[?12l[?25hhighlight clear MyGroup1 [?25l[?12l[?25h[?25l:[?12l[?25hhighlight clear MyGroup2 [?25l[?12l[?25h[?25l:[?12l[?25hhighlight clear MyGroup3 [?25l[?12l[?25h [?25l 10 more lines *** Test 1: OK10 more lines[?12l[?25h[?25l *** Test 2: OK[?12l[?25h[?25l :[?12l[?25h/^Results/,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 11 lines, 170 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test64.failed test.ok test.out X* viminfo cp test64.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test64.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test64.in" 608 lines, 24586 charactersTest 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'])[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for regexp patterns without multi-byte support.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 575 lines, 24111 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTESTcall 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 /\%^ yeGo^[p:" 50%/\%^.. yeGo^[pA END^[:" 50%/\%$ "ayb20gg/..\%$ "bybGo^["apo^["bp:" :" :""""" Write the results """"""""""""" :/\%#=1^Results/,$wq! test.out ENDTEST Substitute here: Ta 5 Ac 7 Behind: asdfasd\zs.', 'aword. ', '.']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Tests for \@= and \& features [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'abc\@=', 'abc', 'ab']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'abc\@=cd', 'abcd', 'abcd']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'abc\@=', 'ababc', 'ab']) [?25l[?12l[?25h[?25l:[?12l[?25h" will never match, no matter the input text [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'abcd\@=e', 'abcd']) [?25l[?12l[?25h[?25l:[?12l[?25h" will never match [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'abcd\@=e', 'any text in here ... ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs fri end']) [?25lcall setpos('.', [0, 1, 0, 0])[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(foo\)\@!...bar', 'foobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 's']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Combining different tests and features [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '', 'abcd', '']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v(())', 'any possible text', '']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v%(ab(xyz)c)', ' abxyzc ', 'abxyzc', 'xyz']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', '']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" \%u and friends [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%d32', 'yes no', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%o40', 'yes no', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%x20', 'yes no', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%u0020', 'yes no', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%U00000020', 'yes no', ' ']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h""""" \%[abc] [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'fobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'barxx', 'barx']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'bxx', 'bx']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'xxx', 'x']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '@\%[\w\-]*', '[@pandoc]', '@pandoc']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Alternatives, must use first longest match [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'goo\|go', 'google', 'goo']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\', 'foobar']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h""""" \@> [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(a*\)\@>a', 'aaaa']) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) [?25l[?12l[?25h[?25l:[?12l[?25h" TODO: BT engine does not restore submatch after failure [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" "\_" prepended negated collection matches EOL [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"]) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"]) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Requiring lots of states. [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1 234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"]) [?25lcall setpos('.', [0, 1, 0, 0])[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Skip adding state twice [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO']) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Run the tests [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hfor t in tl [?25l : [?12l[?25h: let re = t[0] [?25l: [?12l[?25h: let pat = t[1] [?25l: [?12l[?25h: let text = t[2] [?25l: [?12l[?25h: let matchidx = 3 [?25l: [?12l[?25h: for engine in [0, 1, 2] [?25l: [?12l[?25h: if engine == 2 && re == 0 || engine == 1 && re ==1 [?25l: [?12l[?25h: continue [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: let ®expengine = engine [?25l: [?12l[?25h: try [?25l: [?12l[?25h: let l = matchlist(text, pat) [?25l: [?12l[?25h: catch [?25l: [?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' [?25l: [?12l[?25h: endtry [?25l: [?12l[?25h:" check the match itself [?25l: [?12l[?25h: if len(l) == 0 && len(t) > matchidx [?25l: [?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expect ed: \"' . t[matchidx] . '\"' [?25l: [?12l[?25h: elseif len(l) > 0 && len(t) == matchidx [?25l: [?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . ' \", expected no match' [?25l: [?12l[?25h: elseif len(t) > matchidx && l[0] != t[matchidx] [?25l: [?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . ' \", expected: \"' . t[matchidx] . '\"' [?25l: [?12l[?25h: else [?25l: [?12l[?25h: $put ='OK ' . engine . ' - ' . pat [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: if len(l) > 0 [?25l: [?12l[?25h:" check all the nine submatches [?25l: [?12l[?25h: for i in range(1, 9) [?25l:[?12l[?25h: if len(t) <= matchidx + i [?25l:[?12l[?25h: let e = '' [?25l:[?12l[?25h: else [?25l:[?12l[?25h: let e = t[matchidx + i] [?25l:[?12l[?25h: endif [?25l:[?12l[?25h: if l[i] != e [?25l:[?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' [?25l:[?12l[?25h: endif [?25l:[?12l[?25h: endfor [?25l: [?12l[?25h: unlet i [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: endfor [?25l: [?12l[?25h:endfor [?25lOK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$ OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<=$ OK 0 - \\\@ 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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b 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.*$\)\@=[?12l[?25h[?25l :[?12l[?25hunlet t tl e l [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""""" multi-line tests """""""""""""""""""" [?25l[?12l[?25h[?25l:[?12l[?25hlet tl = [] [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" back references [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']]) [?25l[?12l[?25h[?25l:[?12l[?25hcall 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']]) [?25lOK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$ OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<=$[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" line breaks [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def', 'XXjk', 'lmn'] ])[?25lOK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check that \_[0-9] matching EOL does not break a following \> [?25l[?12l[?25h[?25l:[?12l[?25hcall 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', ''], ['', 'lo calnet/XX', '']]) [?25lOK 1 - ^.*\.\(.*\)/.\+\(\1\)\@<=$ OK 2 - ^.*\.\(.*\)/.\+\(\1\)\@<=$[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check a pattern with a line break and ^ and $ [?25l[?12l[?25h[?25l:[?12l[?25hcall add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']]) [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h"""" Run the multi-line tests [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h$put ='multi-line tests' [?25l multi-line tests[?12l[?25h[?25l :[?12l[?25hfor t in tl [?25l : [?12l[?25h: let re = t[0] [?25l: [?12l[?25h: let pat = t[1] [?25l: [?12l[?25h: let before = t[2] [?25l: [?12l[?25h: let after = t[3] [?25l: [?12l[?25h: for engine in [0, 1, 2] [?25l: [?12l[?25h: if engine == 2 && re == 0 || engine == 1 && re ==1 [?25l: [?12l[?25h: continue [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: let ®expengine = engine [?25l: [?12l[?25h: new [?25l: [?12l[?25h: call setline(1, before) [?25l: [?12l[?25h: exe '%s/' . pat . '/XX/' [?25l: [?12l[?25h: let result = getline(1, '$') [?25l: [?12l[?25h: q! [?25l: [?12l[?25h: if result != after [?25l: [?12l[?25h: $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . '\", expected: \ "' . string(after) . '\", got: \"' . string(result) . '\"' [?25l: [?12l[?25h: else [?25l: [?12l[?25h: $put ='OK ' . engine . ' - ' . pat [?25l: [?12l[?25h: endif [?25l: [?12l[?25h: endfor [?25l: [?12l[?25h:endfor [?25lOK 2 - \(<<\)\@1<=span. OK 0 - \(<<\)\@2<=span. OK 1 - \(<<\)\@2<=span. OK 2 - \(<<\)\@2<=span. 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\)\@<=.*a*\)\@>aa*\)\@>aa*\)\@>a(a*\)\@>b(a*\)\@>b(a*\)\@>b(a*\)\@>a\|a\+2 - \(a*\)\@>a\|a\+0 - \_[^8-9]\+1 - \_[^8-9]\+2 - \_[^8-9]\+0 - \_[^a]\+1 - \_[^a]\+2 - \_[^a]\+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^.\(.\).\_..\1.^.\(.\).\_..\1.^.\(.\).\_..\1.v.*\/(.*)\n.*\/\1$ OK 1 - \v.*\/(.*)\n.*\/\1$ OK 2 - \v.*\/(.*)\n.*\/\1$ OK 0 - \S.*\nx1 - \S.*\nx2 - \S.*\nx0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44]\_[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-44]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>0 - a\n^b$\n^c1 - a\n^b$\n^cOK 2 - a\n^b$\n^c[?12l[?25h[?25l :[?12l[?25hunlet t tl [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check that using a pattern on two lines doesn't get messed up by using [?25l[?12l[?25h[?25l:[?12l[?25h" matchstr() with \ze in between. [?25l[?12l[?25h[?25l:[?12l[?25hset re=0 [?25l[?12l[?25h[?25l/[?12l[?25h^Substitute here [?25lsearch hit BOTTOM, continuing at TOP%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 /\%^ yeGo^[p:" 50%/\%^.. yeGo^[pA END^[:" 50%/\%$ "ayb20gg/..\%$ "bybGo^["apo^["bp:" :" :""""" Write the results """"""""""""" :/\%#=1^Results/,$wq! test.out ENDTEST Substitute here: Ta 5 Ac 7 Behind: asdfasdTa 5 Ac 7 [?12l[?25h[?25l/[?12l[?25h^Substitute here [?25lsearch hit BOTTOM, continuing at TOP[?12l[?25h[?25l:[?12l[?25h.+1,.+2yank [?25l[?12l[?25h[?25lOK 2 - \(<<\)\@1<=span. OK 0 - \(<<\)\@2<=span. OK 1 - \(<<\)\@2<=span. OK 2 - \(<<\)\@2<=span. 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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b 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-44]\_[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-44]\_[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-44]\_[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 [?12l[?25h[?25l [?12l[?25h[?25l Ta 5 [?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check a pattern with a look beind crossing a line boundary [?25l[?12l[?25h[?25l/[?12l[?25h^Behind: [?25lsearch hit BOTTOM, continuing at TOP1,$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 /\%^ yeGo^[p:" 50%/\%^.. yeGo^[pA END^[:" 50%/\%$ "ayb20gg/..\%$ "bybGo^["apo^["bp:" :" :""""" Write the results """"""""""""" :/\%#=1^Results/,$wq! test.out ENDTEST Substitute here: Ta 5 Ac 7 Behind: asdfasd 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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 [?12l[?25h[?25l [?12l[?25h[?25l xxstart3 [?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check matching Visual area [?25l[?12l[?25h[?25l/[?12l[?25h^Visual: [?25lsearch hit BOTTOM, continuing at TOP:put o-2-^[:set re=2 :call Postest() :put :" :" start and end of buffer /\%^ yeGo^[p:" 50%/\%^.. yeGo^[pA END^[:" 50%/\%$ "ayb20gg/..\%$ "bybGo^["apo^["bp:" :" :""""" Write the results """"""""""""" :/\%#=1^Results/,$wq! test.out ENDTEST Substitute here: Ta 5 Ac 7 Behind: asdfasd[?12l[?25hs/\%Ve/E/g [?25l3 substitutions on 1 linexE thE thE [?12l[?25h [?25landaxand andaxand [?12l[?25h[?25l:'<,'>[?12l[?25hs/\%Va/A/g [?25l6 substitutions on 1 lineAndAxAnd AndAxAnd[?12l[?25h ooo[?25l[?12l[?25h[?25lxofor foro[?12l[?25h[?25lx oooxofor foro[?12l[?25h[?25l:'<,'>[?12l[?25hs/\%Vo/O/g [?25l8 substitutions on 2 linesxOfOr fOrOx oooxOfOr fOrO [?12l[?25h[?25l:[?12l[?25h/^Visual/+1,/^Visual/+4yank [?25lsearch hit BOTTOM, continuing at TOP 4 lines yanked[?12l[?25h[?25lOK 1 - \(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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 [?12l[?25h[?25l [?12l[?25h[?25l 4 more lines thexE thE thExethe4 more lines[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check matching marks [?25l[?12l[?25h[?25l/[?12l[?25h^Marks: [?25lsearch hit BOTTOM, continuing at TOP/\%^ yeGo^[p:" 50%/\%^.. yeGo^[pA END^[:" 50%/\%$ "ayb20gg/..\%$ "bybGo^["apo^["bp:" :" :""""" Write the results """"""""""""" :/\%#=1^Results/,$wq! test.out ENDTEST Substitute here: Ta 5 Ac 7 Behind: asdfasd's.*\%<'e../here/ [?25lhereasdf[?12l[?25h asdf dfsa dfsadf[?25l:[?12l[?25h.-4,.+6s/.\%>'s\_.*\%<'e../again/ [?25l asdfagainasdfOK 1 - c*[?12l[?25h[?25l:[?12l[?25h/^Marks:/+1,/^Marks:/+3yank [?25lsearch hit BOTTOM, continuing at TOP 3 lines yanked[?12l[?25h[?25lOK 0 - \v\C%( 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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxooo [?12l[?25h[?25l [?12l[?25h[?25l 3 more lines asdfhereasdf3 more lines[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Check patterns matching cursor position. [?25l[?12l[?25h[?25l:[?12l[?25hfunc! Postest() [?25l : [?12l[?25h new [?25l: [?12l[?25h call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t\t\tfoo", 'ababa bababababfoo', 'bababababababafoo', '********_']) [?25l: [?12l[?25h call setpos('.', [0, 1, 0, 0]) [?25l: [?12l[?25h s/\%>3c.//g [?25l: [?12l[?25h call setpos('.', [0, 2, 4, 0]) [?25l: [?12l[?25h s/\%#.*$//g [?25l: [?12l[?25h call setpos('.', [0, 3, 0, 0]) [?25l: [?12l[?25h s/\%<3c./_/g [?25l: [?12l[?25h %s/\%4l\%>5c./_/g [?25l: [?12l[?25h %s/\%6l\%>25v./_/g [?25l: [?12l[?25h %s/\%>6l\%3c./!/g [?25l: [?12l[?25h %s/\%>7l\%12c./?/g [?25l: [?12l[?25h %s/\%>7l\%<9l\%>5v\%<8v./#/g [?25l: [?12l[?25h 1,$yank [?25l: [?12l[?25h quit! [?25l: [?12l[?25hendfunc [?25lOK 2 - \v\C%( 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 - \(a*\)\@>a OK 1 - \(a*\)\@>a OK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>b OK 2 - \(a*\)\@>b OK 0 - \(a*\)\@>a\|a\+[?12l[?25h[?25lasdfagainasdf [?12l[?25h[?25l -0-[?12l[?25h[?25l :[?12l[?25hset re=0 [?25l[?12l[?25h[?25l:[?12l[?25hcall Postest() [?25l3 substitutions on 3 lines 9 lines yanked Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hput [?25l9 more lines Press ENTER or type command to continue[?12l[?25h[?25lOK 2 - \(a*\)\@>a OK 0 - \(a*\)\@>b OK 1 - \(a*\)\@>ba*\)\@>ba*\)\@>a\|a\+ OK 2 - \(a*\)\@>a\|a\+ OK 0 - \_[^8-9]\+1 - \_[^8-9]\+ OK 2 - \_[^8-9]\+ OK 0 - \_[^a]\+1 - \_[^a]\+2 - \_[^a]\+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}[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@= multi-line tests OK 0 - ^.\(.\).\_..\1. OK 1 - ^.\(.\).\_..\1. OK 2 - ^.\(.\).\_..\1.0 - \v.*\/(.*)\n.*\/\1$1 - \v.*\/(.*)\n.*\/\1$2 - \v.*\/(.*)\n.*\/\1$0 - \S.*\nx1 - \S.*\nxOK 2 - \S.*\nx\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44]\_[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-44]\_[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-44]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>a\n^b$\n^ca\n^b$\n^ca\n^b$\n^cTa 5Ac 7xxstart3thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxoooasdfhereasdfasdfagainasdf-0- ffobob__oooookoooo__moooooo f__ ab!babababababfoo ba!ab##abab?bafoo **!*****_[?12l[?25h[?25l -1-[?12l[?25h[?25l :[?12l[?25hset re=1 [?25l[?12l[?25h[?25l:[?12l[?25hcall Postest() [?25l3 substitutions on 3 lines 9 lines yanked Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hput [?25l9 more lines Press ENTER or type command to continue[?12l[?25h[?25lOK 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}[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@= multi-line tests OK 0 - ^.\(.\).\_..\1. OK 1 - ^.\(.\).\_..\1. OK 2 - ^.\(.\).\_..\1.0 - \v.*\/(.*)\n.*\/\1$1 - \v.*\/(.*)\n.*\/\1$2 - \v.*\/(.*)\n.*\/\1$0 - \S.*\nx1 - \S.*\nxOK 2 - \S.*\nx\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44]\_[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-44]\_[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-44]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>a\n^b$\n^ca\n^b$\n^ca\n^b$\n^cTa 5Ac 7xxstart3thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxoooasdfhereasdfasdfagainasdf-0- ffobob__oooookoooo__moooooo f__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob__ooooo koooo__ moooooo f__ ab!bababababab ba!ab##abab?bafoo **!*****_[?12l[?25h[?25l -2-[?12l[?25h[?25l :[?12l[?25hset re=2 [?25l[?12l[?25h[?25l:[?12l[?25hcall Postest() [?25l3 substitutions on 3 lines 9 lines yanked Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25hput [?25l9 more lines Press ENTER or type command to continue[?12l[?25h[?25l:[?12l[?25h" [?25lOK 1 - ^.\(.\).\_..\1. OK 2 - ^.\(.\).\_..\1. OK 0 - \v.*\/(.*)\n.*\/\1$ OK 1 - \v.*\/(.*)\n.*\/\1$2 - \v.*\/(.*)\n.*\/\1$0 - \S.*\nx1 - \S.*\nxOK 2 - \S.*\nx\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44]\_[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-44]\_[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-44]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>a\n^b$\n^ca\n^b$\n^ca\n^b$\n^cTa 5Ac 7xxstart3thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxoooasdfhereasdfasdfagainasdf-0- ffobob__oooookoooo__moooooo f__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob__ooooo koooo__ moooooo f__ ab!bababababab ba!ab##abab?bafoo **!*****_ -2- ffo bob__ooooo koooo__ moooooo f__ ab!bababababab ba!ab##abab?bafoo **!*****_[?12l[?25h[?25l :[?12l[?25h" start and end of buffer [?25l[?12l[?25h[?25l/[?12l[?25h\%^ [?25lsearch hit BOTTOM, continuing at TOPTest 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']) search hit BOTTOM, continuing at TOP[?12l[?25h[?25lOK 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxooo asdfhereasdf asdfagainasdf -0- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -2- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ [?12l[?25h[?25l [?12l[?25h[?25lTest[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25lOK 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)*)+[?12l[?25h[?25l/[?12l[?25h\%^.. [?25lsearch hit BOTTOM, continuing at TOPTest 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']) search hit BOTTOM, continuing at TOP[?12l[?25h[?25lOK 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxooo asdfhereasdf asdfagainasdf -0- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -2- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ Test [?12l[?25h[?25l [?12l[?25h[?25lTest[?12l[?25h[?25lt END[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25lOK 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)*)+[?12l[?25h[?25l/[?12l[?25h\%$ [?25lOK 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxooo asdfhereasdf asdfagainasdf -0- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -2- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ Test Test END[?12l[?25h[?25lTest 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'])[?12l[?25h[?25l/[?12l[?25h..\%$ [?25lOK 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-44]\_[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-44]\_[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-44]\_[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 Ta 5 Ac 7 xxstart3 thexE thE thExethe AndAxAnd AndAxAnd oooxOfOr fOrOxooo oooxOfOr fOrOxooo asdfhereasdf asdfagainasdf -0- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -1- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ -2- ffo bob __ooooo koooo__ moooooof__ ab!babababababfoo ba!ab##abab?bafoo **!*****_ Test Test END[?12l[?25h [?25l [?12l[?25h[?25lEN[?12l[?25h[?25l [?12l[?25h[?25lE[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h""""" Write the results """"""""""""" [?25l[?12l[?25h[?25l:[?12l[?25h/\%#=1^Results/,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 1018 lines, 18459 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test65.failed test.ok test.out X* viminfo cp test65.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test65.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test65.in" 95 lines, 2153 charactersTest 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))[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for floating point and logical operators.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 89 lines, 2067 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:$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[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hif !has("float") [?25l : [?12l[?25h: e! test.ok [?25l: [?12l[?25h: wq! test.out [?25l: [?12l[?25h:endif [?25l:$put =printf('%g', 4.0 / 1234) :$put ='dict' :$put =string({'x': 1.234, 'y': -2.0e20})[?12l[?25h[?25l :[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h$put =printf('%f', 123.456) [?25lResults of test65: 123.456000[?12l[?25h[?25l :[?12l[?25h$put =printf('%e', 123.456) [?25l 1.234560e+02[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', 123.456) [?25l 123.456[?12l[?25h[?25l :[?12l[?25h" check we don't crash on division by zero [?25l[?12l[?25h[?25l:[?12l[?25hecho 1.0 / 0.0 [?25linf[?12l[?25h[?25l:[?12l[?25h$put ='+=' [?25l +=[?12l[?25h[?25l :[?12l[?25hlet v = 1.234 [?25l[?12l[?25h[?25l:[?12l[?25hlet v += 6.543 [?25l[?12l[?25h[?25l:[?12l[?25h$put =printf('%g', v) [?25l 7.777[?12l[?25h[?25l :[?12l[?25hlet v = 1.234 [?25l[?12l[?25h[?25l:[?12l[?25hlet v += 5 [?25l[?12l[?25h[?25l:[?12l[?25h$put =printf('%g', v) [?25l 6.234[?12l[?25h[?25l :[?12l[?25hlet a = 5 [?25l[?12l[?25h[?25l:[?12l[?25hlet a += 3.333 [?25l[?12l[?25h[?25l:[?12l[?25h$put =string(a) [?25l 8.333[?12l[?25h[?25l :[?12l[?25h$put ='==' [?25l ==[?12l[?25h[?25l :[?12l[?25hlet v = 1.234 [?25l[?12l[?25h[?25l:[?12l[?25h$put =v == 1.234 [?25l 1[?12l[?25h[?25l :[?12l[?25h$put =v == 1.2341 [?25l 0[?12l[?25h[?25l :[?12l[?25h$put ='add-subtract' [?25l add-subtract[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', 4 + 1.234) [?25l 5.234[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', 1.234 - 8) [?25l -6.766[?12l[?25h[?25l :[?12l[?25h$put ='mult-div' [?25l mult-div[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', 4 * 1.234) [?25l 4.936[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', 4.0 / 1234) [?25l 0.003241[?12l[?25h[?25l :[?12l[?25h$put ='dict' [?25l dict[?12l[?25h[?25l :[?12l[?25h$put =string({'x': 1.234, 'y': -2.0e20}) [?25l {'x': 1.234, 'y': -2.0e20}[?12l[?25h[?25l :[?12l[?25h$put ='list' [?25l list[?12l[?25h[?25l :[?12l[?25h$put =string([-123.4, 2.0e-20]) [?25l [-123.4, 2.0e-20][?12l[?25h[?25l :[?12l[?25h$put ='abs' [?25l abs[?12l[?25h[?25l :[?12l[?25h$put =printf('%d', abs(1456)) [?25l 1456[?12l[?25h[?25l :[?12l[?25h$put =printf('%d', abs(-4)) [?25l 4[?12l[?25h[?25l :[?12l[?25h$put =printf('%d', abs([1, 2, 3])) [?25lE745: Using a List as a Number -1[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', abs(14.56)) [?25l 14.56[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', abs(-54.32)) [?25l 54.32[?12l[?25h[?25l :[?12l[?25h$put ='ceil' [?25l ceil[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', ceil(1.456)) [?25l 2.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', ceil(-5.456)) [?25l -5.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', ceil(-4.000)) [?25l -4.0[?12l[?25h[?25l :[?12l[?25h$put ='floor' [?25l floor[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', floor(1.856)) [?25l 1.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', floor(-5.456)) [?25l -6.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', floor(4.0)) [?25l 4.0[?12l[?25h[?25l :[?12l[?25h$put ='log10' [?25l log10[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', log10(1000)) [?25l 3.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', log10(0.01000)) [?25l -2.0[?12l[?25h[?25l :[?12l[?25h$put ='pow' [?25l pow[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', pow(3, 3.0)) [?25l 27.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', pow(2, 16)) [?25l 65536.0[?12l[?25h[?25l :[?12l[?25h$put ='round' [?25l round[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', round(0.456)) [?25l 0.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', round(4.5)) [?25l 5.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', round(-4.50)) [?25l -5.0[?12l[?25h[?25l :[?12l[?25h$put ='sqrt' [?25l sqrt[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', sqrt(100)) [?25l 10.0[?12l[?25h[?25l :[?12l[?25hecho sqrt(-4.01) [?25l-nan[?12l[?25h[?25l:[?12l[?25h$put ='str2float' [?25l str2float[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', str2float('1e40')) [?25l 1.0e40[?12l[?25h[?25l :[?12l[?25h$put ='trunc' [?25l trunc[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', trunc(1.456)) [?25l 1.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', trunc(-5.456)) [?25l -5.0[?12l[?25h[?25l :[?12l[?25h$put =printf('%g', trunc(4.000)) [?25l 4.0[?12l[?25h[?25l :[?12l[?25h$put ='float2nr' [?25l float2nr[?12l[?25h[?25l :[?12l[?25h$put =float2nr(123.456) [?25l 123[?12l[?25h[?25l :[?12l[?25h$put =float2nr(-123.456) [?25l -123[?12l[?25h[?25l :[?12l[?25h$put ='AND' [?25l AND[?12l[?25h[?25l :[?12l[?25h$put =and(127, 127) [?25l 127[?12l[?25h[?25l :[?12l[?25h$put =and(127, 16) [?25l 16[?12l[?25h[?25l :[?12l[?25h$put =and(127, 128) [?25l 0[?12l[?25h[?25l :[?12l[?25h$put ='OR' [?25l OR[?12l[?25h[?25l :[?12l[?25h$put =or(16, 7) [?25l 23[?12l[?25h[?25l :[?12l[?25h$put =or(8, 7) [?25l 15[?12l[?25h[?25l :[?12l[?25h$put =or(0, 123) [?25l 123[?12l[?25h[?25l :[?12l[?25h$put ='XOR' [?25l XOR[?12l[?25h[?25l :[?12l[?25h$put =xor(127, 127) [?25l 0[?12l[?25h[?25l :[?12l[?25h$put =xor(127, 16) [?25l 111[?12l[?25h[?25l :[?12l[?25h$put =xor(127, 128) [?25l 255[?12l[?25h[?25l :[?12l[?25h$put ='invert' [?25l invert[?12l[?25h[?25l :[?12l[?25h$put =and(invert(127), 65535) [?25l 65408[?12l[?25h[?25l :[?12l[?25h$put =and(invert(16), 65535) [?25l 65519[?12l[?25h[?25l :[?12l[?25h$put =and(invert(128), 65535) [?25l 65407[?12l[?25h[?25l :[?12l[?25h$put =invert(1.0) [?25lE805: Using a Float as a Number 0[?12l[?25h[?25l :[?12l[?25h/^Results/,$wq! test.out [?25lsearch hit BOTTOM, continuing at TOP "test.out" [New File] 73 lines, 430 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test66.failed test.ok test.out X* viminfo cp test66.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test66.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test66.in" 33 lines, 509 charactersTest for visual block shift and tab characters. STARTTEST :so small.vim /^one fe^V4jR^[ugvr1:'<,'>w! test.out /^abcdefgh ^V4jI ^[j<<11|D 7|a^[ 7|a^[ 7|a^[4k13|^V4j< :$-5,$w >> test.out :$-4,$s/\s\+//g ^V4kI ^[j<< 7|a^[ 7|a^[ 7|a^[4k13|^V4j3< :$-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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 16 lines, 234 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25h^one [?25l[?12l[?25hon[?25l[?12l[?25h[?25le one one one on[?12l[?25h[?25l4 fewer lines~ ~ ~ ~ 4 fewer lines[?12l[?25h[?25lmore lines; before #1 0 seconds agoone two three one two three one two three one two three one two three[?12l[?25h[?25le one one one on[?12l[?25h[?25l1 on1 on1 on1 on1[?12l[?25h[?25l:[?12l[?25h'<,'>w! test.out [?25l"test.out" [New File] 5 lines, 70 characters written[?12l[?25h[?25l/[?12l[?25h^abcdefgh [?25l[?12l[?25h[?25l[?12l[?25h[?25la a a a [?12l[?25h[?25la a a a abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz[?12l[?25h [?25labcdefghijklmnopqrstuvwxyz[?12l[?25h[?25l[?12l[?25h[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25l[?12l[?25h[?25li  [?12l[?25h[?25l5 lines > test.out [?25l"test.out"6 lines, 151 characters appended[?12l[?25h[?25l:[?12l[?25h$-4,$s/\s\+//g [?25l7 substitutions on 4 linesabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz[?12l[?25h[?25l[?12l[?25h[?25la a a a[?12l[?25h[?25l a a a a abcdefghijklmnopqrstuvwxyz abcdefghij abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz[?12l[?25h [?25labcdefghij[?12l[?25h ab[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25lc defghijklmnopqrstuvwxyz[?12l[?25h[?25l[?12l[?25h[?25li  [?12l[?25h[?25l5 lines > test.out [?25l"test.out"5 lines, 147 characters appended[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test67.failed test.ok test.out X* viminfo cp test67.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test67.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test67.in" 33 lines, 1109 charactersTest 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#: " . exists("#BufEnter#")) :au BufEnter let g:entered=1 :call add(results, "#BufEnter#: " . exists("#BufEnter#")) :edit testfile2.test :call add(results, "#BufEnter#: " . exists("#BufEnter#")) :e test.out :call append(0, results) :$d :w :qa! ENDTEST ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest that groups and patterns are tested correctly when calling exists() for[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 27 lines, 998 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hlet results=[] [?25l[?12l[?25h[?25l:[?12l[?25haugroup auexists [?25l[?12l[?25h[?25l:[?12l[?25haugroup END [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "##BufEnter: " . exists("##BufEnter")) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter: " . exists("#BufEnter")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufEnter * let g:entered=1 [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter: " . exists("#BufEnter")) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter")) [?25l[?12l[?25h[?25l:[?12l[?25haugroup auexists [?25l[?12l[?25h[?25l:[?12l[?25hau BufEnter * let g:entered=1 [?25l[?12l[?25h[?25l:[?12l[?25haugroup END [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter")) [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufEnter *.test let g:entered=1 [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test")) [?25l[?12l[?25h[?25l:[?12l[?25hedit testfile.test [?25l"testfile.test" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter#: " . exists("#BufEnter#")) [?25l[?12l[?25h[?25l:[?12l[?25hau BufEnter let g:entered=1 [?25l[?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter#: " . exists("#BufEnter#")) [?25l[?12l[?25h[?25l:[?12l[?25hedit testfile2.test [?25l"testfile2.test" [New File][?12l[?25h[?25l:[?12l[?25hcall add(results, "#BufEnter#: " . exists("#BufEnter#")) [?25l[?12l[?25h[?25l:[?12l[?25he test.out [?25l"test.out" [New File][?12l[?25h[?25l:[?12l[?25hcall append(0, results) [?25l##BufEnter: 1 #BufEnter: 0 #BufEnter: 1 #auexists#BufEnter: 0 #auexists#BufEnter: 1 #BufEnter#*.test: 0 #BufEnter#*.test: 1 #BufEnter#: 0 #BufEnter#: 1 #BufEnter#: 0[?12l[?25h[?25l:[?12l[?25h$d [?25l~ [?12l[?25h[?25l:[?12l[?25hw [?25l"test.out" [New File] 10 lines, 190 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test68.failed test.ok test.out X* viminfo cp test68.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test68.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test68.in" 117 lines, 930 charactersTest 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 ^V^A^[ ENDTEST { a ^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 b^[jA b^[ ENDTEST { 1 a # 1 a[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for text formatting.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 4 lines, 48 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset noai tw=2 fo=t [?25l[?12l[?25h[?25la b[?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 38 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset ai tw=2 fo=tw [?25l[?12l[?25h[?25lb[?12l[?25h a [?25lb[?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 4 lines, 34 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset tw=3 fo=t [?25l[?12l[?25h[?25l^A[?12l[?25h [?25la ^A [?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 5 lines, 58 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset tw=2 fo=tcq1 comments=:# [?25l[?12l[?25h [?25la b #a b}[?12l[?25h [?25l/^STARTTEST  STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 46 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=5 fo=tcn comments=:# A b^[jA b^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ 1 a[?12l[?25h[?25l :[?12l[?25hset tw=5 fo=tcn comments=:# [?25l[?12l[?25h[?25l b[?12l[?25h[?25l # 1 a[?12l[?25h[?25l # b[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 40 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=5 fo=qn comments=:# gwap ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ # 1 a b[?12l[?25h[?25l :[?12l[?25hset tw=5 fo=qn comments=:# [?25l[?12l[?25h[?25l[?12l[?25h[?25l # b[?12l[?25h[?25l /^STARTTEST } STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 40 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=5 fo=q2 comments=:# gwap ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ # x[?12l[?25h[?25l :[?12l[?25hset tw=5 fo=q2 comments=:# [?25l[?12l[?25h[?25l# x a [?12l[?25h[?25l # b[?12l[?25h[?25l /^STARTTEST } STARTTEST[?12l[?25h[?25l /^{/+2 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 26 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw& fo=a I^^^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+2 [?25l{ 1aa 2bb[?12l[?25h[?25l :[?12l[?25hset tw& fo=a [?25l[?12l[?25h[?25l1aa ^^2bb }STARTTEST[?12l[?25h [?25l/^STARTTEST [?12l[?25h[?25l /mno pqr/[?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 69 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/ A vwx yz^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25hmno pqr/ [?25l/* abc def ghi jkl * mno pqr stu[?12l[?25h[?25l :[?12l[?25hsetl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/ [?25l[?12l[?25h[?25l * vwx yz[?12l[?25h[?25l */[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^#/ [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 47 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:setl tw=12 fo=tqnc comments=:# A foobar^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^#/ [?25l # 1 xxxxx[?12l[?25h[?25l :[?12l[?25hsetl tw=12 fo=tqnc comments=:# [?25l[?12l[?25h[?25l # foobar[?12l[?25h[?25l [?12l[?25h[?25l /^STARTTEST  STARTTEST[?12l[?25h[?25l :g/^STARTTEST/.,/^ENDTEST/d [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2 lines, 56 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST[?12l[?25h[?25l :1;/^Results/,$wq! test.out[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d [?25l58 fewer lines# 1 xxxxx # foobar~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h1;/^Results/,$wq! test.out [?25l"test.out" [New File] 68 lines, 254 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test69.failed test.ok test.out X* viminfo cp test69.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test69.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test69.in" 159 lines, 1385 charactersTest for multi-byte text formatting. Also test, that 'mps' with multibyte chars works. And test "ra" on multi-byte characters. 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 ï¼¹^[ ENDTEST { X Xa X a XY X ï¼¹ } STARTTEST /^{/+1 :set tw=2 fo=tm gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo X Xa X a XY X ï¼¹ aX abX abcX abX c abXY^[ ENDTEST { X[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for multi-byte text formatting.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 2 lines, 34 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso mbyte.vim [?25l[?12l[?25h[?25l:[?12l[?25hset encoding=utf-8 [?25lTest for multi-byte text formatting. Also test, that 'mps' with multibyte chars works. And test "ra" on multi-byte characters. 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 ï¼¹^[ ENDTEST { X Xa X a XY X ï¼¹ } STARTTEST /^{/+1 :set tw=2 fo=tm gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo X Xa X a XY X ï¼¹ aX abX abcX abX c abXY^[ ENDTEST { X[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 5 lines, 58 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset tw=2 fo=t [?25l[?12l[?25h [?25lXYZ[?12l[?25h[?25l[?12l[?25h[?25lX[?12l[?25h[?25lï¼¹[?12l[?25h[?25lZ abc [?12l[?25h[?25lX[?12l[?25h[?25lï¼¹[?12l[?25h[?25lZ[?12l[?25h [?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 8 lines, 80 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l[?12l[?25h[?25l:[?12l[?25hset tw=1 fo=tm [?25l[?12l[?25h [?25la[?12l[?25h [?25la[?12l[?25h [?25lï¼¹ [?12l[?25h [?25lï¼¹ [?12l[?25h[?25l[?12l[?25h[?25lX [?12l[?25h[?25lX a [?12l[?25h[?25lX a [?12l[?25h[?25lX[?12l[?25h[?25lï¼¹ [?12l[?25h[?25lX [?12l[?25h[?25l ï¼¹ }[?12l[?25h [?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 13 lines, 140 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=2 fo=tm gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo X Xa X a XY X ï¼¹ aX abX abcX abX c abXY^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ X[?12l[?25h[?25l :[?12l[?25hset tw=2 fo=tm [?25l[?12l[?25h[?25l Xa[?12l[?25h[?25l a[?12l[?25h[?25l X a [?12l[?25h[?25l a[?12l[?25h[?25l XY [?12l[?25h[?25l ï¼¹ [?12l[?25h[?25l X ï¼¹ [?12l[?25h[?25l ï¼¹ [?12l[?25h[?25l aX [?12l[?25h[?25l X [?12l[?25h[?25l abX [?12l[?25h[?25l X [?12l[?25h[?25l abcX [?12l[?25h[?25l X [?12l[?25h[?25l abX c [?12l[?25h[?25lX c[?12l[?25h[?25l abXY [?12l[?25h[?25lX ï¼¹ [?12l[?25h[?25l[?12l[?25h[?25l X [?12l[?25h[?25lX a [?12l[?25h[?25lX a [?12l[?25h[?25lX[?12l[?25h[?25lï¼¹ [?12l[?25h[?25lX [?12l[?25h[?25lï¼¹ a[?12l[?25h[?25lX ab[?12l[?25h[?25lX abc[?12l[?25h[?25lX ab[?12l[?25h[?25lX c ab[?12l[?25h[?25l X[?12l[?25h[?25l ï¼¹ [?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 5 lines, 47 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set ai tw=2 fo=tm gqgqjgqgqo X Xa^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ X[?12l[?25h[?25l :[?12l[?25hset ai tw=2 fo=tm [?25l[?12l[?25h [?25l Xa[?12l[?25h[?25l a[?12l[?25h[?25l[?12l[?25h[?25l X [?12l[?25h[?25l X a[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 5 lines, 53 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set noai tw=2 fo=tm gqgqjgqgqo X Xa^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ X[?12l[?25h[?25l :[?12l[?25hset noai tw=2 fo=tm [?25l[?12l[?25h [?25l Xa[?12l[?25h[?25l a[?12l[?25h[?25l[?12l[?25h[?25l X [?12l[?25h[?25l X a[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 13 lines, 169 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=2 fo=cqm comments=n:X gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo X Xa Xaï¼¹ XY XYZ X ï¼¹ X YZ XX XXa XXY^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ X[?12l[?25h[?25l :[?12l[?25hset tw=2 fo=cqm comments=n:X [?25l[?12l[?25h[?25l Xa[?12l[?25h[?25l Xaï¼¹ [?12l[?25h[?25l XY [?12l[?25h[?25l XY [?12l[?25h[?25l XYZ [?12l[?25h[?25l XZ [?12l[?25h[?25l X ï¼¹ [?12l[?25h[?25l X YZ [?12l[?25h[?25l X Z [?12l[?25h[?25l XX [?12l[?25h[?25l XXa [?12l[?25h[?25l XXY [?12l[?25h[?25l[?12l[?25h[?25l X [?12l[?25h[?25l Xa [?12l[?25h[?25lXa[?12l[?25h[?25lXY [?12l[?25h[?25lX[?12l[?25h[?25l ï¼¹ [?12l[?25h[?25lX[?12l[?25h[?25lï¼¹[?12l[?25h[?25lXZ [?12l[?25h[?25lX [?12l[?25h[?25l ï¼¹ [?12l[?25h[?25lX [?12l[?25h[?25lï¼¹[?12l[?25h[?25lX Z [?12l[?25h[?25lX[?12l[?25h[?25l X [?12l[?25h[?25lX[?12l[?25h[?25l Xa [?12l[?25h[?25lX[?12l[?25h[?25lX[?12l[?25h[?25lï¼¹[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 30 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set tw=2 fo=tm RXa^[ ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{[?12l[?25h[?25l :[?12l[?25hset tw=2 fo=tm [?25l[?12l[?25h[?25l X a[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST STARTTEST[?12l[?25h[?25l /^{/+1 [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 3 lines, 34 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST:set mps+=^Vu2018:^Vu2019 d% ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^{/+1 [?25l{ ‘ two three ’ four[?12l[?25h[?25l :[?12l[?25hset mps+=^‘:^’ [?25l[?12l[?25h[?25l four[?12l[?25h[?25l }[?12l[?25h[?25l /^STARTTEST  STARTTEST[?12l[?25h[?25l /^ra test [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2 lines, 16 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTESTjVjra ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l/[?12l[?25h^ra test [?25l ra test[?12l[?25h[?25l ï½bbï½ [?12l[?25h[?25lbbï½ [?12l[?25h[?25l ï½ ï½ï½b [?12l[?25h[?25laaaaaaa [?12l[?25h [?25l /^STARTTEST STARTTEST[?12l[?25h[?25l :g/^STARTTEST/.,/^ENDTEST/d [?12l[?25h[?25l :set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" 2 lines, 56 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l /ENDTEST[?12l[?25h[?25l :1;/^Results/,$wq! test.out[?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d [?25l83 fewer lines~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h1;/^Results/,$wq! test.out [?25l"test.out" [New File] 151 lines, 604 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test70.failed test.ok test.out X* viminfo cp test70.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test70.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test70.in" 63 lines, 1501 charactersSmoke 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lSmoke test for MzScheme interface and mzeval() function[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 55 lines, 1398 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso mzscheme.vim [?25l"test.ok" 6 lines, 94 characters "test.out" [New File] 6 lines, 94 characters written [?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test71.failed test.ok test.out X* viminfo cp test71.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test71.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test71.in" 67 lines, 1209 charactersTest 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)[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTest for encryption.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 60 lines, 1082 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST:call append(0, cm0_read_back) :set key= fenc=latin1 :w! test.out :qa! ENDTEST[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25hset enc=latin1 [?25l: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 [?12l[?25h[?25l :[?12l[?25hbwipe! [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hr test71a.in [?25l"test71a.in" 14 lines, 314 charactersstart of text01234567890123456789012345678901234567line 2 foo bar blahline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxend of textstart of cm=zip bytesVimCrypt~01!^F^\lV'Þ}Mg| ê£V©ç^GE#3~N2Ué~Wend of cm=zip bytesstart of cm=blowfish bytesVimCrypt~02!k)¾^W~W#^VÝS~\õ=ºàÈ#¥M´~FJÃAÍ¥M´~F!~@^U~[õ^OáÒ^Y~B^V~X÷^MÚend of cm=blowfish bytes[?12l[?25h[?25l:[?12l[?25h/^start of text/+1 [?25l[?12l[?25h[?25l:[?12l[?25hlet text_lines = getline('.', line('.') + 2) [?25l[?12l[?25h[?25l:[?12l[?25h/^start of cm=zip bytes/+1 [?25l[?12l[?25h[?25l:[?12l[?25hlet cm0_bytes = getline('.', '.') [?25l[?12l[?25h[?25l:[?12l[?25h/^start of cm=blowfish bytes/+1 [?25l[?12l[?25h[?25l:[?12l[?25hlet cm1_bytes = getline('.', '.') [?25l[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hcall append(0, text_lines) [?25l01234567890123456789012345678901234567 line 2 foo bar blah line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[?12l[?25h[?25l:[?12l[?25h$d [?25l~ [?12l[?25h[?25l:[?12l[?25hX [?25lEnter encryption key: [?12l[?25h****** [?25lEnter same key again: [?12l[?25h****** [?25l01234567890123456789012345678901234567 line 2 foo bar blah[?12l[?25h[?25l:[?12l[?25hw! Xtestfile [?25l"Xtestfile" [New File][crypted] 3 lines, 98 characters written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l~ ~ [?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [crypted] 3 lines, 98 characters01234567890123456789012345678901234567 line 2 foo bar blah line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Xtestfile" [crypted] 3 lines, 98 characters[?12l[?25h[?25l:[?12l[?25hlet cm0_read_back = getline('.', '$') [?25l[?12l[?25h[?25l:[?12l[?25hset key= [?25l[?12l[?25h[?25l:[?12l[?25hset cryptmethod=blowfish [?25l[?12l[?25h[?25l:[?12l[?25h" If the blowfish test fails 'cryptmethod' will be 'zip' now. [?25l[?12l[?25h[?25l:[?12l[?25h%s/^/\=&cryptmethod == 'blowfish' ? "OK " : "blowfish test failed "/ [?25l3 substitutions on 3 linesOK 01234567890123456789012345678901234567 OK line 2 foo bar blah OK line 3 xxx [?12l[?25h[?25l:[?12l[?25hX [?25lEnter encryption key: [?12l[?25h****** [?25lEnter same key again: [?12l[?25h****** [?25lOK 01234567890123456789012345678901234567 OK line 2 foo bar blah[?12l[?25h[?25l:[?12l[?25hw! Xtestfile [?25l"Xtestfile" [blowfish] 3 lines, 107 characters written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l~ ~ [?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [blowfish] 3 lines, 107 charactersOK 01234567890123456789012345678901234567 OK line 2 foo bar blah OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Xtestfile" [blowfish] 3 lines, 107 characters[?12l[?25h[?25l:[?12l[?25hlet cm1_read_back = getline('.', '$') [?25l[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l~ ~ [?12l[?25h[?25l:[?12l[?25hset bin noeol key= [?25l[?12l[?25h[?25l:[?12l[?25hcall append(0, cm0_bytes) [?25lVimCrypt~01!^F^\lV'Þ}Mg| ê£V©ç^GE#3~N2Ué~W[?12l[?25h[?25l:[?12l[?25h$d [?25l~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin1 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtestfile [?25l"Xtestfile" [Incomplete last line] 1 line, 36 characters written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l[?12l[?25h[?25l:[?12l[?25hset nobin [?25l[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [crypted] 2 lines, 24 characters1234567890 aábbccddeëff"Xtestfile" [crypted] 2 lines, 24 characters[?12l[?25h[?25l:[?12l[?25hlet cm0_read_bin = getline('.', '$') [?25l[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l~ [?12l[?25h[?25l:[?12l[?25hset bin noeol key= [?25l[?12l[?25h[?25l:[?12l[?25hcall append(0, cm1_bytes) [?25lVimCrypt~02!k)¾^W~W#^VÝS~\õ=ºàÈ#¥M´~FJÃAÍ¥M´~F!~@^U~[õ^OáÒ^Y~B^V~X÷^MÚ[?12l[?25h[?25l:[?12l[?25h$d [?25l~ [?12l[?25h[?25l:[?12l[?25hset fenc=latin1 [?25l[?12l[?25h[?25l:[?12l[?25hw! Xtestfile [?25l"Xtestfile" [Incomplete last line] 1 line, 55 characters written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l[?12l[?25h[?25l:[?12l[?25hset nobin [?25l[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [blowfish] 2 lines, 27 charactersasdfasdfasdf 0001112223333"Xtestfile" [blowfish] 2 lines, 27 characters[?12l[?25h[?25l:[?12l[?25hcall append(0, cm0_read_bin) [?25l1234567890 aábbccddeëff[?12l[?25h[?25l:[?12l[?25hcall append(0, cm1_read_back) [?25lOK 01234567890123456789012345678901234567 OK line 2 foo bar blah OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[?12l[?25h[?25l:[?12l[?25hcall append(0, cm0_read_back) [?25l01234567890123456789012345678901234567 line 2 foo bar blah line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[?12l[?25h[?25l:[?12l[?25hset key= fenc=latin1 [?25l[?12l[?25h[?25l:[?12l[?25hw! test.out [?25l"test.out" [New File] 10 lines, 256 characters written[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test72.failed test.ok test.out X* viminfo cp test72.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test72.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test72.in" 115 lines, 1707 charactersTests 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for undo file.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 104 lines, 1510 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST: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[?12l[?25h[?25l [?12l[?25h[?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test 'undofile': first a simple one-line change. [?25l[?12l[?25h[?25l:[?12l[?25hset nocompatible viminfo+=nviminfo visualbell [?25l[?12l[?25h[?25l:[?12l[?25hset ul=100 undofile nomore [?25l[?12l[?25h[?25l:[?12l[?25he! Xtestfile [?25l"Xtestfile" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l-- INSERT --this is one line[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hs/one/ONE/ [?25lONE [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestfile" [New] 1L, 17C written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l"test72.in" 115L, 1707C:set noundofile ul=0 i^[u:e! Xtestfile:set undofile ul=100uuuuuu:w >>test.out:" And now with encryption, cryptmethod=zip:e! Xtestfile:set undofile cm=zipggdGimondaytuesdaywednesdaythursdayfriday^[:set ul=100kkkdd:set ul=100dd:set ul=100dd:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=uu:w >>test.out:":":" With encryption, cryptmethod=blowfish:e! Xtestfile:set undofile cm=blowfishggdGijanfebmaraprjun^[:set ul=100kk0ifoo ^[:set ul=100dd:set ul=100ibar ^[:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=/bar:.w >>test.outu:.w >>test.outu:.w >>test.outu:.w >>test.out:":" Rename the undo file so that it gets cleaned up.:call rename(".Xtestfile.un~", "Xtestundo"):qa!ENDTEST1111 -----2222 -----123456789[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" 1L, 17Cthis is ONE line~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l1 change; before #2 0 seconds agoone [?12l[?25h[?25l:[?12l[?25h.w! test.out [?25l"test.out" [New] 1L, 17C written[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test 'undofile', change in original file fails check [?25l[?12l[?25h[?25l:[?12l[?25hset noundofile [?25l[?12l[?25h[?25l:[?12l[?25he! Xtestfile [?25l"Xtestfile" 1L, 17CONE [?12l[?25h[?25l:[?12l[?25hs/line/Line/ [?25lL [?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestfile" 1L, 17C written[?12l[?25h[?25l:[?12l[?25hset undofile [?25l[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l"test72.in" 115L, 1707C:set noundofile ul=0 i^[u:e! Xtestfile:set undofile ul=100uuuuuu:w >>test.out:" And now with encryption, cryptmethod=zip:e! Xtestfile:set undofile cm=zipggdGimondaytuesdaywednesdaythursdayfriday^[:set ul=100kkkdd:set ul=100dd:set ul=100dd:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=uu:w >>test.out:":":" With encryption, cryptmethod=blowfish:e! Xtestfile:set undofile cm=blowfishggdGijanfebmaraprjun^[:set ul=100kk0ifoo ^[:set ul=100dd:set ul=100ibar ^[:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=/bar:.w >>test.outu:.w >>test.outu:.w >>test.outu:.w >>test.out:":" Rename the undo file so that it gets cleaned up.:call rename(".Xtestfile.un~", "Xtestundo"):qa!ENDTEST1111 -----2222 -----123456789[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" 1L, 17Cthis is ONE Line~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25h" TODO: this beeps [?25l[?12l[?25h[?5h[?5l[?25lAlready at oldest change[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1L, 17C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test 'undofile', add 10 lines, delete 6 lines, undo 3 [?25l[?12l[?25h[?25l:[?12l[?25hset undofile [?25l[?12l[?25h[?25l--No lines in buffer--[?12l[?25h[?25l-- INSERT --one twothreefourfivesixseveneightnineten[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hw [?25l"Xtestfile" 4L, 17C written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l"test72.in" 115L, 1707C: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=zipggdGimondaytuesdaywednesdaythursdayfriday^[:set ul=100kkkdd:set ul=100dd:set ul=100dd:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=uu:w >>test.out:":":" With encryption, cryptmethod=blowfish:e! Xtestfile:set undofile cm=blowfishggdGijanfebmaraprjun^[:set ul=100kk0ifoo ^[:set ul=100dd:set ul=100ibar ^[:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=/bar:.w >>test.outu:.w >>test.outu:.w >>test.outu:.w >>test.out:":" Rename the undo file so that it gets cleaned up.:call rename(".Xtestfile.un~", "Xtestundo"):qa!ENDTEST1111 -----2222 -----123456789[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" 4L, 17Contwo nineten~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l1 more line; before #7 0 seconds agoeight[?12l[?25h[?25l1 more line; before #6 0 seconds agoseven[?12l[?25h[?25l1 more line; before #5 0 seconds agosix[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 7L, 33C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test that reading the undofiles when setting undofile works [?25l[?12l[?25h[?25l:[?12l[?25hset noundofile ul=0 [?25l[?12l[?25h[?25l-- INSERT --six u[?12l[?25hs[?25l[?12l[?25h[?25l1 line less; before #8 0 seconds ago ~ [?12l[?25h[?25l:[?12l[?25he! Xtestfile [?25l"Xtestfile" 4L, 17Cnine ten~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset undofile ul=100 [?25l[?12l[?25h[?25l1 more line; before #7 0 seconds agoeight[?12l[?25h[?25l1 more line; before #6 0 seconds agoseven[?12l[?25h[?25l1 more line; before #5 0 seconds agosix[?12l[?25h[?25l1 more line; before #4 0 seconds agofive[?12l[?25h[?25l1 more line; before #3 0 seconds agofour[?12l[?25h[?25l1 more line; before #2 0 seconds agothree[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 10L, 49C appended[?12l[?25h[?25l:[?12l[?25h" And now with encryption, cryptmethod=zip [?25l[?12l[?25h[?25l:[?12l[?25he! Xtestfile [?25l"Xtestfile" 4L, 17Cninten~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset undofile cm=zip [?25l[?12l[?25h[?25l~ ~ ~ --No lines in buffer--[?12l[?25h[?25l-- INSERT --monday tuesdaywednesdaythursdayfriday[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hX [?25lEnter encryption key: [?12l[?25h****** [?25lEnter same key again: [?12l[?25h****** [?25lmonday friday[?12l[?25h[?25l:[?12l[?25hw! [?25l"Xtestfile" [crypted] 2L, 14C written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l"test72.in" 115L, 1707C:set noundofile ul=0 i^[u:e! Xtestfile:set undofile ul=100uuuuuu:w >>test.out:" And now with encryption, cryptmethod=zip:e! Xtestfile:set undofile cm=zipggdGimondaytuesdaywednesdaythursdayfriday^[:set ul=100kkkdd:set ul=100dd:set ul=100dd:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=uu:w >>test.out:":":" With encryption, cryptmethod=blowfish:e! Xtestfile:set undofile cm=blowfishggdGijanfebmaraprjun^[:set ul=100kk0ifoo ^[:set ul=100dd:set ul=100ibar ^[:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=/bar:.w >>test.outu:.w >>test.outu:.w >>test.outu:.w >>test.out:":" Rename the undo file so that it gets cleaned up.:call rename(".Xtestfile.un~", "Xtestundo"):qa!ENDTEST1111 -----2222 -----123456789[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [crypted] 2L, 14Cmonday friday ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "Xtestfile" [crypted] 2L, 14C[?12l[?25h[?25l:[?12l[?25hset key= [?25l[?12l[?25h[?25l1 more line; before #11 0 seconds agothursday[?12l[?25h[?25l1 more line; before #10 0 seconds agowednesday[?12l[?25h[?25l:[?12l[?25hw >>test.out [?25l"test.out" 4L, 33C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" With encryption, cryptmethod=blowfish [?25l[?12l[?25h[?25l:[?12l[?25he! Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h************************* [?25l"Xtestfile" [noeol][crypted] 1L, 14C;~HÙ6à^]QÖ^C4~]¤~Eû ~ ~ ~ "Xtestfile" [noeol][crypted] 1L, 14C[?12l[?25h[?25l--No lines in buffer--[?12l[?25h[?25l-- INSERT --jan febmaraprjun[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h [?25l-- INSERT --foo mar[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l ~ [?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l-- INSERT --bar apr[?12l[?25h[?25l:[?12l[?25hset ul=100 [?25l[?12l[?25h[?25l:[?12l[?25hX [?25lEnter encryption key: [?12l[?25h****** [?25lEnter same key again: [?12l[?25h****** [?25ljan feb[?12l[?25h[?25l:[?12l[?25hw! [?25l"Xtestfile" [crypted] 4L, 20C written[?12l[?25h[?25l:[?12l[?25hbwipe! [?25l"test72.in" 115L, 1707C: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=zipggdGimondaytuesdaywednesdaythursdayfriday^[:set ul=100kkkdd:set ul=100dd:set ul=100dd:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=uu:w >>test.out:":":" With encryption, cryptmethod=blowfish:e! Xtestfile:set undofile cm=blowfishggdGijanfebmaraprjun^[:set ul=100kk0ifoo ^[:set ul=100dd:set ul=100ibar ^[:set ul=100:Xfoobarfoobar:w!:bwipe!:e Xtestfilefoobar:set key=/bar:.w >>test.outu:.w >>test.outu:.w >>test.outu:.w >>test.out:":" Rename the undo file so that it gets cleaned up.:call rename(".Xtestfile.un~", "Xtestundo"):qa!ENDTEST1111 -----2222 -----123456789[?12l[?25h[?25l:[?12l[?25he Xtestfile [?25l"Xtestfile" Need encryption key for "Xtestfile" Enter encryption key: [?12l[?25h****** [?25l"Xtestfile" [crypted] 4L, 20Cjan feb bar aprjun~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "Xtestfile" [crypted] 4L, 20C[?12l[?25h[?25l:[?12l[?25hset key= [?25l[?12l[?25h[?25l/[?12l[?25hbar [?25l[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1L, 8C appended[?12l[?25h[?25l1 change; before #15 0 seconds agoap[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1L, 4C appended[?12l[?25h[?25l1 more line; before #14 0 seconds agofoo mar[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1L, 8C appended[?12l[?25h[?25l1 change; before #13 0 seconds agomar[?12l[?25h[?25l:[?12l[?25h.w >>test.out [?25l"test.out" 1L, 4C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Rename the undo file so that it gets cleaned up. [?25l[?12l[?25h[?25l:[?12l[?25hcall rename(".Xtestfile.un~", "Xtestundo") [?25l[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test73.failed test.ok test.out X* viminfo cp test73.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test73.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test73.in" 176 lines, 3863 charactersTests 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[?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25lTests for find completion.[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 171 lines, 3816 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST: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 [?12l[?25h [?25l :so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" Do all test in a separate window to avoid E211 when we recursively [?25l[?12l[?25h[?25l:[?12l[?25h" delete the Xfind directory during cleanup [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" This will cause a few errors, do it silently. [?25l[?12l[?25h[?25l:[?12l[?25hset visualbell [?25l[?12l[?25h[?25l:[?12l[?25hset nocp viminfo+=nviminfo [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hfunction! DeleteDirectory(dir) [?25l : [?12l[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32") [?25l: [?12l[?25h: exec "silent !rmdir /Q /S " . a:dir [?25l: [?12l[?25h: else [?25l: [?12l[?25h: exec "silent !rm -rf " . a:dir [?25l: [?12l[?25h: endif [?25l: [?12l[?25h:endfun [?25l: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[?12l[?25h[?25l :[?12l[?25h" On windows a stale "Xfind" directory may exist, remove it so that [?25l[?12l[?25h[?25l:[?12l[?25h" we start from a clean state. [?25l[?12l[?25h[?25l:[?12l[?25hcall DeleteDirectory("Xfind") [?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 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.txtxec "w >>" . test_out :" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwd :call DeleteDirectory("Xfind") :qa!ENDTESTtest73.in [?12l[?25h[?25l:[?12l[?25hlet cwd=getcwd() [?25l[?12l[?25h[?25l:[?12l[?25hlet test_out = cwd . '/test.out' [?25l[?12l[?25h[?25l:[?12l[?25hcall mkdir('Xfind') [?25l[?12l[?25h[?25l:[?12l[?25hcd Xfind [?25l/sources/vim74/src/testdir/Xfind/sources/vim74/src/testdir/test73.in[?12l[?25h[?25l:[?12l[?25hset path= [?25l[?12l[?25h[?25l:[?12l[?25hfind ...[?25l[?5h[?5l[?12l[?25h [?25lE345: Can't find file "" in path[?12l[?25h[?25l:[?12l[?25hexec "w! " . test_out [?25l"/sources/vim74/src/testdir/test.out" [New] 0L, 0C written/sources/vim74/src/testdir/test.out[?12l[?25h[?25l:[?12l[?25hclose [?25l:cd .. :" We should now be in the Xfind directory:e foo/x/bar/voyager.txtSVoyager 1^[:w:e foo/y/bar/voyager.txtSVoyager 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_outfind 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_outTest that completion works when path=.,, :"set path=.,," Open Jimmy Hoffa file :e in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwdcall DeleteDirectory("Xfind") :qa!ENDTEST[?12l[?25h[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 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.txtxec "w >>" . test_out :" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwd :call DeleteDirectory("Xfind") :qa!ENDTEST/sources/vim74/src/testdir/test73.in [?12l[?25h[?25l:[?12l[?25hset path=. [?25l[?12l[?25h[?25l:[?12l[?25hfind ...[?25l[?5h[?5l[?12l[?25h [?25lE32: No file name[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[?12l[?25h[?25l:[?12l[?25hclose [?25l:cd .. :" We should now be in the Xfind directory:e foo/x/bar/voyager.txtSVoyager 1^[:w:e foo/y/bar/voyager.txtSVoyager 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_outfind 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_outTest that completion works when path=.,, :"set path=.,," Open Jimmy Hoffa file :e in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwdcall DeleteDirectory("Xfind") :qa!ENDTEST[?12l[?25h[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 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.txtxec "w >>" . test_out :" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwd :call DeleteDirectory("Xfind") :qa!ENDTEST/sources/vim74/src/testdir/test73.in [?12l[?25h[?25l:[?12l[?25hset path=.,, [?25l[?12l[?25h[?25l:[?12l[?25hfind ...[?25l[?5h[?5l[?12l[?25h [?25lE32: No file name[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[?12l[?25h[?25l:[?12l[?25hclose [?25l:cd .. :" We should now be in the Xfind directory:e foo/x/bar/voyager.txtSVoyager 1^[:w:e foo/y/bar/voyager.txtSVoyager 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_outfind 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_outTest that completion works when path=.,, :"set path=.,," Open Jimmy Hoffa file :e in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwdcall DeleteDirectory("Xfind") :qa!ENDTEST[?12l[?25h[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 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.txtxec "w >>" . test_out :" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwd :call DeleteDirectory("Xfind") :qa!ENDTEST/sources/vim74/src/testdir/test73.in [?12l[?25h[?25l:[?12l[?25hset path=./** [?25l[?12l[?25h[?25l:[?12l[?25hfind ...[?25l[?5h[?5l[?12l[?25h [?25lE32: No file name[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[?12l[?25h[?25l:[?12l[?25hclose [?25l:cd .. :" We should now be in the Xfind directory:e foo/x/bar/voyager.txtSVoyager 1^[:w:e foo/y/bar/voyager.txtSVoyager 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_outfind 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_outTest that completion works when path=.,, :"set path=.,," Open Jimmy Hoffa file :e in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwdcall DeleteDirectory("Xfind") :qa!ENDTEST[?12l[?25h[?25l:[?12l[?25hnew [?25l~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 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.txtxec "w >>" . test_out :" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwd :call DeleteDirectory("Xfind") :qa!ENDTEST/sources/vim74/src/testdir/test73.in [?12l[?25h[?25l:[?12l[?25h" We shouldn't find any file at this point, test.out must be empty. [?25l[?12l[?25h[?25l:[?12l[?25hcall mkdir('in') [?25l[?12l[?25h[?25l:[?12l[?25hcd in [?25l/sources/vim74/src/testdir/Xfind/in[?12l[?25h[?25l:[?12l[?25hcall mkdir('path') [?25l[?12l[?25h[?25l:[?12l[?25hexec "cd " . cwd [?25l/sources/vim74/src/testdirtest73.in [?12l[?25h[?25l:[?12l[?25he Xfind/file.txt [?25l"Xfind/file.txt" [New File]Xfind/file.txt[?12l[?25h[?25l-- INSERT --Holy Grail[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xfind/file.txt" [New] 1L, 11C written [?12l[?25h[?25l:[?12l[?25he Xfind/in/file.txt [?25l"Xfind/in/file.txt" [New File]in/file.txt[?12l[?25h[?25l-- INSERT --Jimmy Hoffa[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xfind/in/file.txt" [New] 1L, 12C written [?12l[?25h[?25l:[?12l[?25he Xfind/in/stuff.txt [?25l"Xfind/in/stuff.txt" [New File]stuff.txt[?12l[?25h[?25l-- INSERT --Another Holy Grail[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xfind/in/stuff.txt" [New] 1L, 19C written [?12l[?25h[?25l:[?12l[?25he Xfind/in/path/file.txt [?25l"Xfind/in/path/file.txt" [New File]path/file.txt[?12l[?25h[?25l-- INSERT --E.T.[+][?12l[?25h[?25l:[?12l[?25hw [?25l"Xfind/in/path/file.txt" [New] 1L, 5C written [?12l[?25h[?25l:[?12l[?25hset path=Xfind/** [?25l[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h [?25l"Xfind/file.txt" 1L, 11CHoly Grailfile.txtf [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h [?25l"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h...[?25lpath/file.txt[?12l[?25h [?25l"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[?12l[?25h[?25l:[?12l[?25h" Rerun the previous three find completions, using fullpath in 'path' [?25l[?12l[?25h[?25l:[?12l[?25hexec "set path=" . cwd . "/Xfind/**" [?25l[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h [?25l"Xfind/file.txt" 1L, 11CHoly Grailfile.txtf [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h [?25l"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h...[?25lpath/file.txt[?12l[?25h [?25l"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[?12l[?25h[?25l:[?12l[?25h" Same steps again, using relative and fullpath items that point to the same [?25l[?12l[?25h[?25l:[?12l[?25h" recursive location. [?25l[?12l[?25h[?25l:[?12l[?25h" This is to test that there are no duplicates in the completion list. [?25l[?12l[?25h[?25l:[?12l[?25hexec "set path+=Xfind/**" [?25l[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h [?25l"Xfind/file.txt" 1L, 11CHoly Grailfile.txtf [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h [?25l"Xfind/in/file.txt" 1L, 12CJimmy Hoffain/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h...[?25lpath/file.txt[?12l[?25h [?25l"Xfind/in/path/file.txt" 1L, 5CE.T.path/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25lin/file.txt[?12l[?25h [?25l"Xfind/in/file.txt" 1L, 12CJimmy Hoffafile.txte [?12l[?25h[?25l:[?12l[?25h" Test find completion for directory of current buffer, which at this point [?25l[?12l[?25h[?25l:[?12l[?25h" is Xfind/in/file.txt. [?25l[?12l[?25h[?25l:[?12l[?25hset path=. [?25l[?12l[?25h[?25l:[?12l[?25hfind st...[?25luff.txt[?12l[?25h [?25l"Xfind/in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appended[?12l[?25h[?25l:[?12l[?25h" Test find completion for empty path item ",," which is the current directory [?25l[?12l[?25h[?25l:[?12l[?25hcd Xfind [?25l/sources/vim74/src/testdir/Xfindin/stuff.txtf /sources/vim74/src/testdir/test73.in[?12l[?25h[?25l:[?12l[?25hset path=,, [?25l[?12l[?25h[?25l:[?12l[?25hfind f...[?25lile.txt[?12l[?25h...[?25l[?12l[?25h [?25l"file.txt" 1L, 11CHoly Grailfile.txt. [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[?12l[?25h[?25l:[?12l[?25h" Test shortening of [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" foo/x/bar/voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25h" foo/y/bar/voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" When current directory is above foo/ they should be shortened to (in order [?25l[?12l[?25h[?25l:[?12l[?25h" of appearance): [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" x/bar/voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25h" y/bar/voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25hcall mkdir('foo') [?25l[?12l[?25h[?25l:[?12l[?25hcd foo [?25l/sources/vim74/src/testdir/Xfind/foo/sources/vim74/src/testdir/Xfind/file.txt[?12l[?25h[?25l:[?12l[?25hcall mkdir('x') [?25l[?12l[?25h[?25l:[?12l[?25hcall mkdir('y') [?25l[?12l[?25h[?25l:[?12l[?25hcd x [?25l/sources/vim74/src/testdir/Xfind/foo/x[?12l[?25h[?25l:[?12l[?25hcall mkdir('bar') [?25l[?12l[?25h[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdir/Xfind/foo[?12l[?25h[?25l:[?12l[?25hcd y [?25l/sources/vim74/src/testdir/Xfind/foo/y[?12l[?25h[?25l:[?12l[?25hcall mkdir('bar') [?25l[?12l[?25h[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdir/Xfind/foo[?12l[?25h[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdir/Xfindfile.txt/ [?12l[?25h[?25l:[?12l[?25h" We should now be in the Xfind directory [?25l[?12l[?25h[?25l:[?12l[?25he foo/x/bar/voyager.txt [?25l"foo/x/bar/voyager.txt" [New File]oo/x/bar/voyager.txt[?12l[?25h[?25l-- INSERT --Voyager 1[+][?12l[?25h[?25l:[?12l[?25hw [?25l"foo/x/bar/voyager.txt" [New] 1L, 10C written [?12l[?25h[?25l:[?12l[?25he foo/y/bar/voyager.txt [?25l"foo/y/bar/voyager.txt" [New File]y/[?12l[?25h[?25l-- INSERT --Voyager 2[+][?12l[?25h[?25l:[?12l[?25hw [?25l"foo/y/bar/voyager.txt" [New] 1L, 10C written [?12l[?25h[?25l:[?12l[?25hexec "set path=" . cwd . "/Xfind/**" [?25l[?12l[?25h[?25l:[?12l[?25hfind voyager...[?25lx/bar/voyager.txt[?5h[?5l[?12l[?25h [?25l"foo/x/bar/voyager.txt" 1L, 10C1x/[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25hfind voyager...[?25lx/bar/voyager.txt[?5h[?5l[?12l[?25h...[?25ly[?12l[?25h [?25l"foo/y/bar/voyager.txt" 1L, 10C2y/[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" When current directory is .../foo/y/bar they should be shortened to (in [?25l[?12l[?25h[?25l:[?12l[?25h" order of appearance): [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" ./voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25h" x/bar/voyager.txt [?25l[?12l[?25h[?25l:[?12l[?25hcd foo [?25l/sources/vim74/src/testdir/Xfind/fooy/bar/voyager.txt. [?12l[?25h[?25l:[?12l[?25hcd y [?25l/sources/vim74/src/testdir/Xfind/foo/ybar/voyager.txt [?12l[?25h[?25l:[?12l[?25hcd bar [?25l/sources/vim74/src/testdir/Xfind/foo/y/barvoyager.txt. [?12l[?25h[?25l:[?12l[?25hfind voyager...[?25l./voyager.txt[?5h[?5l[?12l[?25h [?25l"voyager.txt" 1L, 10C[?12l[?25h[?25l:[?12l[?25hexec "w >> " . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25hfind voyager...[?25l./voyager.txt[?5h[?5l[?12l[?25h...[?25lx/bar/voyager.txt[?12l[?25h [?25l"/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C1/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txt[?12l[?25h[?25l:[?12l[?25hexec "w >> " . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25h" Check the opposite too: [?25l[?12l[?25h[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdir/Xfind/foo/y[?12l[?25h[?25l:[?12l[?25hcd .. [?25l/sources/vim74/src/testdir/Xfind/foox/bar/voyager.txtc [?12l[?25h[?25l:[?12l[?25hcd x [?25l/sources/vim74/src/testdir/Xfind/foo/xbar/voyager.txt [?12l[?25h[?25l:[?12l[?25hcd bar [?25l/sources/vim74/src/testdir/Xfind/foo/x/barvoyager.txt. [?12l[?25h[?25l:[?12l[?25hfind voyager...[?25l./voyager.txt[?5h[?5l[?12l[?25h [?25l"voyager.txt" 1L, 10C[?12l[?25h[?25l:[?12l[?25hexec "w >> " . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25hfind voyager...[?25l./voyager.txt[?5h[?5l[?12l[?25h...[?25ly/bar/voyager.txt[?12l[?25h [?25l"/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C2/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txt[?12l[?25h[?25l:[?12l[?25hexec "w >> " . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[?12l[?25h[?25l:[?12l[?25h" Check for correct handling of shorten_fname()'s behavior on windows [?25l[?12l[?25h[?25l:[?12l[?25hexec "cd " . cwd . "/Xfind/in" [?25l/sources/vim74/src/testdir/Xfind/in[?12l[?25h[?25l:[?12l[?25hfind file...[?25l./file.txt[?5h[?5l[?12l[?25h [?25l"file.txt" 1L, 12CJimmy Hoffafile.txt/ [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[?12l[?25h[?25l:[?12l[?25h" Test for relative to current buffer 'path' item [?25l[?12l[?25h[?25l:[?12l[?25hexec "cd " . cwd . "/Xfind/" [?25l/sources/vim74/src/testdir/Xfindin/file.txt[?12l[?25h[?25l:[?12l[?25hset path=./path [?25l[?12l[?25h[?25l:[?12l[?25h" Open the file where Jimmy Hoffa is found [?25l[?12l[?25h[?25l:[?12l[?25he in/file.txt [?25l"in/file.txt" 1L, 12C[?12l[?25h[?25l:[?12l[?25h" Find the file containing 'E.T.' in the Xfind/in/path directory [?25l[?12l[?25h[?25l:[?12l[?25hfind file...[?25ltxt[?12l[?25h [?25l"in/path/file.txt" 1L, 5CE.T.path/file.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" Test that completion works when path=.,, [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25hset path=.,, [?25l[?12l[?25h[?25l:[?12l[?25h" Open Jimmy Hoffa file [?25l[?12l[?25h[?25l:[?12l[?25he in/file.txt [?25l"in/file.txt" 1L, 12CJimmy Hoffafile.txte [?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[?12l[?25h[?25l:[?12l[?25h" Search for the file containing Holy Grail in same directory as in/path.txt [?25l[?12l[?25h[?25l:[?12l[?25hfind stu...[?25lff.txt[?12l[?25h [?25l"in/stuff.txt" 1L, 19CAnother Holy Grailstuff.txt[?12l[?25h[?25l:[?12l[?25hexec "w >>" . test_out [?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appended[?12l[?25h[?25l:[?12l[?25hq [?25l:cd ..:" We should now be in the Xfind directory:e foo/x/bar/voyager.txtSVoyager 1^[:w:e foo/y/bar/voyager.txtSVoyager 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_outfind 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_outTest that completion works when path=.,, :"set path=.,," Open Jimmy Hoffa file :e in/file.txtexec "w >>" . test_out" Search for the file containing Holy Grail in same directory as in/path.txt :find stu exec "w >>" . test_out :qexec "cd " . cwdcall DeleteDirectory("Xfind") :qa!ENDTEST[?12l[?25h[?25l:[?12l[?25hexec "cd " . cwd [?25l/sources/vim74/src/testdir[?12l[?25h[?25l:[?12l[?25hcall DeleteDirectory("Xfind") [?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test74.failed test.ok test.out X* viminfo cp test74.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test74.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test74.in" 36 lines, 822 characters" 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 ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25l:[?12l[?25hset cp [?25l[?12l[?25h[?25l:[?12l[?25hmap dotest /^STARTTEST^^Mj:set ff=unix cpo-=A^^M:.,/ENDTEST/-1w! Xdotest^^M:set ff& cpo+=A^^Mnj0:s o! Xdotest^^Mdotest [?25l" Tests for storing global variables in the .viminfo file vim: set ft=vim:[?12l[?25h[?25l/^STARTTEST [?12l[?25h [?25l:set ff=unix cpo-=A [?12l[?25h[?25l:.,/ENDTEST/-1w! Xdotest "Xdotest" [New File] 30 lines, 723 characters written[?12l[?25h[?25l:set ff& cpo+=A [?12l[?25h[?25l/ENDTEST[?12l[?25h [?25l:so! Xdotest [?12l[?25h[?25l:[?12l[?25hso small.vim [?25l[?12l[?25h[?25l:[?12l[?25h" Do all test in a separate window to avoid E211 when we recursively [?25l[?12l[?25h[?25l:[?12l[?25h" delete the Xfind directory during cleanup [?25l[?12l[?25h[?25l:[?12l[?25h" [?25l[?12l[?25h[?25l:[?12l[?25h" This will cause a few errors, do it silently. [?25l[?12l[?25h[?25l:[?12l[?25hset visualbell [?25l[?12l[?25h[?25l:[?12l[?25hset nocp viminfo+=!,nviminfo [?25l[?12l[?25h[?25l:[?12l[?25hlet MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000} [?25l[?12l[?25h[?25l:[?12l[?25h" store a really long list, so line wrapping will occur in viminfo file [?25l[?12l[?25h[?25l:[?12l[?25hlet MY_GLOBAL_LIST=range(1,100) [?25l[?12l[?25h[?25l:[?12l[?25hwv! Xviminfo [?25l[?12l[?25h[?25l:[?12l[?25hunlet MY_GLOBAL_DICT [?25l[?12l[?25h[?25l:[?12l[?25hunlet MY_GLOBAL_LIST [?25l[?12l[?25h[?25l:[?12l[?25hrv! Xviminfo [?25l[?12l[?25h[?25l:[?12l[?25hcall delete('Xviminfo') [?25l[?12l[?25h[?25l:[?12l[?25hif exists("MY_GLOBAL_DICT") [?25l : [?12l[?25h:redir >> test.out [?25l: [?12l[?25h:echo MY_GLOBAL_DICT [?25l{'foo': 1, 'longvarible': 1000, 'bar': 0} : [?12l[?25h:redir end [?25l: [?12l[?25h:endif [?25l" 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[?12l[?25h[?25l:[?12l[?25hif exists("MY_GLOBAL_LIST") [?25l : [?12l[?25h:redir >> test.out [?25l: [?12l[?25h:echo MY_GLOBAL_LIST [?25l[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] : [?12l[?25h:redir end [?25l: [?12l[?25h:endif [?25l" 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[?12l[?25h[?25l:[?12l[?25hredir >> test.out [?25l[?12l[?25h[?25l:[?12l[?25hecho "foobar" [?25lfoobar[?12l[?25h[?25l:[?12l[?25hredir end [?25l[?12l[?25h[?25l:[?12l[?25hendif [?25lE580: :endif without :if[?12l[?25h[?25l:[?12l[?25hqa! [?25l[?1l>[?12l[?25h[?1049l# For flaky tests retry one time. # Check if the test.out file matches test.ok. rm -rf X* test.ok viminfo rm -rf test75.failed test.ok test.out X* viminfo cp test75.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. ../vim -u unix.vim -U NONE --noplugin -s dotest.in test75.in Vim: Warning: Output is not to a terminal [?1049h[?1h=[?12;25h[?12l[?25h[?25l"test75.in" 24 lines, 562 characters" Tests for functions. STARTTEST :so small.vim :set cpo-=< :" Test maparg() with a string result :map foo isfoo :vnoremap