Thu Mar  5 15:07:17 CST 2015
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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"af.po" "af.po" 5393 lines, 133397 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ca.po" "ca.po" 6201 lines, 161831 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"cs.po" "cs.po" 4664 lines, 111014 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"de.po" "de.po" 6117 lines, 156573 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"en_GB.po" "en_GB.po" 290 lines, 8951 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"eo.po" "eo.po" 6825 lines, 173499 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"es.po" "es.po" 8279 lines, 203810 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"fi.po" "fi.po" 6526 lines, 161907 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"fr.po" "fr.po" 7091 lines, 192058 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ga.po" "ga.po" 6503 lines, 164355 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"it.po" "it.po" 6803 lines, 174859 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ja.po" "ja.po" 6808 lines, 195582 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ko.po" "ko.po" 6447 lines, 155537 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ko.UTF-8.po" "ko.UTF-8.po" 6447 lines, 171434 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"nb.po" "nb.po" 6166 lines, 150559 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"nl.po" "nl.po" 5852 lines, 135179 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"no.po" "no.po" 6166 lines, 150559 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"pl.po" "pl.po" 6904 lines, 175255 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"pt_BR.po" "pt_BR.po" 6236 lines, 160823 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ru.po" "ru.po" 6883 lines, 225596 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"sk.po" "sk.po" 5821 lines, 147389 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"sv.po" "sv.po" 6148 lines, 149143 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"uk.po" "uk.po" 6845 lines, 208009 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"vi.po" "vi.po" 5196 lines, 143932 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"zh_CN.UTF-8.po" "zh_CN.UTF-8.po" 6139 lines, 147455 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"zh_CN.po" "zh_CN.po" 6140 lines, 136477 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"zh_TW.UTF-8.po" "zh_TW.UTF-8.po" 5282 lines, 127286 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"zh_TW.po" "zh_TW.po" 5275 lines, 117353 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"cs.cp1250.po" "cs.cp1250.po" 4664 lines, 111022 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ja.sjis.po" "ja.sjis.po" 6808 lines, 172635 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ja.euc-jp.po" "ja.euc-jp.po" 6808 lines, 172526 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"pl.cp1250.po" "pl.cp1250.po" 6904 lines, 175251 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch pl.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"pl.UTF-8.po" "pl.UTF-8.po" 6904 lines, 178041 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"ru.cp1251.po" "ru.cp1251.po" 6883 lines, 177871 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"sk.cp1250.po" "sk.cp1250.po" 5821 lines, 147385 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"uk.cp1251.po" "uk.cp1251.po" 6845 lines, 168332 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?1049ltouch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[?25lE[60;1H"zh_CN.cp936.po" "zh_CN.cp936.po" 6140 lines, 136489 characters
search hit BOTTOM, continuing at TOPOKE[60;3HE[KE[60;1H
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test1.in" 53 lines, 1864 charactersE[2;1HFirst 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 testE[34m^[E[m: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!
E[34m^[E[m: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

E[1mE[34m~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[20;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[21;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 31 lines, 928 characters writtenE[21;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[21;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Write a single line to test.out to check if testing works at all.E[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%dE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lthis is a testE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 15 characters writtenE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.E[?25lE[1;14HE[?12lE[?25hE[?25lE[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! small.vimE[?25l"small.vim" E[60;13HE[KE[60;13H[New File] 1 line, 1 character writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! tiny.vimE[?25l"tiny.vim" E[60;12HE[KE[60;12H[New File] 1 line, 1 character writtenE[1;1HE[?12lE[?25hE[?25le! test.ok
w! test.outE[2;12HE[KE[3;1Hqa!E[3;4HE[KE[4;1HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! mbyte.vimE[?25l"mbyte.vim" E[60;13HE[KE[60;13H[New File] 4 lines, 28 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! mzscheme.vimE[?25l"mzscheme.vim" E[60;16HE[KE[60;16H[New File] 4 lines, 28 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! lua.vimE[?25l"lua.vim" E[60;11HE[KE[60;11H[New File] 4 lines, 28 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" If +multi_byte feature supported, make mbyte.vim empty.E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("multi_byte") | sp another | w! mbyte.vim | q | endifE[?25l"another" [New File]E[60;21HE[KE[60;1H
"mbyte.vim" 0 lines, 0 characters writtenE[1;1HE[LE[1;1He! test.okE[60;1HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" If +mzscheme feature supported, make mzscheme.vim empty.E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("mzscheme") | sp another | w! mzscheme.vim | q | endifE[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" If +lua feature supported, make lua.vim empty.E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("lua") | sp another | w! lua.vim | q | endifE[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Otherwise write small.vim to skip the test.E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif 1 | q! | endifE[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test2.in" 29 lines, 717 charactersE[2;1HThis is a test if a URL is recognized by "gf", with the cursor before and
after the "://".  Also test ":\\".

STARTTEST
:so small.vim
/^first
/tmp
:call append(0, expand("<cfile>"))
/^second
/URL
:call append(1, expand("<cfile>"))
:if has("ebcdic")
: set isf=@,240-249,/,.,-,_,+,,,$,:,~,\
:else
: set isf=@,48-57,/,.,-,_,+,,,$,:,~,\
:endif
/^third
/name
:call append(2, expand("<cfile>"))
/^fourth
/URL
:call append(3, expand("<cfile>"))
5GdG:wq! test.out
ENDTEST
first test for URL://machine.name/tmp/vimtest2a and other text
second test for URL://machine.name/tmp/vimtest2b. And other text
third test for URL:\\machine.name\vimtest2c and other text
fourth test for URL:\\machine.name\tmp\vimtest2d, and other text
E[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 19 lines, 336 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[25;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^firstE[?25lE[31msearch hit BOTTOM, continuing at TOPE[26;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25htmpE[?25lE[26;35HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, expand("<cfile>"))E[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1HURL://machine.name/tmp/vimtest2aE[60;1HE[KE[27;35HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^secondE[?25lE[28;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hURLE[?25lE[28;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(1, expand("<cfile>"))E[?25lE[2;59rE[2;1HE[LE[1;60rE[2;1HURL://machine.name/tmp/vimtest2bE[60;1HE[KE[29;17HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hif has("ebcdic")E[?25l
:  E[?12lE[?25h: set isf=@,240-249,/,.,-,_,+,,,$,:,~,\
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: set isf=@,48-57,/,.,-,_,+,,,$,:,~,\
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HURL://machine.name/tmp/vimtest2a
URL://machine.name/tmp/vimtest2b

This is a test if a URL is recognized by "gf", with the cursor before andE[60;1HE[KE[29;17HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^thirdE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hnameE[?25lE[30;30HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(2, expand("<cfile>"))E[?25lE[3;59rE[3;1HE[LE[1;60rE[3;1HURL:\\machine.name\vimtest2cE[60;1HE[KE[31;30HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^fourthE[?25lE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hURLE[?25lE[32;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(3, expand("<cfile>"))E[?25lE[4;59rE[4;1HE[LE[1;60rE[4;1HURL:\\machine.name\tmp\vimtest2dE[60;1HE[KE[33;17HE[?12lE[?25hE[5;1HE[?25lE[60;1H29 fewer linesE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[4;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 128 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test3.in" 2056 lines, 21564 charactersE[1;1H/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:editE[16C" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{E[15;9Hif (test)E[16;17Hcmd1;E[17;9Hcmd2;
}

{E[21;9Hif (test)E[22;17Hcmd1;E[23;9HelseE[24;17Hcmd2;
}

{E[28;9Hif (test)E[29;9H{E[30;17Hcmd1;E[31;17Hcmd2;E[32;9H}
}

{E[36;9Hif (test)E[37;9H{E[38;17Hcmd1;E[39;17HelseE[40;9H}
}

{E[44;9Hwhile (this)E[45;17Hif (test)E[46;25Hcmd1;E[47;9Hcmd2;
}

{E[51;9Hwhile (this)E[52;17Hif (test)E[53;25Hcmd1;E[54;17HelseE[55;25Hcmd2;
}

{E[59;9Hif (test)E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1H/* vim: set cin ts=4 sw=4 : */E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 5 lines, 125 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfo modelineE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hedit                " read modelineE[?25l"test3.in"E[60;22HE[KE[60;12H2056L, 21564CE[15;5Hif (test)E[15;14HE[KE[16;9Hcmd1;E[16;17HE[KE[17;5Hcmd2;E[17;10HE[KE[21;5Hif (test)E[21;14HE[KE[22;9Hcmd1;E[22;17HE[KE[23;5HelseE[23;9HE[KE[24;9Hcmd2;E[24;17HE[KE[28;5Hif (test)E[28;14HE[KE[29;5H{E[29;9HE[KE[30;9Hcmd1;E[30;17HE[KE[31;9Hcmd2;E[31;17HE[KE[32;5H}E[32;9HE[KE[36;5Hif (test)E[36;14HE[KE[37;5H{E[37;9HE[KE[38;9Hcmd1;E[38;17HE[KE[39;9HelseE[39;17HE[KE[40;5H}E[40;9HE[KE[44;5Hwhile (this)E[44;17HE[KE[45;9Hif (test)E[45;18HE[KE[46;13Hcmd1;E[46;25HE[KE[47;5Hcmd2;E[47;10HE[KE[51;5Hwhile (this)E[51;17HE[KE[52;9Hif (test)E[52;18HE[KE[53;13Hcmd1;E[53;25HE[KE[54;9HelseE[54;17HE[KE[55;13Hcmd2;E[55;25HE[KE[59;5Hif (test)E[59;14HE[KE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hstart of AUTOE[?25lE[13;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hend of AUTOE[?25l873 lines to indent...850075065055045035025015050 lines to indent... 874 lines indented E[60;20HE[KE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[27mE[mE[HE[2JE[1;9H22222222222222222;
    }
}

/* 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 restE[34m^[E[m
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin
/comments
joabout lifeE[34m^[E[m/happens
jothereE[34m^[E[m/below
olineE[34m^[E[m/this
OhelloE[34m^[E[m
ENDTEST

{
    /*E[56;6H* Testing for comments, without 'cin' setE[57;6H*/

/*E[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 93C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=0 wm=60 columns=80 noai fo=croqE[?25lE[8;60;80tE[27mE[mE[HE[2JE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;9H22222222222222222;
    }
}

/* 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 restE[34m^[E[m
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST
:set nocin
/comments
joabout lifeE[34m^[E[m/happens
jothereE[34m^[E[m/below
olineE[34m^[E[m/this
OhelloE[34m^[E[m
ENDTEST

{
    /*E[56;6H* Testing for comments, without 'cin' setE[57;6H*/

/*E[34;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25hserious/eE[?25lE[39;17HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[40;59rE[40;1HE[3LE[1;60rE[39;19HE[KE[40;2H* about life, the
 * universe, and the
 * rest important bigE[42;7HE[?12lE[?25hE[43;7HE[?25lE[60;1H/^STARTTESTE[48;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H6L, 78C writtenE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[49;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[54;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocinE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hcommentsE[?25lE[59;20HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;6H*/E[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[1;59rE[59;1H
E[1;60rE[59;1Habout lifeE[?12lE[?25hE[?25l
/E[?12lE[?25hhappensE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1H/*
* what happens here?E[60;1HE[KE[59;8HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H*/E[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[1;59rE[59;1H
E[1;60rE[59;1HthereE[?12lE[?25hE[?25l
/E[?12lE[?25hbelowE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;5H/*E[59;8Hthe end of the comment, try inserting a line below */E[60;1HE[KE[59;53HE[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[1;59rE[59;1H
E[1;60rE[59;1HlineE[?12lE[?25hE[?25l
/E[?12lE[?25hthisE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;9H/* how aboutE[59;25Hthis one */E[60;1HE[KE[59;25HE[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[59;1HhelloE[59;25HE[KE[59;5HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;25Hthis one */E[59;8HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1H}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cinE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 18C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/vec2
==E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cinE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hvec2E[?25lE[1;59rE[1;1HE[5ME[1;60rE[56;1H{
    var = this + that + vec[0] * vec[0]E[58;23H+ vec[1] * vec[1]E[59;23H+ vec2[2] * vec[2];E[60;1HE[KE[59;25HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cinE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5L, 51C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[4ME[1;60rE[56;1H:set cino=}4
/testing1
k2==/testing2
k2==E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cinE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=}4E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25htesting1E[?25lE[1;59rE[1;1HE[8ME[1;60rE[53;1H{E[54;9Hasdf asdflkajds f;
    if (tes & ting) {E[56;9Hasdf asdf asdf ;E[57;9Hasdfa sdf asdf;E[58;9H}
    testing1;E[60;1HE[KE[59;5HE[?12lE[?25hE[58;8H E[?25l

/E[?12lE[?25htesting2E[?25lE[1;59rE[1;1HE[6ME[1;60rE[54;5Hif (tes & ting)
    {E[56;9Hasdf asdf asdf ;E[57;9Hasdfa sdf asdf;E[58;9H}
    testing2;E[60;1HE[KE[59;5HE[?12lE[?25hE[58;8H E[59;9HE[?25l
/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1H}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cinE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H4L, 36C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set cino=(0,)20
/main
=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cinE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,)20E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hmainE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1Hmain ( int first_par, /*E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
19 lines to indent...20E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;24H* Comment forE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[21ME[1;60rE[39;24H* first parE[40;24H*/E[41;8Hint second_par /*E[42;24H* Comment forE[43;24H* second parE[44;24H*/E[45;6H)
{
    func( first_par, /*E[48;23H* Comment forE[49;23H* first parE[50;23H*/E[51;11Hsecond_par /*E[52;23H* Comment forE[53;23H* second parE[54;23H*/E[55;9H);

}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cinE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H4L, 36C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set cino=es,n0s
/main
=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cinE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=es,n0sE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hmainE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1Hmain(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
8 lines to indent...9E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;5H/* Make sure that cino=X0s is not parsed like cino=Xs. */
    if (cond)E[52;9Hfoo();
    else
    {E[55;9Hbar();
    }
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cinE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 26C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:set cino=
]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cinE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
11 lines to indent...12E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5HdoE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[13ME[1;60rE[47;5H{E[48;9Hif ()E[49;9H{E[50;13Hif ()E[51;17Hasdf;E[52;13HelseE[53;17Hasdf;E[54;9H}
    } while ();
    cmd;E[8C/* this should go under the } */
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H]]=][E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H1L, 6C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
8 lines to indent...9E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hif ( k() ) {E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;9Hl();E[52;5H} else { /* Start (two words) end */E[53;9Hm();
    }E[56;5Hn();
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino={s,e-sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino={s,e-sE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
7 lines to indent...8E[7Cindented E[60;18HE[KE[59;1H    {E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hif ( k() )E[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[9ME[1;60rE[51;9H{E[52;9Hl();E[53;9H} else { /* Start (two words) end */E[54;9Hm();E[55;9H}
    n();    /* should be under the if () */
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino={s,fsE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 25C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H]]=/ fooE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino={s,fsE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1Hvoid bar(void)
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h fooE[?25l30 lines to indent...31E[7Cindented E[60;19HE[KE[59;1H    {E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[27mE[mE[HE[2JE[1;13H{ 1, 2 },E[2;13H{ 3, 4 },E[3;9H}E[5;5Hwhile (a)E[6;9H{E[7;9Hfoo(&a);E[8;9H}E[10;9H{E[11;9Hint a;E[12;13H{E[13;13Ha = a + 1;E[14;13H}E[15;9H}
    b = a;
    }

void func(void)
    {
    a = 1;E[22;9H{E[23;9Hb = 2;E[24;9H}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohereE[34m^[E[m
ENDTEST

a()
{
  do {
    a = a +E[40;7Ha;
  } while ( a );E[8C/* add text under this line */
    if ( a )E[43;7Ha;
}

STARTTEST
:set cino= com=
/comment
olabel2: b();E[34m^ME[mlabel3 /* post */:E[34m^ME[m/* pre */ label4:E[34m^ME[mf(/*com*/);E[34m^ME[mif (/*com*/)E[34m^^E[50;1HME[mcmd();E[34m^[E[m
ENDTEST

a()
{
label1:E[56;13H/* hmm */E[57;13H// comment
}E[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 25C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hwhileE[?25lE[41;5HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[42;59rE[42;1HE[LE[1;60rE[42;3HhereE[?12lE[?25hE[43;6HE[?25lE[60;1H/^STARTTESTE[47;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 109C writtenE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[48;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[50;1HE[?12lE[?25h

E[?25lE[60;1HE[KE[60;1H:so! XdotestE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino= com=E[?25lE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hcommentE[?25lE[58;16HE[?12lE[?25hE[?25l

E[1m-- INSERT --E[mE[60;1HE[KE[1;59rE[1;1HE[5ME[1;60rE[54;1Hlabel2: b();
label3 /* post */:
/* pre */ label4:E[57;9Hf(/*com*/);E[58;9Hif (/*com*/)E[59;13Hcmd();E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set comments& comments^=s:/*,m:**,ex:*/E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 53C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/simple
=5jE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset comments& comments^=s:/*,m:**,ex:*/E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hsimpleE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1H/*
  * A simple commentE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
5 lines to indent...6E[7Cindented E[60;18HE[KE[59;2H* A simple commentE[59;20HE[KE[59;2HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2H*/E[60;1HE[KE[59;2HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[55;1H/*
** A different comment
*/

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=c0E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 70C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=c0E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset comments& comments-=s1:/* comments^=s0:/*E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
4 lines to indent...5E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;5H/*********E[55;7HA comment.
    *********/
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=c0,C1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 73C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=c0,C1E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset comments& comments-=s1:/* comments^=s0:/*E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
4 lines to indent...5E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;5H/*********
    A comment.
    *********/
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 17C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H]]=][
ENDTESTE[60;1HE[KE[58;1HE[?12lE[?25h
E[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
5 lines to indent...6E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hc = c1 &&E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[7ME[1;60rE[53;9H(E[54;10Hc2 ||E[55;10Hc3E[56;9H) && c4;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(sE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
5 lines to indent...6E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hc = c1 &&E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[7ME[1;60rE[53;9H(E[54;10Hc2 ||E[55;10Hc3E[56;9H) && c4;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(s,U1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 28C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(s,U1  E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
5 lines to indent...6E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hc = c1 &&E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[7ME[1;60rE[53;9H(E[54;13Hc2 ||E[55;13Hc3E[56;9H) && c4;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(0E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
4 lines to indent...5E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hif (   c1E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;12H&& (   c2E[55;19H|| c3))E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(0,w1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 28C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,w1  E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
4 lines to indent...5E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hif (   c1E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;9H&& (   c2E[55;13H|| c3))E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(sE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
8 lines to indent...9E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hc = c1 && (E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;9Hc2 ||E[51;9Hc3E[52;9H) && c4;
    if (E[54;9Hc1 && c2E[55;8H)E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(s,m1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 28C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(s,m1  E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
8 lines to indent...9E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hc = c1 && (E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;9Hc2 ||E[51;9Hc3
    ) && c4;
    if (E[54;9Hc1 && c2
    )E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=b1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=b1E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
9 lines to indent...10 lines indented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hswitch (x)E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[11ME[1;60rE[49;5H{E[50;9Hcase 1:E[51;13Ha = b;E[52;9Hbreak;E[53;9Hdefault:E[54;13Ha = 0;E[55;9Hbreak;
    }
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(0,W5E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 26C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,W5E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
10 lines to indent...11E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hinvokeme(E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[12ME[1;60rE[48;10Hargu,E[49;10Hment);
    invokeme(E[51;10Hargu,E[52;10HmentE[53;10H);
    invokeme(argu,E[55;14HmentE[56;13H);
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=/6E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=/6E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
3 lines to indent...4E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hstatement;E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[5ME[1;60rE[55;11H// comment 1E[56;11H// comment 2
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 34C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H2kdd]]/comment 1/+1
==E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l==E[57;3HE[KE[58;1HENDTESTE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hvoid f()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25hcomment 1/+1E[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;5Hstatement;E[58;8H// comment 1
    // comment 2E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l    // comment 2E[59;8HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=g0E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=g0E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hclass CAbc
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
6 lines to indent...7E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hint Test() { return FALSE; }E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[8ME[1;60rE[53;1Hpublic: // comment
    void testfall();
protected:
    void testfall();
};

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(0,gs,hsE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 29C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,gs,hsE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hclass Foo : public Bar
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
5 lines to indent...6E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hpublic:E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[7ME[1;60rE[53;9Hvirtual void method1(void) = 0;E[54;9Hvirtual void method2(int arg1,E[55;30Hint arg2,E[56;30Hint arg3) = 0;
};

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=+20E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 24C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=+20E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;5Hvoid
foo()
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
4 lines to indent...5E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Hif (a)E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;5H{
    } elseE[56;9Hasdf;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=(0,W2sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 27C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd]]=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,W2sE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd]]=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
34 lines to indent...35E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Haverylongfunctionnamelongfunctionnameaverylongfunctionname()->asd(E[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
/^STARTTESTE[27mE[mE[HE[2JE[1;5H/* those are ugly, but consequent */E[3;5Hfunc()->asd(asdasdf,E[4;17Haverylongfunctionname(E[5;25Habc,E[6;25Hdec)->averylongfunctionname(E[7;33Hasdfadsf,E[8;33Hasdfasdf,E[9;33Hasdfasdf,E[10;33H),E[11;17Hfunc(asdfadf,E[12;22HasdfasdfE[13;21H),E[14;17HasdasdfE[15;16H);E[17;5Haverylongfunctionnameaverylongfunctionnameavery()->asd(fasdf(E[18;21Habc,E[19;21Hdec)->asdfasdfasdf(E[20;29Hasdfadsf,E[21;29Hasdfasdf,E[22;29Hasdfasdf,E[23;29H),E[24;13Hfunc(asdfadf,E[25;18Hasdfasdf),E[26;13HasdasdfE[27;13H);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&E[38;13Hcond2E[39;13H)E[40;9Hfoo;
}

STARTTEST
:set cino=(0,ts
2kdd=][
ENDTEST

void func(int a
#if defined(FOO)E[50;11H, int bE[51;11H, int c
#endifE[53;10H)
{
}

STARTTEST
:set cino=(0
2kdd=][E[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 23C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=M1E[?25lE[33;1HE[?12lE[?25hE[31;1HE[?25lE[31;59rE[59;1H
E[1;60rE[59;1HENDTESTE[60;1HE[KE[31;1HE[?12lE[?25hE[35;1HE[?25lE[60;1H4 lines to indent...5E[7Cindented E[60;18HE[KE[35;1HE[?12lE[?25h
   E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[42;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 24C writtenE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[43;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[44;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0,tsE[?25lE[45;1HE[?12lE[?25hE[43;1HE[?25lE[43;59rE[59;1H
E[1;60rE[60;1HE[KE[43;1HE[?12lE[?25hE[?25lE[60;1H9 lines to indent...10 lines indented E[60;19HE[KE[43;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[55;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 21C writtenE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[56;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=(0E[?25lE[58;1HE[?12lE[?25hE[56;1HE[?25lE[56;59rE[59;1H
E[1;60rE[59;1HvoidE[60;1HE[KE[56;1HE[?12lE[?25hE[?25lE[60;1H10 lines to indent...11E[7Cindented E[60;19HE[KE[59;1H    voidE[56;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;1Hfunc(int a
#if defined(FOO)E[52;6H, int bE[53;6H, int c
#endif
    )
{
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 20C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd=7][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino&E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd=7][E[57;9HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25l


71 lines to indent...5072E[7Cindented E[60;19HE[KE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[27mE[mE[HE[2JE[1;9H1, 2,E[2;9H3, 4,E[3;9H5, 6};E[5;5Hprintf("Don't you dare indent this line incorrectly!\n");
}E[8;5Hvoid
func4(a, b,E[10;9Hc)
    int a;
    int b;
    int c;
{
}E[17;5Hvoid
func5(E[19;9Hint a,E[20;9Hint b)
{
}E[24;5Hvoid
func6(E[26;9Hint a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd=][
ENDTEST

void func(void)
{
    int tab[] =
    {E[40;9H1, 2, 3,E[41;9H4, 5, 6};E[43;5Hprintf("Indent this line correctly!\n");E[45;5Hswitch (foo)
    {E[47;9Hcase bar:E[48;13Hprintf("bar");E[49;13Hbreak;E[50;9Hcase baz: {E[51;13Hprintf("baz");E[52;13Hbreak;E[53;9H}E[54;9Hcase quux:
printf("But don't break the indentation of this instruction\n");
break;
    }
}E[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 33C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino&E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino+=l1E[?25lE[34;1HE[?12lE[?25hE[32;1HE[?25lE[32;59rE[59;1H
E[1;60rE[59;1HSTARTTESTE[60;1HE[KE[32;1HE[?12lE[?25hE[?25lE[60;1H24 lines to indent...25E[7Cindented E[60;19HE[KE[54;1H            printf("But don't break the indentation of this instruction\n");
            break;E[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino&E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 19C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino&E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd=][E[57;8HE[KE[58;1HENDTESTE[59;1HE[KE[57;1HE[?12lE[?25hE[?25l


8 lines to indent...9E[7Cindented E[60;18HE[KE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[9ME[1;60rE[51;1Hvoid func(void)
{
    cout << "a"E[54;9H<< "b"E[55;9H<< ") :"E[56;9H<< "c";
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set com=s1:/*,m:*,ex:*/E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 38C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H]]3jofoo();E[34m^[E[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset com=s1:/*,m:*,ex:*/E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[58;1Hvoid func(void)
{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;5H/*E[58;6H* This is a comment.E[59;6H*/E[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[1;59rE[59;1H
E[1;60rE[59;5Hfoo();E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 19C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino&E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd=][E[57;8HE[KE[58;1HENDTESTE[59;1HE[KE[57;1HE[?12lE[?25hE[?25l


10 lines to indent...11E[7Cindented E[60;19HE[KE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[11ME[1;60rE[49;1Hvoid func(void)
{
    for (int i = 0; i < 10; ++i)E[52;9Hif (i & 1) {E[53;13Hfoo(1);E[54;9H} elseE[55;13Hfoo(0);
    baz();
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=k2s,(0E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 27C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd3j=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,(0E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd3j=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
23 lines to indent...24E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[25ME[1;60rE[35;5Hif (condition1E[36;13H&& condition2)E[37;9Haction();
    function(argument1E[39;14H&& argument2);E[41;5Hif (c1 && (c2 ||E[42;17Hc3))E[43;9Hfoo;
    if (c1 &&E[45;13H(c2 || c3))
    {
    }E[49;5Hif (   c1E[50;13H&& (      c2E[51;23H|| c3))E[52;9Hfoo;
    func( c1E[54;11H&& (     c2E[55;20H|| c3))E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=k2s,(sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 27C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd3j=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,(sE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd3j=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
23 lines to indent...24E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[25ME[1;60rE[35;5Hif (condition1E[36;13H&& condition2)E[37;9Haction();
    function(argument1E[39;9H&& argument2);E[41;5Hif (c1 && (c2 ||E[42;17Hc3))E[43;9Hfoo;
    if (c1 &&E[45;13H(c2 || c3))
    {
    }E[49;5Hif (   c1E[50;13H&& (      c2E[51;17H|| c3))E[52;9Hfoo;
    func(   c1E[54;9H&& (      c2E[55;13H|| c3))E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=k2s,(s,U1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 30C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd3j=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,(s,U1E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd3j=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
24 lines to indent...25E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[26ME[1;60rE[34;5Hif (condition1E[35;13H&& condition2)E[36;9Haction();
    function(argument1E[38;9H&& argument2);E[40;5Hif (c1 && (c2 ||E[41;17Hc3))E[42;9Hfoo;
    if (c1 &&E[44;13H(c2 || c3))
    {
    }
    if (c123456789E[48;13H&& (c22345E[49;17H|| c3))E[50;9Hprintf("foo\n");E[52;5Hc = c1 &&E[53;9H(E[54;13Hc2 ||E[55;13Hc3E[56;9H) && c4;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=k2s,(0,W4E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 30C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd3j=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,(0,W4E[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd3j=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
29 lines to indent...30E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[27mE[mE[HE[2JE[1;13H&& condition2)E[2;9Haction();
    function(argument1E[4;14H&& argument2);E[6;5Hif (c1 && (c2 ||E[7;17Hc3))E[8;9Hfoo;
    if (c1 &&E[10;13H(c2 || c3))
    {
    }
    if (c123456789E[14;13H&& (c22345E[15;17H|| c3))E[16;9Hprintf("foo\n");E[18;5Hif (   c1E[19;13H&& (   c2E[20;20H|| c3))E[21;9Hfoo;E[23;5Ha_long_line(E[24;9Hargument,E[25;9Hargument);
    a_short_line(argument,E[27;18Hargument);
}

STARTTEST
:set cino=k2s,u2
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);E[43;5Hif (c1 && (c2 ||
    c3))
    foo;
    if (c1 &&
    (c2 || c3))
    {
    }
    if (c123456789
    && (c22345
    || c3))
    printf("foo\n");
}

STARTTEST
:set cino=k2s,(0,w1
2kdd3j=][
ENDTESTE[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 27C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,u2E[?25lE[33;1HE[?12lE[?25hE[31;1HE[?25lE[31;59rE[59;1H
E[1;60rE[60;1HE[KE[31;1HE[?12lE[?25h


E[?25lE[60;1H18 lines to indent...19E[7Cindented E[60;19HE[KE[37;5H        && condition2)
        action();E[40;5H        && argument2);E[43;5H          c3))
        foo;E[46;5H        (c2 || c3))E[50;5H        && (c22345
              || c3))
        printf("foo\n");E[34;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[55;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 30C writtenE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[56;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2s,(0,w1E[?25lE[58;1HE[?12lE[?25hE[56;1HE[?25lE[56;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[56;1HE[?12lE[?25h


E[?25l
27 lines to indent...28E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[29ME[1;60rE[31;5Hif (condition1E[32;13H&& condition2)E[33;9Haction();
    function(argument1E[35;14H&& argument2);E[37;5Hif (c1 && (c2 ||E[38;17Hc3))E[39;9Hfoo;
    if (c1 &&E[41;13H(c2 || c3))
    {
    }
    if (c123456789E[45;13H&& (c22345E[46;17H|| c3))E[47;9Hprintf("foo\n");E[49;5Hif (   c1E[50;13H&& (      c2E[51;17H|| c3))E[52;9Hfoo;
    func(   c1E[54;10H&& (      c2E[55;14H|| c3))E[56;9Hfoo;
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=k2,(sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 26C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H2kdd3j=][E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=k2,(sE[?25lE[59;1HE[?12lE[?25hE[57;1HE[?25l2kdd3j=][E[57;10HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hvoid func(void)E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
14 lines to indent...15E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[16ME[1;60rE[44;5Hif (condition1E[45;7H&& condition2)E[46;9Haction();
    function(argument1E[48;9H&& argument2);E[50;5Hif (c1 && (c2 ||E[51;11Hc3))E[52;9Hfoo;
    if (c1 &&E[54;7H(c2 || c3))
    {
    }
}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=N-sE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 47C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/^NAMESPACESTART
=/^NAMESPACEENDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=N-sE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^NAMESPACESTARTE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HNAMESPACESTARTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^NAMESPACEENDE[?25l61 lines to indent...5062E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[27mE[mE[HE[2JE[1;1H22222222222222222;
}
}

/* 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 moreE[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSENDE[?25l12 lines to indent...13E[7Cindented E[60;19HE[KE[38;1H    foo: {
        that: this,
        some: ok,
    },
    "bar":{
        a : 2,
        b: "123abc",
        x: 4,
        "y": 5
    }E[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[51;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[52;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[54;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSENDE[?25l5 lines to indent...6E[7Cindented E[60;18HE[KE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[6ME[1;60rE[54;5H2,
    3
    ];  // indent 8 less
JSEND

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=j1,J1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/^JSSTART
=/^JSENDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HJSSTARTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^JSENDE[?25l7 lines to indent...8E[7Cindented E[60;18HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[10ME[1;60rE[50;1Hfunction bar() {
    var foo = [E[52;9H1,E[53;9H2,E[54;9H3E[55;13H];  // indent 16 less
}
JSEND

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set cino=j1,J1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/^JSSTART
=/^JSENDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HENDTESTE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HJSSTARTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^JSENDE[?25l52 lines to indent...503E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[27mE[mE[HE[2JE[1;9H}, options||{}));
    }E[4;5H$.fn[class_name]=function() {E[6;9Hvar _arguments=arguments;E[7;9Hreturn this.each(function(){E[9;13Hvar options=$(this).data(class_name+'_public');E[10;13Hif (!options) {E[11;17Hinit.apply(this,_arguments);E[13;13H} else {E[14;17Hvar method=public_method[_arguments[0]];E[16;17Hif (typeof(method)!='function') {E[17;21Hconsole.log(class_name+' has no method "'+_arguments[0]+'"'))E[18;1H;E[19;21Hreturn false;E[20;17H}E[21;17H_arguments[0]=options;E[22;17Hmethod.apply(this,_arguments);E[23;13H}E[24;9H});
    }

})(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

JSSTARTE[30;1HE[?12lE[?25h
E[?25lE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSENDE[?25l14 lines to indent...15E[7Cindented E[60;19HE[KE[38;1H    $(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;
 E[7C}
    }, options||{}));E[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[53;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[54;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3L, 35C writtenE[54;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[54;1HE[?12lE[?25hE[?25lE[60;1H/ENDTEST/+-1E[60;13HE[KE[60;1HE[56;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cino=j1,J1E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSSTARTE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JSENDE[?25l16 lines to indent...17E[7Cindented E[60;19HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[19ME[1;60rE[41;1H(function($){
    function init(options) {E[43;9H$(this).data(class_name+'_public',$.extend({},{E[44;13Hfoo: 'bar',E[45;9Hbar: 2,  // indent 8 moreE[46;9Hfoobar: [  // indent 8 moreE[47;13H1,  // indent 8 moreE[48;9H2,  // indent 16 moreE[49;9H3  // indent 16 moreE[50;13H],E[51;9Hcallback: function(){  // indent 8 moreE[52;13Hreturn true;  // indent 8 moreE[53;9H}  // indent 8 moreE[54;9H}, options||{}));
    }
})(jQuery);
JSEND

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:g/^STARTTEST/.,/^ENDTEST/dE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2L, 61C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTEST/+-1E[60;13HE[KE[60;1HE[58;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hg/^STARTTEST/.,/^ENDTEST/dE[?25l216 fewer linesE[60;16HE[KE[1;13Hvar options=$(this).data(class_name+'_public');E[2;13Hif (!options) {E[2;28HE[KE[3;13H    init.apply(this,_arguments);E[4;9HE[KE[5;5H E[7C} else {E[6;17Hvar method=public_method[_arguments[0]];E[7;1HE[KE[8;1H     E[11Cif (typeof(method)!='function') {E[9;21Hconsole.log(class_name+' has no method "'+_arguments[0]+'"'))E[10;1H;E[10;2HE[KE[11;1H                    return false;
         E[7C}
        E[8C_arguments[0]=options;
       E[9Cmethod.apply(this,_arguments);E[15;13H}
        });
    }E[17;6HE[KE[18;5HE[KE[19;1H})(jQuery);E[19;12HE[KE[20;1HJSENDE[20;9HE[KE[21;9HE[KE[22;9HE[KE[23;1HJSSTARTE[23;9HE[KE[24;1Hfunction init(options) {E[24;25HE[KE[25;5H$(this).data(class_name+'_public',$.extend({},{E[26;9Hfoo: 'bar',E[26;20HE[KE[27;9Hbar: 2,E[27;16HE[KE[28;9Hfoobar: [
        1,  // indent 8 more
 E[7C2,  // indent 8 more
        3   // indent 8 moreE[32;9H],
        callback: function(){
            return true;
        }
    }, options||{}));
}E[37;2HE[KE[38;1HJSENDE[39;1HE[KE[40;1HE[KE[41;1HJSSTARTE[41;8HE[KE[42;1H(function($){E[42;14HE[KE[43;5Hfunction init(options) {E[44;9H$(this).data(class_name+'_public',$.extend({},{E[45;9H    foo: 'bar',E[45;24HE[KE[46;9Hbar: 2,  // indent 8 moreE[47;9Hfoobar: [  // indent 8 moreE[48;9H    1,  // indent 8 moreE[49;9H2,  // indent 16 moreE[50;9H3  // indent 16 moreE[50;29HE[KE[51;13H],E[51;15HE[KE[52;9Hcallback: function(){  // indent 8 moreE[53;9H    return true;  // indent 8 more
        }  // indent 8 more
        }, options||{}));
    }
})(jQuery);
JSENDE[58;6HE[KE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h1;/start of AUTO/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 1820L, 18429C written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test4.in" 31 lines, 839 charactersE[1;1HTest 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 XxxE[13C" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indentedE[34m^[E[m
:E[19C" Append text with autoindent to this file
:au! BufEnter Xxx
:buf XxxE[12C" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1E[34m^[E[m:wq " append text without autoindent to Xxx
G:r XxxE[13C" include Xxx in the current file
:?startstart?,$w! test.out
:qa!
ENDTEST

startstart
start of test file Xxx
vim: set noai :E[27;9Hthis is a testE[28;9Hthis is a testE[29;9Hthis is a testE[30;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for autocommand that changes current buffer on BufEnter event.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 17 lines, 557 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[22;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufEnter Xxx brewE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hstart ofE[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx   " write test file XxxE[?25l"Xxx" E[60;7HE[KE[60;7H[New] 7L, 124C writtenE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ai modeline modelines=3E[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xxx             " split to Xxx, autocmd will do :brewE[?25l"Xxx" E[60;7HE[KE[60;7H7L, 124CE[30;1HE[1mE[7mtest4.in                                                                                        E[mE[31;1H:                   " Append text with autoindent to this file
:au! BufEnter XxxE[32;18HE[KE[33;1H:buf Xxx            " go to Xxx, no autocmd anymoreE[33;52HE[KE[34;1HG?this is aE[34;12HE[KE[35;1Hothis should be in column 1E[34m^[E[m:wq " append text without autoindent to XxxE[35;73HE[KE[36;1HG:r Xxx             " include Xxx in the current fileE[36;54HE[KE[37;1H:?startstart?,$w! test.outE[37;27HE[KE[38;1H:qa!E[38;5HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1HstartstartE[41;11HE[KE[42;1Hstart of test file XxxE[42;23HE[KE[43;1Hvim: set noai :E[43;16HE[KE[44;1H        this is a testE[44;23HE[KE[45;1H        this is a testE[45;23HE[KE[46;1H        this is a testE[46;23HE[KE[47;1H        this is a testE[47;23HE[KE[48;1Hend of test file XxxE[48;21HE[KE[59;1HE[7mtest4.in                                                                                        E[mE[60;2Htest4.in" line 1 of 31 --3%-- col 1E[1;1HE[?12lE[?25hE[?25lE[1;29rE[1;1HE[2ME[1;60rE[28;9Hthis is a test
end of test file XxxE[60;1HE[KE[29;1HE[?12lE[?25hE[?25lE[60;1H?E[?12lE[?25hthis is aE[?25lE[28;9HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[29;1H        this should be auto-indentedE[30;10HE[1mE[7m[+]E[48;58rE[mE[48;1HE[LE[1;60rE[48;9Hthis should be auto-indentedE[59;10HE[7m[+]E[29;36HE[?12lE[?25hE[?25lE[1;29rE[mE[29;1H
E[1;60rE[29;1Hend of test file XxxE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h                   " Append text with autoindent to this fileE[?25lE[29;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau! BufEnter XxxE[?25lE[29;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbuf Xxx            " go to Xxx, no autocmd anymoreE[?25l"Xxx" E[60;7HE[KE[60;7H7L, 124CE[1;1Hstart of test file Xxx
vim: set noai :
        this is a testE[3;23HE[KE[4;1H        this is a test
        this is a test
        this is a testE[6;23HE[KE[7;1Hend of test file XxxE[7;21HE[KE[8;1HE[1mE[34m~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7mXxxt          E[1;1HE[?12lE[?25hE[7;1HE[?25lE[mE[60;1HE[KE[60;1H?E[?12lE[?25hthis is aE[?25lE[6;9HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[7;29rE[7;1HE[LE[1;60rE[7;1Hthis should be in column 1E[30;5HE[1mE[7m[+]E[7;26HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwq " append text without autoindent to XxxE[?25l"XxxE[60;7HE[KE[60;7H8L, 151C writtenE[1;1HTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.E[3;9HE[KE[4;1HSTARTTESTE[4;10HE[KE[5;1H:so small.vimE[5;14HE[KE[6;1H:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brewE[7;22HE[KE[8;1H/start ofE[8;10HE[KE[9;1H:.,/end of/w! Xxx   " write test file XxxE[9;42HE[KE[10;1H:set ai modeline modelines=3E[10;29HE[KE[11;1H:sp Xxx             " split to Xxx, autocmd will do :brewE[11;58HE[KE[12;1HG?this is aE[12;12HE[KE[13;1Hothis should be auto-indentedE[34m^[E[mE[13;32HE[KE[14;1H:                   " Append text with autoindent to this fileE[14;63HE[KE[15;1H:au! BufEnter XxxE[15;18HE[KE[16;1H:buf Xxx            " go to Xxx, no autocmd anymoreE[16;52HE[KE[17;1HG?this is aE[17;12HE[KE[18;1Hothis should be in column 1E[34m^[E[m:wq " append text without autoindent to XxxE[18;73HE[KE[19;1HG:r Xxx             " include Xxx in the current fileE[19;54HE[KE[20;1H:?startstart?,$w! test.outE[20;27HE[KE[21;1H:qa!E[21;5HE[KE[22;1HENDTESTE[22;8HE[KE[23;1HE[KE[24;1HstartstartE[24;11HE[KE[25;1Hstart of test file XxxE[25;23HE[KE[26;1Hvim: set noai :E[26;16HE[KE[27;1H        this is a testE[27;23HE[KE[28;1H        this is a testE[28;23HE[KE[29;1H        this is a testE[29;23HE[KE[30;1H        this is a testE[30;23HE[KE[31;1H E[7Cthis should be auto-indentedE[31;37HE[KE[32;1Hend of test file Xxx
E[1mE[34m~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[59;1H~                                                                                               E[25;1HE[?12lE[?25hE[32;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hr Xxx             " include Xxx in the current fileE[?25l"Xxx" E[60;20HE[KE[60;7H8L, 151CE[33;1Hstart of test file XxxE[33;23HE[KE[34;1Hvim: set noai :E[34;16HE[KE[35;1H        this is a testE[35;23HE[KE[36;1H        this is a testE[36;23HE[KE[37;1H        this is a testE[37;23HE[KE[38;1H        this is a testE[38;23HE[KE[39;1Hthis should be in column 1E[39;27HE[KE[40;1Hend of test file XxxE[40;21HE[KE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?startstart?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 17L, 316C writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test5.in" 29 lines, 949 charactersE[1;1HTest 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! XxxE[15C" write test file Xxx
:sp XxxE[25C" split to Xxx
:bwipeE[26C" delete buffer Xxx, now we're back here
G?this is a
othis is some more textE[34m^[E[m
:E[31C" Append some text to this file
:?start?,$w! test.outE[11C" Write current file contents
:bwipe test.outE[17C" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe!E[25C" delete current buffer, get an empty one
ithis is another test lineE[34m^[E[m:w >>test.out
:E[31C" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx
vim: set noai :E[25;9Hthis is a testE[26;9Hthis is a testE[27;9Hthis is a testE[28;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for autocommand that deletes the current buffer on BufLeave event.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 16 lines, 664 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[21;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufLeave Xxx bwipeE[?25lE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hstart ofE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx               " write test file XxxE[?25l"Xxx" E[60;7HE[KE[60;7H[New File] 7 lines, 124 characters writtenE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xxx                         " split to XxxE[?25l"Xxx" E[60;7HE[KE[60;7H7 lines, 124 charactersE[1;1Hstart of test file XxxE[1;23HE[KE[2;1Hvim: set noai :E[2;16HE[KE[3;9Hthis is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7mXxx                                                                                             E[mE[31;1H:                               " Append some text to this fileE[31;64HE[KE[32;1H:?start?,$w! test.out           " Write current file contentsE[32;62HE[KE[33;1H:bwipe test.out                 " delete alternate bufferE[33;58HE[KE[34;1H:au bufleave test5.in bwipeE[34;28HE[KE[35;1H:bwipe!                         " delete current buffer, get an empty oneE[35;74HE[KE[36;1Hithis is another test lineE[34m^[E[m:w >>test.outE[36;42HE[KE[37;1H:                               " append an extra line to the output fileE[37;74HE[KE[38;1H:qa!E[38;5HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1Hstart of test file XxxE[41;23HE[KE[42;1Hvim: set noai :E[42;16HE[KE[43;1H        this is a testE[43;23HE[KE[44;1H        this is a testE[44;23HE[KE[45;1H        this is a testE[45;23HE[KE[46;1H        this is a testE[46;23HE[KE[47;1Hend of test file XxxE[47;21HE[KE[59;1HE[7mtest5.in                                                                                        E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe                          " delete buffer Xxx, now we're back hereE[?25lE[1;1HTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.E[3;9HE[KE[4;1HSTARTTESTE[4;10HE[KE[5;1H:so small.vimE[5;14HE[KE[6;1H:au BufLeave Xxx bwipe
/start ofE[7;10HE[KE[8;1H:.,/end of/w! Xxx               " write test file XxxE[8;54HE[KE[9;1H:sp Xxx                         " split to XxxE[9;47HE[KE[10;1H:bwipe                          " delete buffer Xxx, now we're back hereE[10;73HE[KE[11;1HG?this is aE[11;12HE[KE[12;1Hothis is some more textE[34m^[E[mE[12;26HE[KE[13;1H:                               " Append some text to this fileE[13;64HE[KE[14;1H:?start?,$w! test.out           " Write current file contentsE[14;62HE[KE[15;1H:bwipe test.out                 " delete alternate bufferE[15;58HE[KE[16;1H:au bufleave test5.in bwipeE[16;28HE[KE[17;1H:bwipe!                         " delete current buffer, get an empty oneE[17;74HE[KE[18;1Hithis is another test lineE[34m^[E[m:w >>test.outE[18;42HE[KE[19;1H:                               " append an extra line to the output fileE[19;74HE[KE[20;1H:qa!E[20;5HE[KE[21;1HENDTESTE[21;8HE[KE[22;1HE[KE[23;1Hstart of test file XxxE[23;23HE[KE[24;1Hvim: set noai :E[24;16HE[KE[25;1H        this is a testE[25;23HE[KE[26;1H        this is a testE[26;23HE[KE[27;1H        this is a testE[27;23HE[KE[28;1H        this is a testE[28;23HE[KE[29;1Hend of test file XxxE[29;21HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H"test5.in" line 23 of 29 --79%-- col 1E[60;39HE[KE[23;1HE[?12lE[?25hE[29;1HE[?25lE[60;1HE[KE[60;1H?E[?12lE[?25hthis is aE[?25lE[28;9HE[?12lE[?25hE[?25lE[29;59rE[29;1HE[LE[1;60rE[29;1Hthis is some more textE[60;1HE[KE[29;22HE[?12lE[?25hE[30;20HE[?25lE[60;1H:E[?12lE[?25h                               " Append some text to this fileE[?25lE[30;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?start?,$w! test.out           " Write current file contentsE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 8 lines, 147 characters writtenE[30;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe test.out                 " delete alternate bufferE[?25lE[30;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau bufleave test5.in bwipeE[?25lE[30;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!                         " delete current buffer, get an empty oneE[?25lE[1mE[37mE[41mError detected while processing BufLeave Auto commands for "test5.in":E[mE[60;71HE[KE[60;1H
E[1mE[37mE[41mE89: No write since last change for buffer 1 (add ! to override)E[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[2LE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lthis is another test lineE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 26 characters appendedE[1;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h                               " append an extra line to the output fileE[?25lE[1;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test6.in" 24 lines, 739 charactersE[1;1HTest for autocommand that redefines the argument list, when doing ":all".

STARTTEST
:so small.vim
:au BufReadPost Xxx2 next Xxx2 Xxx1
/^start of
A1E[34m^[E[m:.,/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
:allE[22C" open window for all args
:w! test.outE[14C" Write contents of Xxx1
E[34m^W^W^W^WE[m:w >>test.out     " Append contents of last window (Xxx1)
:rewE[22C" should now be in Xxx2
:w >>test.outE[13C" Append contents of Xxx2
:qa!
ENDTEST

start of test file XxxE[20;9Hthis is a testE[21;9Hthis is a testE[22;9Hthis is a testE[23;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for autocommand that redefines the argument list, when doing ":all".E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 13 lines, 537 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[17;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPost Xxx2 next Xxx2 Xxx1E[?25lE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start ofE[?25lE[19;1HE[?12lE[?25hE[?25lE[22C1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx1    " write test file Xxx1E[?25l"Xxx1" E[60;9HE[KE[60;8H[New File] 6 lines, 109 characters writtenE[19;23HE[?12lE[?25hE[?25l2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx2     " write test file Xxx2E[?25l"Xxx2" E[60;9HE[KE[60;8H[New File] 6 lines, 109 characters writtenE[19;23HE[?12lE[?25hE[?25l3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx3     " write test file Xxx3E[?25l"Xxx3" E[60;9HE[KE[60;8H[New File] 6 lines, 109 characters writtenE[19;23HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnext! Xxx1 Xxx2 Xxx3     " redefine arglist; go to Xxx1E[?25l"Xxx1"E[60;8HE[KE[60;8H6 lines, 109 charactersE[1;1Hstart of test file Xxx1E[1;24HE[KE[2;9Hthis is a test
        this is a test
        this is a test
        this is a testE[5;23HE[KE[6;1Hend of test file Xxx
E[1mE[34m~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hall                      " open window for all argsE[?25l"Xxx2"E[60;27HE[KE[60;8H6 lines, 109 characters
"Xxx2" 6 lines, 109 characters
"Xxx1" line 1 of 6 --16%-- col 1 (file (3) of 2)
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.out              " Write contents of Xxx1E[?25l"test.out" E[60;12HE[KE[60;12H[New File] 6 lines, 109 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1Hstart of test file Xxx1E[2;9Hthis is a testE[3;9Hthis is a testE[4;9Hthis is a testE[5;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[1mE[7mXxx1                                                                                            E[mE[21;1Hstart of test file Xxx2E[22;9Hthis is a testE[23;9Hthis is a testE[24;9Hthis is a testE[25;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[mE[39;1HE[7mXxx2                                                                                            E[mE[40;1Hstart of test file Xxx1E[41;9Hthis is a testE[42;9Hthis is a testE[43;9Hthis is a testE[44;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mXxx1                                                                                            E[1;1HE[?12lE[?25hE[20;1HXxx1E[mE[1mE[7m E[mE[7m                                                                                            E[mE[39;1HE[1mE[7mXxx2                                                                                            E[21;1HE[mE[39;1HE[7mXxx2E[mE[1mE[7m E[mE[7m                                                                                            E[mE[59;1HE[1mE[7mXxx1                                                                                            E[40;1HE[?25lE[60;1HE[m:E[?12lE[?25hw >>test.out     " Append contents of last window (Xxx1)E[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 109 characters appendedE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hrew                      " should now be in Xxx2E[?25l"Xxx2" line 1 of 6 --16%-- col 1 (file 1 of 2)E[60;47HE[KE[40;23H2E[59;4HE[1mE[7m2 E[40;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.out             " Append contents of Xxx2E[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 109 characters appendedE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test7.in" 26 lines, 675 charactersE[1;1HTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1E[34m^[E[m:.,/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:ballE[17C" open window for all args, close Xxx2
:.,$w! test.outE[10C" Write contents of this file
E[34m^W^WE[m:w >>test.outE[8C" Append contents of second window (Xxx1)
E[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file XxxE[24;9Hthis is a testE[25;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for autocommand that changes the buffer list, when doing ":ball".E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 17 lines, 508 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[21;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start ofE[?25lE[23;1HE[?12lE[?25hE[?25lE[22C1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx1   " write test file Xxx1E[?25l"Xxx1" E[60;9HE[KE[60;8H[New File] 4 lines, 77 characters writtenE[23;23HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xxx1E[?25l"Xxx1" E[60;8HE[KE[60;8H4 lines, 77 charactersE[1;1Hstart of test file Xxx1E[1;24HE[KE[2;9Hthis is a test
        this is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[mE[30;1HE[1mE[7mXxx1                                                                                            E[mE[31;1H:sp Xxx3E[31;9HE[KE[32;1H:closeE[32;7HE[KE[33;1H:au BufReadPost Xxx2 bwipeE[33;27HE[KE[34;1H$r4:ball                 " open window for all args, close Xxx2E[34;64HE[KE[35;1H:.,$w! test.out          " Write contents of this fileE[35;55HE[KE[36;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[36;67HE[KE[37;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[37;78HE[KE[38;1H:qa!E[38;5HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1Hstart of test file Xxx1E[41;24HE[KE[42;1H        this is a testE[42;23HE[KE[43;1H        this is a testE[43;23HE[KE[44;1Hend of test file XxxE[44;21HE[KE[59;1HE[7mtest7.in [+]                                                                                    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1HTest for autocommand that changes the buffer list, when doing ":ball".E[2;9HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;1H:so small.vimE[4;14HE[KE[5;1H/^start ofE[5;11HE[KE[6;1HA1E[34m^[E[m:.,/end of/w! Xxx1   " write test file Xxx1E[6;48HE[KE[7;1H:sp Xxx1E[7;9HE[KE[8;1H:closeE[8;7HE[KE[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2E[9;48HE[KE[10;1H:sp Xxx2E[10;9HE[KE[11;1H:closeE[11;7HE[KE[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3E[12;48HE[KE[13;1H:sp Xxx3E[13;9HE[KE[14;1H:closeE[14;7HE[KE[15;1H:au BufReadPost Xxx2 bwipeE[15;27HE[KE[16;1H$r4:ball                 " open window for all args, close Xxx2E[16;64HE[KE[17;1H:.,$w! test.out          " Write contents of this fileE[17;55HE[KE[18;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[18;67HE[KE[19;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[19;78HE[KE[20;1H:qa!E[20;5HE[KE[21;1HENDTESTE[21;8HE[KE[22;1HE[KE[23;1Hstart of test file Xxx1E[23;24HE[KE[24;1H        this is a testE[24;23HE[KE[25;1H        this is a testE[25;23HE[KE[26;1Hend of test file XxxE[26;21HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[59;1H~                                                                                               E[23;23HE[?12lE[?25hE[?25lE[m2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx2    " write test file Xxx2E[?25l"Xxx2" E[60;9HE[KE[60;8H[New File] 4 lines, 77 characters writtenE[23;23HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xxx2E[?25l"Xxx2" E[60;8HE[KE[60;8H4 lines, 77 charactersE[1;1Hstart of test file Xxx2E[1;24HE[KE[2;9Hthis is a test
        this is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[mE[30;1HE[1mE[7mXxx2                                                                                            E[mE[31;1H:sp Xxx3E[31;9HE[KE[32;1H:closeE[32;7HE[KE[33;1H:au BufReadPost Xxx2 bwipeE[33;27HE[KE[34;1H$r4:ball                 " open window for all args, close Xxx2E[34;64HE[KE[35;1H:.,$w! test.out          " Write contents of this fileE[35;55HE[KE[36;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[36;67HE[KE[37;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[37;78HE[KE[38;1H:qa!E[38;5HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1Hstart of test file Xxx2E[41;24HE[KE[42;1H        this is a testE[42;23HE[KE[43;1H        this is a testE[43;23HE[KE[44;1Hend of test file XxxE[44;21HE[KE[59;1HE[7mtest7.in [+]                                                                                    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1HTest for autocommand that changes the buffer list, when doing ":ball".E[2;9HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;1H:so small.vimE[4;14HE[KE[5;1H/^start ofE[5;11HE[KE[6;1HA1E[34m^[E[m:.,/end of/w! Xxx1   " write test file Xxx1E[6;48HE[KE[7;1H:sp Xxx1E[7;9HE[KE[8;1H:closeE[8;7HE[KE[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2E[9;48HE[KE[10;1H:sp Xxx2E[10;9HE[KE[11;1H:closeE[11;7HE[KE[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3E[12;48HE[KE[13;1H:sp Xxx3E[13;9HE[KE[14;1H:closeE[14;7HE[KE[15;1H:au BufReadPost Xxx2 bwipeE[15;27HE[KE[16;1H$r4:ball                 " open window for all args, close Xxx2E[16;64HE[KE[17;1H:.,$w! test.out          " Write contents of this fileE[17;55HE[KE[18;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[18;67HE[KE[19;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[19;78HE[KE[20;1H:qa!E[20;5HE[KE[21;1HENDTESTE[21;8HE[KE[22;1HE[KE[23;1Hstart of test file Xxx2E[23;24HE[KE[24;1H        this is a testE[24;23HE[KE[25;1H        this is a testE[25;23HE[KE[26;1Hend of test file XxxE[26;21HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[59;1H~                                                                                               E[23;23HE[?12lE[?25hE[?25lE[m3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx3    " write test file Xxx3E[?25l"Xxx3" E[60;9HE[KE[60;8H[New File] 4 lines, 77 characters writtenE[23;23HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xxx3E[?25l"Xxx3" E[60;8HE[KE[60;8H4 lines, 77 charactersE[1;1Hstart of test file Xxx3E[1;24HE[KE[2;9Hthis is a test
        this is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[mE[30;1HE[1mE[7mXxx3                                                                                            E[mE[31;1H:sp Xxx3E[31;9HE[KE[32;1H:closeE[32;7HE[KE[33;1H:au BufReadPost Xxx2 bwipeE[33;27HE[KE[34;1H$r4:ball                 " open window for all args, close Xxx2E[34;64HE[KE[35;1H:.,$w! test.out          " Write contents of this fileE[35;55HE[KE[36;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[36;67HE[KE[37;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[37;78HE[KE[38;1H:qa!E[38;5HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1Hstart of test file Xxx3E[41;24HE[KE[42;1H        this is a testE[42;23HE[KE[43;1H        this is a testE[43;23HE[KE[44;1Hend of test file XxxE[44;21HE[KE[59;1HE[7mtest7.in [+]                                                                                    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1HTest for autocommand that changes the buffer list, when doing ":ball".E[2;9HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;1H:so small.vimE[4;14HE[KE[5;1H/^start ofE[5;11HE[KE[6;1HA1E[34m^[E[m:.,/end of/w! Xxx1   " write test file Xxx1E[6;48HE[KE[7;1H:sp Xxx1E[7;9HE[KE[8;1H:closeE[8;7HE[KE[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2E[9;48HE[KE[10;1H:sp Xxx2E[10;9HE[KE[11;1H:closeE[11;7HE[KE[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3E[12;48HE[KE[13;1H:sp Xxx3E[13;9HE[KE[14;1H:closeE[14;7HE[KE[15;1H:au BufReadPost Xxx2 bwipeE[15;27HE[KE[16;1H$r4:ball                 " open window for all args, close Xxx2E[16;64HE[KE[17;1H:.,$w! test.out          " Write contents of this fileE[17;55HE[KE[18;1HE[34m^W^WE[m:w >>test.out        " Append contents of second window (Xxx1)E[18;67HE[KE[19;1HE[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)E[19;78HE[KE[20;1H:qa!E[20;5HE[KE[21;1HENDTESTE[21;8HE[KE[22;1HE[KE[23;1Hstart of test file Xxx3E[23;24HE[KE[24;1H        this is a testE[24;23HE[KE[25;1H        this is a testE[25;23HE[KE[26;1Hend of test file XxxE[26;21HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[59;1H~                                                                                               E[23;23HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPost Xxx2 bwipeE[?25lE[23;23HE[?12lE[?25hE[?25l4E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hball                 " open window for all args, close Xxx2E[?25l"Xxx1"E[60;23HE[KE[60;8H4 lines, 77 characters
"Xxx2" 4 lines, 77 characters
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.,$w! test.out          " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 77 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1H:sp Xxx3
:close
:au BufReadPost Xxx2 bwipe
$r4:ballE[17C" open window for all args, close Xxx2
:.,$w! test.outE[10C" Write contents of this file
E[34m^W^WE[m:w >>test.outE[8C" Append contents of second window (Xxx1)
E[34m^W^WE[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4E[12;9Hthis is a testE[13;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[mE[29;1HE[1mE[7mtest7.in [+]                                                                                    E[mE[30;1Hstart of test file Xxx1E[31;9Hthis is a testE[32;9Hthis is a test
end of test file Xxx
E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mXxx1                                                                                            E[11;23HE[?12lE[?25hE[29;1Htest7.in [+]E[mE[1mE[7m E[mE[7m                                                                                    E[mE[59;1HE[1mE[7mXxx1                                                                                            E[30;1HE[?25lE[60;1HE[m:E[?12lE[?25hw >>test.out        " Append contents of second window (Xxx1)E[?25l"test.out" E[60;12HE[KE[60;12H4 lines, 77 characters appendedE[30;1HE[?12lE[?25hE[29;1HE[1mE[7mtest7.in [+]                                                                                    E[mE[59;1HE[7mXxx1E[mE[1mE[7m E[mE[7m                                                                                            E[11;23HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of/,$w >>test.out   " Append contents of last window (this file)E[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[60;37HE[KE[60;1H"test.out" E[60;12HE[KE[60;12H4 lines, 77 characters appendedE[11;23HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test8.in" 46 lines, 1236 charactersE[1;1HTest 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
A1E[34m^[E[m:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2E[16C" edit Xxx2
:bdel test8.inE[10C" delete this file from the buffer list
:e Xxx1E[17C" edit Xxx1
:wE[22C" write it, will unload it and give an error msg
:w! test.outE[12C" Write contents of this file
:e! Xxx2E[16C" start editing Xxx2
:bwipe test.outE[9C" remove test.out from the buffer list
:wE[22C" write it, will delete the buffer and give an error msg
:w >>test.outE[11C" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$')
    if i != bufnr('%') && bufloaded(i)E[25;7Hexe  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 XxxE[45;9Htest
end of Xxx
E[1mE[34m~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for BufWritePre autocommand that deletes or unloads the buffer.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 37 lines, 1054 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[42;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufWritePre Xxx1 bunloadE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufWritePre Xxx2 bwipeE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start ofE[?25lE[44;1HE[?12lE[?25hE[?25lE[12C1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx1  " write test file Xxx1E[?25l"Xxx1" E[60;9HE[KE[60;8H[New File] 3 lines, 31 characters writtenE[44;13HE[?12lE[?25hE[?25l2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,/end of/w! Xxx2   " write test file Xxx2E[?25l"Xxx2" E[60;9HE[KE[60;8H[New File] 3 lines, 31 characters writtenE[44;13HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xxx2                " edit Xxx2E[?25l"Xxx2" E[60;8HE[KE[60;8H3 lines, 31 charactersE[1;1Hstart of Xxx2E[1;14HE[KE[2;1H        testE[2;13HE[KE[3;1Hend of Xxx
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hbdel test8.inE[34m^I^IE[m" delete this file from the buffer listE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xxx1                 " edit Xxx1E[?25l"Xxx1" E[60;25HE[KE[60;8H3 lines, 31 charactersE[1;13H1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw                      " write it, will unload it and give an error msgE[?25l"Xxx2"E[60;25HE[KE[60;8H3 lines, 31 characters
E[1mE[37mE[41mE203: Autocommands deleted or unloaded buffer to be writtenE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.out            " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 3 lines, 31 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he! Xxx2                " start editing Xxx2E[?25l"Xxx2" E[60;8HE[KE[60;8H3 lines, 31 charactersE[1;1HE[3LE[1;1Hstart of Xxx2E[2;9Htest
end of XxxE[60;1HE[KE[60;1H"Xxx2" 3 lines, 31 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe test.out         " remove test.out from the buffer listE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw                      " write it, will delete the buffer and give an error msgE[?25l"Xxx1"E[60;25HE[KE[60;8H3 lines, 31 characters
E[1mE[37mE[41mE203: Autocommands deleted or unloaded buffer to be writtenE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.out           " Append contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H3 lines, 31 characters appended
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau! BufWritePreE[?25lE[1;1HE[3LE[1;1Hstart of Xxx1E[2;9Htest
end of XxxE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfunc CloseAll()E[?25l
:  E[?12lE[?25h  let i = 0
E[?25l:  E[?12lE[?25h  while i <= bufnr('$')
E[?25l:    E[?12lE[?25h    if i != bufnr('%') && bufloaded(i)
E[?25l:      E[?12lE[?25h      exe  i . "bunload"
E[?25l:      E[?12lE[?25h    endif
E[?25l:    E[?12lE[?25h    let i += 1
E[?25l:    E[?12lE[?25h  endwhile
E[?25l:  E[?12lE[?25hendfuncE[1;1HE[8LE[?25lE[1;1Hstart of Xxx1E[2;9Htest
end of Xxx
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfunc WriteToOut()E[?25l
:  E[?12lE[?25h  edit! test.out
E[?25l:  E[?12lE[?25h  $put ='VimLeave done'
E[?25l:  E[?12lE[?25h  write
E[?25l:  E[?12lE[?25hendfuncE[1;1HE[4LE[?25lE[1;1Hstart of Xxx1E[2;9Htest
end of Xxx
E[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset viminfo='100,nviminfoE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufUnload * call CloseAll()E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau VimLeave * call WriteToOut()E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he small.vimE[?25lE[1mE[37mE[41mError detected while processing function CloseAll:E[m
E[33mline    4:E[m
E[1mE[37mE[41mE515: No buffers were unloaded: 0bunloadE[m
"small.vim" 1 line, 1 character
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsp mbyte.vimE[?25l"mbyte.vim" E[60;13HE[KE[60;13H0 lines, 0 charactersE[1;1HE[4LE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[mE[30;1HE[1mE[7mmbyte.vim                                                                                       E[mE[31;1HE[KE[59;1HE[7msmall.vim                                                                                       E[mE[60;1HE[KE[60;1H"mbyte.vim" 0 lines, 0 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqE[?25lE[1mE[37mE[41mError detected while processing function CloseAll:E[m
E[33mline    4:E[m
E[1mE[37mE[41mE515: No buffers were unloaded: 0bunloadE[m
"test.out" 6 lines, 62 characters
"test.out" 7 lines, 76 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test9.in" 12 lines, 255 charactersE[1;1HTest 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
E[1mE[34m~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for Bufleave autocommand that deletes the buffer we are about to edit.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 5 lines, 117 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[9;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufLeave test9.in bwipe yyE[?25lE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he yyE[?25lE[1mE[37mE[41mE143: Autocommands unexpectedly deleted new buffer yyE[10;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of/,$w! test.out      " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 2 lines, 42 characters writtenE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test10.in" 114 lines, 3080 charactersE[1;1HTest 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
lgRE[34m^RE[m=aE[34m^M^[E[m
:cf Xerrorfile1
grA
:cn
gRLINE 6, COL 19E[34m^[E[m
:cn
gRNO COLUMN SPECIFIEDE[34m^[E[m
:cn
gRAGAIN NO COLUMNE[34m^[E[m
:cn
gRCOL 1E[34m^[E[m
:cn
gRCOL 2E[34m^[E[m
:cn
gRCOL 10E[34m^[E[m
:cn
gRVCOL 10E[34m^[E[m
:cn
grI
:cn
gR. SPACE POINTERE[34m^[E[m
:cn
gR. DOT POINTERE[34m^[E[m
:cn
gR. DASH POINTERE[34m^[E[m
:cn
gR. TAB-SPACE POINTERE[34m^[E[m
:clast
:cprev
:cprev
:wincmd w
:let a=w:quickfix_title
:wincmd p
lgRE[34m^RE[m=aE[34m^M^[E[m
:w! test.outE[13C" 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.cE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for 'errorformat'.  This will fail if the quickfix feature was disabled.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 50 lines, 801 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[54;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Also test a BOM is ignored.E[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset encoding=utf-8E[?25lE[27mE[mE[HE[2JE[1;1HTest 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
lgRE[34m^RE[m=aE[34m^M^[E[m
:cf Xerrorfile1
grA
:cn
gRLINE 6, COL 19E[34m^[E[m
:cn
gRNO COLUMN SPECIFIEDE[34m^[E[m
:cn
gRAGAIN NO COLUMNE[34m^[E[m
:cn
gRCOL 1E[34m^[E[m
:cn
gRCOL 2E[34m^[E[m
:cn
gRCOL 10E[34m^[E[m
:cn
gRVCOL 10E[34m^[E[m
:cn
grI
:cn
gR. SPACE POINTERE[34m^[E[m
:cn
gR. DOT POINTERE[34m^[E[m
:cn
gR. DASH POINTERE[34m^[E[m
:cn
gR. TAB-SPACE POINTERE[34m^[E[m
:clast
:cprev
:cprev
:wincmd w
:let a=w:quickfix_title
:wincmd p
lgRE[34m^RE[m=aE[34m^M^[E[m
:w! test.outE[13C" Write contents of this file
:qa!
ENDTEST

start of errorfile
"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
E[34m<feff>E[m"Xtestfile", line 6 col 19; this is an error
gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.cE[55;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h7/start of errorfile/,/end of errorfile/w! Xerrorfile1E[?25l"Xerrorfile1" E[60;15HE[KE[60;15H[New File] 83 lines, 1974 characters writtenE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2E[?25l"Xerrorfile2" E[60;15HE[KE[60;15H[New File] 82 lines, 1957 characters writtenE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/start of testfile/,/end of testfile/w! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[New File] 23 lines, 937 characters writtenE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %mE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%mE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcf Xerrorfile2E[?25l"Xtestfile" E[60;13HE[KE[60;13H23 lines, 937 characters
(50 of 70): 1506-045 (S) Undeclared identifier fd_set.
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hclastE[?25l(70 of 70): What is the title of the quickfix window?
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcopenE[?25lE[1;1HE[3LE[1;1Hstart of testfileE[2;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  2E[3;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  3
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  4
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  5
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  6
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  7
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  8E[8;50HE[KE[9;1H        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line  9E[9;50HE[KE[10;1H        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 10E[10;50HE[KE[11;1H        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12E[12;50HE[KE[13;1H        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
E[1mE[34m~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[mE[48;1HE[7mXtestfile                                                                                       E[mE[49;1HXtestfile|15 col 10| this is another error, but in vcol 10 this time
Xtestfile|16| yet another problem
Xtestfile|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?E[57;62HE[KE[58;1HE[30mE[43mXtestfile|22 col 9| What is the title of the quickfix window?                                   E[mE[59;1HE[1mE[7m[Quickfix List]                                                                                 E[mE[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hlet a=w:quickfix_titleE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;1HE[1mE[7mXtestfile                                                                                       E[mE[59;1HE[7m[Quickfix List]E[mE[1mE[7m E[mE[7m                                                                                 E[22;16HE[?12lE[?25hE[mxE[?25lE[60;1HE[KE[60;1H=E[?12lE[?25haE[?25lE[22;17H:cf Xerrorfile2E[48;11HE[1mE[7m[+]E[22;31HE[?12lE[?25hE[23;15HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcf Xerrorfile1E[?25lE[49;1H|| :qa!E[49;8HE[KE[50;1H|| ENDTESTE[50;11HE[KE[51;1H|| E[51;4HE[KE[52;1H|| start of errorfileE[52;23HE[KE[53;1HE[30mE[43mXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set.                                  E[mE[54;11H6 col 19| this is an errorE[54;37HE[KE[55;4Hgcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
Xtestfile|9| parse error before `asd'E[56;38HE[KE[57;1H|| make: *** [vim] Error 1E[57;27HE[KE[58;1HXtestfile|10| there is an errorE[58;32HE[KE[4;19HE[?12lE[?25hE[?25lAE[?12lE[?25hE[5;19HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcnE[?25lE[53;1HXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set.E[53;63HE[KE[54;1HE[30mE[43mXtestfile|6 col 19| this is an error                                                            E[6;26HE[?12lE[?25hE[?25lE[mLINE 6, COL 19E[?12lE[?25hE[7;39HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcnE[?25lE[54;1HXtestfile|6 col 19| this is an errorE[54;37HE[KE[56;1HE[30mE[43mXtestfile|9| parse error before `asd'                                                           E[9;9HE[?12lE[?25hE[?25lE[mNO COLUMN SPECIFIEDE[?12lE[?25hE[10;27HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcnE[?25lE[56;1HXtestfile|9| parse error before `asd'E[56;38HE[KE[58;1HE[30mE[43mXtestfile|10| there is an error                                                                 E[10;9HE[?12lE[?25hE[?25lE[mAGAIN NO COLUMNE[?12lE[?25hE[11;23HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[49;1HE[3ME[1;60rE[55;1HXtestfile|10| there is an errorE[55;32HE[KE[56;1H||
|| 2 returned
E[30mE[43mXtestfile|11 col 1| this is an error                                                            E[mE[60;1HE[KE[11;8HE[?12lE[?25hE[?25lCOL 1E[?12lE[?25hE[12;8HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|11 col 1| this is an errorE[57;37HE[KE[58;1HE[30mE[43mXtestfile|12 col 2| this is another error                                                       E[mE[60;1HE[KE[12;9HE[?12lE[?25hE[?25lCOL 2E[?12lE[?25hE[13;13HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|12 col 2| this is another errorE[57;42HE[KE[58;1HE[30mE[43mXtestfile|14 col 10| this is an error in column 10                                              E[mE[60;1HE[KE[14;17HE[?12lE[?25hE[?25lCOL 10E[?12lE[?25hE[15;22HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|14 col 10| this is an error in column 10E[57;51HE[KE[58;1HE[30mE[43mXtestfile|15 col 10| this is another error, but in vcol 10 this time                            E[mE[60;1HE[KE[15;10HE[?12lE[?25hE[?25lVCOL 10E[?12lE[?25hE[16;16HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|15 col 10| this is another error, but in vcol 10 this timeE[57;69HE[KE[58;1HE[30mE[43mXtestfile|16| yet another problem                                                               E[mE[60;1HE[KE[16;9HE[?12lE[?25hE[?25lIE[?12lE[?25hE[17;9HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|16| yet another problemE[57;34HE[KE[58;1HE[30mE[43mXtestfile|17 col 13|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17               E[mE[60;1HE[KE[17;13HE[?12lE[?25hE[?25l. SPACE POINTERE[?12lE[?25hE[18;27HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|17 col 13|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17E[57;82HE[KE[58;1HE[30mE[43mXtestfile|18 col 14|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18               E[mE[60;1HE[KE[18;14HE[?12lE[?25hE[?25l. DOT POINTERE[?12lE[?25hE[19;26HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|18 col 14|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18E[57;82HE[KE[58;1HE[30mE[43mXtestfile|19 col 15|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19               E[mE[60;1HE[KE[19;15HE[?12lE[?25hE[?25l. DASH POINTERE[?12lE[?25hE[20;28HE[?25lE[60;1H:E[?12lE[?25hcnE[?25lE[49;58rE[58;1H
E[1;60rE[57;1HXtestfile|19 col 15|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19E[57;82HE[KE[58;1HE[30mE[43mXtestfile|20 col 16|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20               E[mE[60;1HE[KE[20;16HE[?12lE[?25hE[?25l. TAB-SPACE POINTERE[?12lE[?25hE[21;34HE[?25lE[60;1H:E[?12lE[?25hclastE[?25lE[49;58rE[49;1HE[5ME[1;60rE[53;1HXtestfile|20 col 16|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20E[53;82HE[KE[54;1H||
|| 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?
E[30mE[43m|| end of errorfile                                                                             E[mE[60;1HE[KE[21;9HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcprevE[?25lE[57;1HE[30mE[43mXtestfile|22 col 9| What is the title of the quickfix window?                                   E[mE[58;1H|| end of errorfileE[58;20HE[KE[22;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcprevE[?25lE[56;1HE[30mE[43mXtestfile|21 col 9| What is the title of the quickfix window?                                   E[mE[57;1HXtestfile|22 col 9| What is the title of the quickfix window?E[57;62HE[KE[21;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd wE[?25lE[48;1HE[7mXtestfile [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[Quickfix List]                                                                                 E[56;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet a=w:quickfix_titleE[?25lE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;1HE[1mE[7mXtestfile [+]                                                                                   E[mE[59;1HE[7m[Quickfix List]E[mE[1mE[7m E[mE[7m                                                                                 E[21;16HE[?12lE[?25hE[mxE[?25lE[60;1HE[KE[60;1H=E[?12lE[?25haE[?25lE[21;17H:cf Xerrorfile1E[?12lE[?25hE[22;31HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.out             " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 23 lines, 942 characters writtenE[48;11HE[1mE[7m    E[22;31HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test11.in" 84 lines, 3345 charactersE[1;1HTests for autocommands:
- FileWritePreE[10Cwriting a compressed file
- FileReadPostE[10Creading a compressed file
- BufNewFileE[12Creading a file template
- BufReadPreE[12Cdecompressing the file to be read
- FilterReadPreE[9Csubstituting characters in the temp file
- FilterReadPostE[8Csubstituting characters after filtering
- FileReadPreE[11Cset options for decompression
- FileReadPostE[10Cdecompress 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.gzE[16C" 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.cE[23C" Will load Xtest.c
:au FileAppendPre   *.out  '[,']s/new/NEW/
:au FileAppendPost  *.out  !cat Xtest.c >>test.out
:w>>test.outE[20C" Append it to the output file
:au! FileAppendPre
:" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gzE[16C" Edit compressed file
:w>>test.outE[20C" Append it to the output file
:set shelltempE[18C" need temp files here
:au FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . ".t")
:au FilterReadPre   *.out  exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shelleeE[50;1Hscape(expand("<afile>"))
:au FilterReadPre   *.out  exe '!rm ' . shellescape(expand("<afile>")) . '.t'
:au FilterReadPost  *.out  '[,']s/x/X/g
:e! test.outE[20C" Edit the output file
:23,$!cat
:23,$s/\r$//E[17C" remove CR for when sed adds them
:au! FileReadPre    *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gzE[13C" Read compressed fileE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for autocommands:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[16;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 48 lines, 2277 characters writtenE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[17;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[7ME[1;60rE[53;1H:wE[27C" write it, after filtering
:au!E[13C" remove all autocommands
:eE[15C" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" drop out when there is no gzip programE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !executable("gzip")E[?25l
:  E[?12lE[?25h: e! test.ok
E[?25l:  E[?12lE[?25h: w! test.out
E[?25l:  E[?12lE[?25h: qa!
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H- FileReadPostE[10Cdecompress the file

Note: This test is skipped if "gzip" is not available.
$GZIP is made empty, "-v" would cause trouble.E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet $GZIP = ""E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FileChangedShell * echo "caught FileChangedShell"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FileWritePre    *.gz   '[,']!gzipE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FileWritePost   *.gz   undoE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of testfile/,/^end of testfile/w! Xtestfile.gzE[?25lE[?12lE[?25hE[?25l11 lines filteredE[60;18HE[KE[60;1H
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written
10 more lines; before #1  0 seconds ago
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau FileReadPost    *.gz   '[,']!gzip -dE[?25lE[1;1HE[3LE[1;1H: w! test.out
: qa!
:endif
:let $GZIP = ""E[4;16HE[KE[5;1H:au FileChangedShell * echo "caught FileChangedShell"E[5;54HE[KE[6;1H:set binE[6;10HE[KE[7;1H:au FileWritePre    *.gz   '[,']!gzip
:au FileWritePost   *.gz   undo
:/^start of testfile/,/^end of testfile/w! Xtestfile.gz
:au FileReadPost    *.gz   '[,']!gzip -dE[10;41HE[KE[11;2H$r Xtestfile.gz       E[9C" 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.cE[23C" Will load Xtest.c
:au FileAppendPre   *.out  '[,']s/new/NEW/E[17;9HAppendPost  *.out  !cat Xtest.c >>test.outE[17;51HE[KE[18;2Hw>>test.outE[20C" Append it to the output file
:au! FileAppendPreE[19;21HE[KE[20;2H" setup autocommands to decompress before reading and re-compress afterwards
:au BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))
:au BufReadPre  E[11Ccall rename(expand("<afile>:r"), expand("<afile>"))
:au BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))
:au BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))
:e! Xtestfile.gz                " Edit compressed file
:w>>test.out                    " Append it to the output file
:set shelltempE[20Cneed temp files hereE[28;8HterReaE[14Ccall rename(expand("<afile>"), expand("<afile>") . ".t")E[29;8HterReadPre E[9Cexe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shelleeE[30;1Hscape(expand("<afile>"))E[30;33HE[KE[31;4H FilterReadPre   *.out  exe '!rm ' . shellescape(expand("<afile>")) . '.t'
:au FilterReadPost  *.out  '[,']s/x/X/gE[32;40HE[KE[33;2He! test.out                    " Edit the output fileE[33;55HE[KE[34;2H23,$!catE[34;10HE[KE[35;2H23,$s/\r$//                 " remove CR for when sed adds themE[35;64HE[KE[36;4H! FileReadPreE[22C-d ' . shellescape(expand("<afile>"))
:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/E[38;39HE[KE[39;2H$r Xtestfile.gzE[13C" Read compressed fileE[39;52HE[KE[40;2Hw                           " write it, after filteringE[40;57HE[KE[41;4H!             " remove all autocommandsE[41;43HE[KE[42;1H:e               " Edit test.out again
:set nobin ff&   " use the default fileformat for writingE[43;58HE[KE[44;2HwE[44;3HE[KE[45;2Hqa!E[45;5HE[KE[46;1HENDTESTE[46;8HE[KE[47;1HE[KE[48;1HstartstartE[48;11HE[KE[49;1Hstart of testfileE[49;21HE[KE[50;1Hline 2  AbcdefghijklmnopqrstuvwxyzE[50;35HE[KE[51;1Hline 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[51;39HE[KE[52;1Hline 4  AbcdefghijklmnopqrstuvwxyzE[52;35HE[KE[53;1Hline 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[53;39HE[KE[54;1Hline 6  AbcdefghijklmnopqrstuvwxyzE[54;35HE[KE[55;1Hline 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[55;39HE[KE[56;1Hline 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfileE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r Xtestfile.gz                " Read and decompress the testfileE[?25l"Xtestfile.gz" E[60;16HE[KE[60;16H[Incomplete last line] 1 line, 111 charactersE[?12lE[?25hE[60CE[?25lE[1;59rE[1;1HE[7ME[1;60rE[54;1Hstart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfileE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h?startstart?,$w! test.out      " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 29 lines, 788 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufNewFile      *.c    read Xtest.cE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of test.c/+1,/^end of test.c/-1w! Xtest.cE[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[60;37HE[KE[60;1H"Xtest.c" E[60;11HE[KE[60;11H[New File] 3 lines, 32 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! foo.c                       " Will load Xtest.cE[?25l"foo.c" [New File]E[60;33HE[KE[60;1H
"Xtest.c" 3 lines, 32 characters
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau FileAppendPre   *.out  '[,']s/new/NEW/E[?25lE[1;1HE[2LE[2;1H/*
 * Here is a new .c fileE[3;28HE[KE[4;1H */E[4;5HE[KE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hau FileAppendPost  *.out  !cat Xtest.c >>test.outE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw>>test.out                    " Append it to the output fileE[?25l"test.out" E[60;12HE[KE[60;12H4 lines, 33 characters appended
:!cat Xtest.c >>test.out
E[?12lE[?25hE[m
E[32mPress ENTER or type command to continueE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau! FileAppendPreE[?25lE[27mE[mE[HE[2JE[2;1H/*
 * Here is a NEW .c file
 */
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[3;2HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h" setup autocommands to decompress before reading and re-compress afterwardsE[?25lE[3;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))E[?25lE[3;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))E[?25lE[3;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))E[?25lE[3;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))E[?25lE[3;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtestfile.gz                " Edit compressed fileE[?25l:!gzip -d 'Xtestfile.gz'E[60;33HE[KE[60;25H
E[?12lE[?25hE[?25lE[m"Xtestfile.gz"E[59;1H"Xtestfile.gz" 11 lines, 357 charactersE[60;1HE[KE[60;1H:!gzip 'Xtestfile'
E[?12lE[?25hE[m
E[32mPress ENTER or type command to continueE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw>>test.out                    " Append it to the output fileE[?25l"test.out" E[60;12HE[KE[60;12H11 lines, 357 characters appended
:!cat Xtest.c >>test.out
E[?12lE[?25hE[m
E[32mPress ENTER or type command to continueE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset shelltemp                  " need temp files hereE[?25lE[27mE[mE[HE[2JE[1;1Hstart 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
E[1mE[34m~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hau FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . ".t")E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FilterReadPre   *.out  exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shell
E[59;96HeE[60;1Hscape(expand("<afile>"))E[?25lE[1;1HE[LE[1;1Hstart of testfileE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hau FilterReadPre   *.out  exe '!rm ' . shellescape(expand("<afile>")) . '.t'E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FilterReadPost  *.out  '[,']s/x/X/gE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! test.out                    " Edit the output fileE[?25l"test.out" E[60;12HE[KE[60;12H50 lines, 1242 charactersE[1;6HstarE[1;11HE[KE[2;1Hstart of testfileE[2;18HE[KE[3;6H2  AbcdefghijklmnopqrstuvwxyzE[3;35HE[KE[4;6H3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[5;6H4  AbcdefghijklmnopqrstuvwxyzE[5;35HE[KE[6;6H5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[7;6H6  AbcdefghijklmnopqrstuvwxyzE[7;35HE[KE[8;6H7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[9;6H8  AbcdefghijklmnopqrstuvwxyzE[9;35HE[KE[10;6H9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfileE[12;16HE[KE[13;1HE[KE[14;1Hstart of test.cE[14;16HE[KE[15;1H/*E[15;3HE[KE[16;1H * Here is a new .c fileE[16;25HE[KE[17;1H */E[17;4HE[KE[18;1Hend of test.cE[18;14HE[KE[19;1Hstart of testfileE[19;18HE[KE[20;1Hline 2  AbcdefghijklmnopqrstuvwxyzE[20;35HE[KE[21;1Hline 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[21;39HE[KE[22;1Hline 4  AbcdefghijklmnopqrstuvwxyzE[22;35HE[KE[23;1Hline 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[23;39HE[KE[24;1Hline 6  AbcdefghijklmnopqrstuvwxyzE[24;35HE[KE[25;1Hline 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[25;39HE[KE[26;1Hline 8  AbcdefghijklmnopqrstuvwxyzE[26;35HE[KE[27;1Hline 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[27;39HE[KE[28;1Hline 10 AbcdefghijklmnopqrstuvwxyzE[28;35HE[KE[29;1Hend of testfileE[29;16HE[KE[30;1HE[KE[31;1H/*E[31;3HE[KE[32;1H * Here is a NEW .c fileE[32;25HE[KE[33;1H */E[33;4HE[KE[34;1H/*E[34;3HE[KE[35;1H * Here is a new .c fileE[35;25HE[KE[36;1H */E[36;4HE[KE[37;1Hstart of testfileE[37;18HE[KE[38;1Hline 2  AbcdefghijklmnopqrstuvwxyzE[38;35HE[KE[39;1Hline 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[39;39HE[KE[40;1Hline 4  AbcdefghijklmnopqrstuvwxyzE[40;35HE[KE[41;1Hline 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[41;39HE[KE[42;1Hline 6  AbcdefghijklmnopqrstuvwxyzE[42;35HE[KE[43;1Hline 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[43;39HE[KE[44;1Hline 8  AbcdefghijklmnopqrstuvwxyzE[44;35HE[KE[45;1Hline 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[45;39HE[KE[46;1Hline 10 AbcdefghijklmnopqrstuvwxyzE[46;35HE[KE[47;1Hend of testfileE[47;16HE[KE[48;1H/*E[48;3HE[KE[49;1H * Here is a new .c fileE[49;25HE[KE[50;1H */E[50;4HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h23,$!catE[?25lE[?12lE[?25hE[?25l:!sed s/e/E/ '/tmp/vVo4PA6/1'.t >'/tmp/vVo4PA6/1'
E[?12lE[?25hE[?25lE[m:!rm '/tmp/vVo4PA6/1'.t
E[?12lE[?25hE[?25lE[m218 substitutions on 15 lines
28 lines filtered
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h23,$s/\r$//                 " remove CR for when sed adds themE[?25lE[1mE[37mE[41mE486: Pattern not found: \r$E[mE[60;30HE[KE[60;1H
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau! FileReadPre    *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))E[?25lE[27mE[mE[HE[2JE[1;1Hstartstart
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
 */
E[1mE[34m~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[23;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hau  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau! FileReadPost   *.gz   '[,']s/l/L/E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtestfile.gz             " Read compressed fileE[?25l:!gzip -d 'Xtestfile.gz'E[60;30HE[KE[60;25H
E[?12lE[?25hE[?25lE[m"Xtestfile.gz"E[59;1H"Xtestfile.gz" 11 lines, 357 charactersE[60;1HE[KE[60;1H11 substitutions on 11 lines
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw                           " write it, after filteringE[?25l"test.out"E[60;30HE[KE[60;12H61 lines, 1599 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau!             " remove all autocommandsE[?25lE[1mE[37mE[41mE216: No such group or event: " remove all autocommandsE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he               " Edit test.out againE[?25l"test.out"E[60;18HE[KE[60;12H61 lines, 1599 charactersE[27mE[mE[HE[2JE[1;1Hstartstart
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
"test.out" 61 lines, 1599 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobin ff&   " use the default fileformat for writingE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 61 lines, 1599 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test12.in" 52 lines, 1199 charactersE[1;1HTests 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
E[1mE[34m~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for 'directory' option.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 40 lines, 965 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[47;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset dir=.,~E[?25lE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/start of testfile/,/end of testfile/w! Xtest1E[?25l"Xtest1" E[60;10HE[KE[60;10H[New] 4L, 70C writtenE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" do an ls of the current dir to find the swap file (should not be there)E[?25lE[48;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("unix")E[?25l
:  E[?12lE[?25h:  !ls .X*.swp >test.out
E[?25l:!ls .X*.swp >test.outE[?1lE>E[?12lE[?25hE[?1049l
ls: cannot access .X*.swp: No such file or directory

shell returned 2

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25helse
E[?25l:  E[?12lE[?25h:  r !ls X*.swp >test.out
E[?25l:  E[?12lE[?25h:endifE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!echo first line >>test.outE[?25lE[28CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtest1E[?25l"Xtest1" 4L, 70CE[27mE[mE[HE[2JE[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H"Xtest1" 4L, 70CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("unix")E[?25l
:  E[?12lE[?25h:" Do an ls of the current dir to find the swap file, remove the leading dot
E[?25l:  E[?12lE[?25h:" to make the result the same for all systems.
E[?25l:  E[?12lE[?25h:  r!ls .X*.swpE[m
E[?25l:  E[?12lE[?25h:  s/\.*X/X/
E[?25l:  E[?12lE[?25h:  .w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 11C appended
:  E[?12lE[?25h:  undo
E[?25l1 line less; before #1  0 seconds ago
:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  !ls X*.swp >>test.out
E[?25l:  E[?12lE[?25h:endifE[27mE[mE[HE[2JE[?25lE[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h!echo under Xtest1.swp >>test.outE[?25lE[34CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xtest2E[?25lE[14CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset dir=./Xtest2,.,~E[?25lE[27mE[mE[HE[2JE[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25he Xtest1E[?25l"Xtest1" 4L, 70CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!ls X*.swp >>test.outE[?25lE[22CE[?1lE>E[?12lE[?25hE[?1049l
ls: cannot access X*.swp: No such file or directory

shell returned 2

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!echo under under >>test.outE[?25lE[29CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!ls Xtest2 >>test.outE[?25lE[22CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!echo under Xtest1.swp >>test.outE[?25lE[34CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xtest.jeE[?25lE[16CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/start of testfile/,/end of testfile/w! Xtest2/Xtest3E[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[60;37HE[KE[60;1H"Xtest2/Xtest3" E[60;17HE[KE[60;17H[New] 4L, 70C writtenE[27mE[mE[HE[2JE[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H"Xtest2/Xtest3" [New] 4L, 70C writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset dir=Xtest.je,~E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtest2/Xtest3E[?25l"Xtest2/Xtest3" 4L, 70CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hswapE[?25lXtest.je/Xtest3.swpE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!ls Xtest2 >>test.outE[?25lE[22CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!echo under Xtest3 >>test.outE[?25lE[30CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!ls Xtest.je >>test.outE[?25lE[24CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!echo under Xtest3.swp >>test.outE[?25lE[34CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test13.in" 58 lines, 1133 charactersE[1;1HTests 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
otestje1E[34m^[E[m
:w
:sp Xtestje2
otestje2E[34m^[E[m
:w
:sp Xtestje3
otestje3E[34m^[E[m
:w
E[34m^W^WE[m
:au WinLeave Xtestje2 bwipe
E[34m^W^WE[m
: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 testfileE[55;9HcontentsE[56;9HcontentsE[57;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for autocommands on :close commandE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[13;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 38 lines, 631 characters writtenE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[14;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of testfile/,/^end of testfile/w! Xtestje1E[?25l"Xtestje1" E[60;13HE[KE[60;12H[New File] 5 lines, 64 characters writtenE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of testfile/,/^end of testfile/w! Xtestje2E[?25l"Xtestje2" E[60;13HE[KE[60;12H[New File] 5 lines, 64 characters writtenE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of testfile/,/^end of testfile/w! Xtestje3E[?25l"Xtestje3" E[60;13HE[KE[60;12H[New File] 5 lines, 64 characters writtenE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtestje1E[?25l"Xtestje1" 5 lines, 64 charactersE[1;1Hstart of testfileE[1;18HE[KE[2;9Hcontents
        contentsE[3;17HE[KE[4;1H        contentsE[4;17HE[KE[5;1Hend of testfileE[5;16HE[KE[6;1HE[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[2;59rE[mE[2;1HE[LE[1;60rE[2;1Htestje1E[60;1HE[KE[2;7HE[?12lE[?25hE[3;8HE[?25lE[60;1H:E[?12lE[?25hwE[?25l"Xtestje1" 6 lines, 72 characters writtenE[3;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xtestje2E[?25l"Xtestje2" E[60;12HE[KE[60;12H5 lines, 64 charactersE[2;1H        contents


end of testfileE[5;16HE[KE[6;1HE[1mE[34m~                                                                                               E[mE[30;1HE[1mE[7mXtestje2                                                                                        E[mE[31;1Htestje1E[31;8HE[KE[32;1H        contentsE[32;17HE[KE[33;1H        contentsE[33;17HE[KE[34;1H        contentsE[34;17HE[KE[35;1Hend of testfileE[35;16HE[KE[59;1HE[7mXtestje1                                                                                        E[1;1HE[?12lE[?25hE[?25lE[2;29rE[mE[2;1HE[LE[1;60rE[2;1Htestje2E[30;10HE[1mE[7m[+]E[mE[60;1HE[KE[2;7HE[?12lE[?25hE[3;8HE[?25lE[60;1H:E[?12lE[?25hwE[?25l"Xtestje2" 6 lines, 72 characters writtenE[30;10HE[1mE[7m    E[3;8HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xtestje3E[?25l"Xtestje3" E[60;12HE[KE[60;12H5 lines, 64 charactersE[27mE[mE[HE[2JE[1;1Hstart of testfileE[2;9HcontentsE[3;9HcontentsE[4;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[1mE[7mXtestje3                                                                                        E[mE[21;1Htestje2E[22;9HcontentsE[23;9HcontentsE[24;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[mE[40;1HE[7mXtestje2                                                                                        E[mE[41;9HcontentsE[42;9HcontentsE[43;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mXtestje1                                                                                        E[1;1HE[?12lE[?25hE[?25lE[2;19rE[mE[2;1HE[LE[1;60rE[2;1Htestje3E[20;10HE[1mE[7m[+]E[2;7HE[?12lE[?25hE[3;8HE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"Xtestje3" 6 lines, 72 characters writtenE[20;10HE[1mE[7m    E[3;8HE[?12lE[?25hE[mE[20;1HE[7mXtestje3E[mE[1mE[7m E[mE[7m                                                                                        E[mE[40;1HE[1mE[7mXtestje2                                                                                        E[22;8HE[23;8HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau WinLeave Xtestje2 bwipeE[?25lE[23;8HE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1Hstart of testfile
testje3E[3;9HcontentsE[4;9HcontentsE[5;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[mE[29;1HE[7mXtestje3                                                                                        E[mE[30;1Htestje1E[31;9HcontentsE[32;9HcontentsE[33;9Hcontents
end of testfile
E[1mE[34m~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[1mE[7mXtestje1                                                                                        E[31;8HE[?12lE[?25hE[32;8HE[?25lE[60;1HE[m:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 6 lines, 72 characters writtenE[32;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau WinLeave Xtestje1 bwipe Xtestje3E[?25lE[32;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[2;7H1E[29;1HE[1mE[34m~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[59;1H~                                                                                               E[4;8HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 72 characters appendedE[4;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtestje1E[?25l"Xtestje1" 6 lines, 72 charactersE[4;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe Xtestje2 Xtestje3 test.outE[?25lE[1mE[37mE[41mE94: No matching buffer for Xtestje2 Xtestje3 test.outE[4;9HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau!E[?25lE[4;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau! BufUnload Xtestje1 bwipeE[?25lE[4;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtestje3E[?25l"Xtestje3" 6 lines, 72 charactersE[2;7H3E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 72 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtestje2E[?25l"Xtestje2" 6 lines, 72 charactersE[2;7H2E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xtestje1E[?25l"Xtestje1" E[60;12HE[KE[60;12H6 lines, 72 charactersE[2;7H1E[30;1HE[1mE[7mXtestje1                                                                                        E[mE[31;1Hstart of testfileE[31;18HE[KE[32;1Htestje2E[32;8HE[KE[33;1H        contentsE[33;17HE[KE[34;1H        contentsE[34;17HE[KE[35;1H        contentsE[35;17HE[KE[36;1Hend of testfileE[36;16HE[KE[59;1HE[7mXtestje2                                                                                        E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25heE[?25lE[1mE[37mE[41mE143: Autocommands unexpectedly deleted new buffer Xtestje1E[mE[2;7H2E[30;8HE[1mE[7m2 E[mE[60;1H"Xtestje2" line 1 of 6 --16%-- col 1E[1mE[37mE[41mtE[mE[60;37HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 72 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau!E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25honlyE[?25lE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xtestje1E[?25l"Xtestje1" 6 lines, 72 charactersE[2;7H1E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe Xtestje2 Xtestje3 test.out test13.inE[?25l4 buffers wiped outE[60;20HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufWipeout Xtestje1 buf Xtestje1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipeE[?25l"Xtestje1" 6 lines, 72 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H6 lines, 72 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test14.in" 86 lines, 1434 charactersE[1;1HTests for "vaBiB", end could be wrong.
Also test ":s/pat/sub/" with different ~s in sub.
Also test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()

STARTTEST
:so small.vim
/Start cursor here
vaBiBD:?Bug?,/Piece/-2w! test.out
/^- Bug
:s/u/~u~/
:s/i/~u~/
:s/o/~~~/
:.w >>test.out
:if has("ebcdic")
: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
:else
: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
:endif
:exe "normal " . tt
:unlet tt
:.w >>test.out
:set vb
/^Piece
2]maAE[34m^[E[m:.w >>test.out
j]maBE[34m^[E[m:.w >>test.out
]maCE[34m^[E[m:.w >>test.out
[maDE[34m^[E[m:.w >>test.out
k2[maEE[34m^[E[m:.w >>test.out
3[maFE[34m^[E[m:.w >>test.out
]MaGE[34m^[E[m:.w >>test.out
j2]MaHE[34m^[E[m:.w >>test.out
]M]MaIE[34m^[E[m:.w >>test.out
2[MaJE[34m^[E[m:.w >>test.out
k[MaKE[34m^[E[m:.w >>test.out
3[MaLE[34m^[E[m:.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):E[55;9H{E[56;17Hcmd;E[57;17H{E[58;25Hcmd;    /* <-- Start cursor here */E[59;25H{E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for "vaBiB", end could be wrong.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 44 lines, 989 characters writtenE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[8;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hStart cursor hereE[?25lE[58;40HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[55;17HE[7m{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                E[m}E[60;1HE[KE[59;17HE[?12lE[?25hE[?25lE[54;1HE[7m                cmd; 
                E[59;17H}E[?12lE[?25hE[?25lE[m
6 fewer linesE[54;1H        }E[54;10HE[KE[55;1HE[KE[56;1HPiece of JavaE[56;14HE[KE[57;1H{E[57;2HE[KE[58;1H        tt m1 {E[58;16HE[KE[59;1H                t1;E[54;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?Bug?,/Piece/-2w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 3 lines, 44 characters writtenE[54;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^- BugE[?25lE[31msearch hit BOTTOM, continuing at TOPE[52;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hs/u/~u~/E[?25lE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/i/~u~/E[?25lE[52;7Huuun "vPPPP" on this text (Webb):E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/o/~~~/E[?25lE[52;20Huuuuuuuuun this text (Webb):E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 48 characters appendedE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("ebcdic")E[?25l
:  E[?12lE[?25h: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HAlso test for ^Vxff and ^Vo123 in Insert mode.
Also test "[m", "]m", "[M" and "]M"
Also test search()E[60;1HE[KE[52;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hexe "normal " . ttE[?25lE[53;59rE[53;1HE[LE[1;60rE[53;1HABC !aE[34m^OE[mgE[34m^GE[m8E[60;1HE[KE[53;12HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hunlet ttE[?25lE[53;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[53;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset vbE[?25lE[53;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^PieceE[?25lE[57;1HE[?12lE[?25hE[59;15HE[?25l{AE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;16HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;17Ht1;E[60;1HE[KE[59;16HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;9H} e1E[59;9Htt m2 {E[?12lE[?25hE[?25l{BE[?12lE[?25hE[?25l
:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;16HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[4ME[1;60rE[56;17Ht2;E[57;9H} e2E[59;9Htt m3 {E[60;1HE[KE[59;15HE[?12lE[?25hE[?25l{CE[?12lE[?25hE[?25l
:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;16HE[?12lE[?25hE[?25l{DCE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[59;16HE[?12lE[?25hE[58;1HE[51;15HE[?25l{EAE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[51;16HE[?12lE[?25hE[50;1HE[?25l{FE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 3 characters appendedE[50;2HE[?12lE[?25hE[53;9HE[?25l}G e1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[53;10HE[?12lE[?25h
E[?25lE[1;59rE[1;1HE[5ME[1;60rE[55;17Hif (x)E[56;17H{E[57;25Ht3;E[58;17H}E[59;9H} e3E[60;1HE[KE[59;9HE[?12lE[?25hE[?25l}H e3E[?12lE[?25hE[?25l
:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;10HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[60;1HE[KE[59;1HE[?12lE[?25hE[?5hE[?5lE[?25l}IE[?12lE[?25hE[?25l
:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 3 characters appendedE[59;2HE[?12lE[?25hE[58;9HE[?25l}JH e3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 8 characters appendedE[58;10HE[?12lE[?25hE[57;16HE[51;9HE[?25l}K e2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[51;10HE[?12lE[?25hE[44;1HE[?25l{LFE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 4 characters appendedE[44;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[44;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^foobarE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HfoobarE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet startline = line('.')E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall search('foobar', 'c')E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), line('.') - startline)E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hcall search('^$', 'c')E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), line('.') - startline)E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall search('^$', 'bc')E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), line('.') - startline)E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25htwoE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1Hone twoE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25hcall search('.', 'c')E[?25lE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), getline('.')[col('.') - 1:])E[?25lE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^search()/,$w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H5 lines, 19 characters appendedE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test15.in" 136 lines, 2246 charactersE[1;1HTests 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
uE[34m^RE[m
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTE[25;9Htest for :leftE[26;11HaE[13CaE[27;13HfaE[10CaE[28;11HdfaE[11CaE[29;17HsdfaE[12CaE[30;11HasdfaE[9CaE[31;17HxasdfaE[10Ca
asxxdfaE[9CaE[34;9Htest for :centerE[35;11HaE[13CaE[36;13HfaE[10Cafd asdfE[37;11HdfaE[11CaE[38;17HsdfaE[12Cafd asdfE[39;11HasdfaE[9CaE[40;17HxasdfaE[10Casdfasdfasdfasdfasdf
asxxdfaE[9CaE[43;9Htest for :rightE[44;9HaE[15CaE[45;9HfaE[14CaE[46;9HdfaE[13CaE[47;9HsdfaE[12CaE[48;9HasdfaE[11CaE[49;9HxasdfaE[10CaE[50;9HasxxdfaE[9CaE[51;9Hasxa;ofaE[16CaE[52;9HasdfaqwerE[15CaE[53;9HaE[15CaxE[54;9HfaE[14CaxE[55;9HdfaE[13CaxE[56;9HsdfaE[12CaxE[57;9HasdfaE[11CaxE[58;9HxasdfaE[10CaxE[59;9HasxxdfaE[9CaxE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for :right on text with embedded TAB.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 17 lines, 401 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[23;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=65E[?25lE[24;1HE[?12lE[?25hE[25;8HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^\s*test for :left/,/^\s*test for :center/ leftE[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[60;37HE[KE[25;1Htest for :leftE[25;15HE[KE[26;1HaE[9C      aE[26;25HE[KE[27;1HfaE[10C    aE[27;25HE[KE[28;1HdfaE[7C      aE[28;25HE[KE[29;1HsdfaE[12CaE[29;18HE[KE[30;1Hasdfa           aE[30;25HE[KE[31;1HxasdfaE[10CaE[31;18HE[KE[34;1Htest for :centeE[34;18HE[KE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^\s*test for :center/,/^\s*test for :right/ centerE[?25lE[34;1H                E[8Ctest for :centerE[35;11H E[13C aE[14CaE[36;13H  E[8Cfa        E[8Cafd asdfE[37;11H   E[11C dfaE[12CaE[38;17H    sdfaE[8C        afd asdfE[39;11H     E[9C asdfaE[10CaE[40;15Hxasdfa  
       E[9C E[7CasxxdfaE[9CaE[43;9H                 test for :rightE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^\s*test for :right/,/^xxx/-1 rightE[?25lE[43;26H               E[10Ctest for :rightE[44;9H E[15C E[29CaE[9CaE[45;9H  E[14C E[28CfaE[9CaE[46;9H   E[13C E[27CdfaE[9CaE[47;9H    E[12C E[26CsdfaE[9CaE[48;9H     E[11C E[25CasdfaE[9CaE[49;9H      E[10C E[24CxasdfaE[9CaE[50;9H       E[9C E[23CasxxdfaE[9CaE[51;9H        E[16C E[14Casxa;ofaE[9CaE[52;9H         E[15C E[13CasdfaqwerE[9CaE[53;9H E[15C  E[20CaE[9CaxE[54;9H  E[14C  E[19CfaE[9CaxE[55;9H   E[13C  E[18CdfaE[9CaxE[56;9H    E[12C  E[17CsdfaE[9CaxE[57;9H     E[11C  E[16CasdfaE[9CaxE[58;9H      E[10C  E[15CxasdfaE[9CaxE[59;9H       E[9C  E[14CasxxdfaE[9CaxE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fo+=tcroql tw=72E[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hxxxxxxxx$E[?25lE[27mE[mE[HE[2JE[1;40Hasxa;ofaE[9CaxxxE[2;39HasdfaqwerE[9CaxxxE[3;47HaE[9CaxxxoE[4;46HfaE[9CaxxxoE[5;45HdfaE[9CaxxxoE[6;44HsdfaE[9CaxxxoE[7;43HasdfaE[9CaxxxoE[8;42HxasdfaE[9CaxxxoE[9;41HasxxdfaE[9CaxxxoE[10;40Hasxa;ofaE[9CaxxxoE[11;39HasdfaqwerE[9CaxxxoE[12;47HaE[9CaxxxoiE[13;46HfaE[9CaxxxoiE[14;45HdfaE[9CaxxxoiE[15;44HsdfaE[9CaxxxoiE[16;43HasdfaE[9CaxxxoiE[17;42HxasdfaE[9CaxxxoiE[18;41HasxxdfaE[9CaxxxoiE[19;40Hasxa;ofaE[9CaxxxoiE[20;39HasdfaqwerE[9CaxxxoiE[21;47HaE[9CaxxxoikE[22;46HfaE[9CaxxxoikE[23;45HdfaE[9CaxxxoikE[24;44HsdfaE[9CaxxxoikE[25;43HasdfaE[9CaxxxoikE[26;42HxasdfaE[9CaxxxoikE[27;41HasxxdfaE[9CaxxxoikE[28;40Hasxa;ofaE[9CaxxxoikE[29;39HasdfaqwerE[9CaxxxoikE[30;47HaE[9CaxxxoikeE[31;46HfaE[9CaxxxoikeE[32;45HdfaE[9CaxxxoikeE[33;44HsdfaE[9CaxxxoikeE[34;43HasdfaE[9CaxxxoikeE[35;42HxasdfaE[9CaxxxoikeE[36;41HasxxdfaE[9CaxxxoikeE[37;40Hasxa;ofaE[9CaxxxoikeE[38;39HasdfaqwerE[9CaxxxoikeE[39;47HaE[9CaxxxoikeyE[40;46HfaE[9CaxxxoikeyE[41;45HdfaE[9CaxxxoikeyE[42;44HsdfaE[9CaxxxoikeyE[43;43HasdfaE[9CaxxxoikeyE[44;42HxasdfaE[9CaxxxoikeyE[45;41HasxxdfaE[9CaxxxoikeyE[46;40Hasxa;ofaE[9CaxxxoikeyE[47;39HasdfaqwerE[9Caxxxoikey

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 ccE[55;50HE[?12lE[?25hE[?25lE[49;59rE[59;1H
E[1;60rE[49;6H xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xxE[50;62Hxx xxxxxxx.
xxxx xxxx.E[51;11HE[KE[53;65HxxxxxxE[54;9Hx: xxxx xxxxxxx, xx xxxxE[7C xxxxxxxE[54;51HE[KE[59;1HE[1mE[34m~                                                                                               E[54;1HE[?12lE[?25hE[53;1H
E[?25lE[60;1HE[m:E[?12lE[?25hset nocp viminfo+=nviminfoE[?25lE[54;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" undo/redo here to make the next undo only work on the following changesE[?25lE[54;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #1  0 seconds agoE[60;38HE[KE[27mE[mE[HE[2JE[1;1HTests 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
uE[34m^RE[m
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTESTE[25;9Htest for :leftE[26;11HaE[13CaE[27;13HfaE[10CaE[28;11HdfaE[11CaE[29;17HsdfaE[12CaE[30;11HasdfaE[9CaE[31;17HxasdfaE[10Ca
asxxdfaE[9CaE[34;9Htest for :centerE[35;11HaE[13CaE[36;13HfaE[10Cafd asdfE[37;11HdfaE[11CaE[38;17HsdfaE[12Cafd asdfE[39;11HasdfaE[9CaE[40;17HxasdfaE[10Casdfasdfasdfasdfasdf
asxxdfaE[9CaE[43;9Htest for :rightE[44;9HaE[15CaE[45;9HfaE[14CaE[46;9HdfaE[13CaE[47;9HsdfaE[12CaE[48;9HasdfaE[11CaE[49;9HxasdfaE[10CaE[50;9HasxxdfaE[9CaE[51;9Hasxa;ofaE[16CaE[52;9HasdfaqwerE[15CaE[53;9HaE[15CaxE[54;9HfaE[14CaxE[55;9HdfaE[13CaxE[56;9HsdfaE[12CaxE[57;9HasdfaE[11CaxE[58;9HxasdfaE[10CaxE[59;9HasxxdfaE[9CaxE[25;8HE[?12lE[?25hE[?25lE[60;1H1 line less; after #1  0 seconds agoE[25;1Htest for :leftE[25;15HE[KE[26;1HaE[9C      aE[26;25HE[KE[27;1HfaE[10C    aE[27;25HE[KE[28;1HdfaE[7C      aE[28;25HE[KE[29;1HsdfaE[12CaE[29;18HE[KE[30;1Hasdfa           aE[30;25HE[KE[31;1HxasdfaE[10CaE[31;18HE[KE[34;9H                test for :centerE[35;11H E[13C aE[14CaE[36;13H  E[8Cfa        E[8Cafd asdfE[37;11H   E[11C dfaE[12CaE[38;17H    sdfaE[8C        afd asdfE[39;11H     E[9C asdfaE[10CaE[40;15Hxasdfa  
       E[9C E[7CasxxdfaE[9CaE[43;9H               E[27Ctest for :rightE[44;9H E[15C E[29CaE[9CaE[45;9H  E[14C E[28CfaE[9CaE[46;9H   E[13C E[27CdfaE[9CaE[47;9H    E[12C E[26CsdfaE[9CaE[48;9H     E[11C E[25CasdfaE[9CaE[49;9H      E[10C E[24CxasdfaE[9CaE[50;9H       E[9C E[23CasxxdfaE[9CaE[51;9H        E[16C E[14Casxa;ofaE[9CaE[52;9H         E[15C E[13CasdfaqwerE[9CaE[53;9H E[15C  E[20CaE[9CaxE[54;9H  E[14C  E[19CfaE[9CaxE[55;9H   E[13C  E[18CdfaE[9CaxE[56;9H    E[12C  E[17CsdfaE[9CaxE[57;9H     E[11C  E[16CasdfaE[9CaxE[58;9H      E[10C  E[15CxasdfaE[9CaxE[59;9H       E[9C  E[14CasxxdfaE[9CaxE[25;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqqE[?25lE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^aaE[?25lE[27mE[mE[HE[2JE[1;41HasxxdfaE[9CaxxxE[2;40Hasxa;ofaE[9CaxxxE[3;39HasdfaqwerE[9CaxxxE[4;47HaE[9CaxxxoE[5;46HfaE[9CaxxxoE[6;45HdfaE[9CaxxxoE[7;44HsdfaE[9CaxxxoE[8;43HasdfaE[9CaxxxoE[9;42HxasdfaE[9CaxxxoE[10;41HasxxdfaE[9CaxxxoE[11;40Hasxa;ofaE[9CaxxxoE[12;39HasdfaqwerE[9CaxxxoE[13;47HaE[9CaxxxoiE[14;46HfaE[9CaxxxoiE[15;45HdfaE[9CaxxxoiE[16;44HsdfaE[9CaxxxoiE[17;43HasdfaE[9CaxxxoiE[18;42HxasdfaE[9CaxxxoiE[19;41HasxxdfaE[9CaxxxoiE[20;40Hasxa;ofaE[9CaxxxoiE[21;39HasdfaqwerE[9CaxxxoiE[22;47HaE[9CaxxxoikE[23;46HfaE[9CaxxxoikE[24;45HdfaE[9CaxxxoikE[25;44HsdfaE[9CaxxxoikE[26;43HasdfaE[9CaxxxoikE[27;42HxasdfaE[9CaxxxoikE[28;41HasxxdfaE[9CaxxxoikE[29;40Hasxa;ofaE[9CaxxxoikE[30;39HasdfaqwerE[9CaxxxoikE[31;47HaE[9CaxxxoikeE[32;46HfaE[9CaxxxoikeE[33;45HdfaE[9CaxxxoikeE[34;44HsdfaE[9CaxxxoikeE[35;43HasdfaE[9CaxxxoikeE[36;42HxasdfaE[9CaxxxoikeE[37;41HasxxdfaE[9CaxxxoikeE[38;40Hasxa;ofaE[9CaxxxoikeE[39;39HasdfaqwerE[9CaxxxoikeE[40;47HaE[9CaxxxoikeyE[41;46HfaE[9CaxxxoikeyE[42;45HdfaE[9CaxxxoikeyE[43;44HsdfaE[9CaxxxoikeyE[44;43HasdfaE[9CaxxxoikeyE[45;42HxasdfaE[9CaxxxoikeyE[46;41HasxxdfaE[9CaxxxoikeyE[47;40Hasxa;ofaE[9CaxxxoikeyE[48;39HasdfaqwerE[9Caxxxoikey

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 ccE[57;1HE[?12lE[?25hE[?25l


:.,.+2s/^/x/3 substitutions on 3 linesE[57;1Hxaa aa aa aa
xbb bb bb bb
xcc cc cc ccE[?12lE[?25hE[58;1HE[57;1HE[?25lE[60;1HE[KE[60;1H:set tw=3E[57;1HE[?12lE[?25hE[?25l


3 more linesE[1;59rE[59;1H
E[1;60rE[56;5HE[KE[57;1HaaE[57;3HE[KE[58;1HaaE[58;3HE[KE[59;1HaaE[60;1HE[KE[60;1H3 more linesE[59;1HE[?12lE[?25hE[?25l
3 fewer lines; before #2  0 seconds agoE[56;1Haa aa aa aa
bb bb bb bb
cc cc cc cc
E[1mE[34m~                                                                                               E[56;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h?test for :left?,$w! test.outE[?25l"test.out"E[60;12HE[KE[60;12H[New] 111L, 2304C writtenE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test17.in" 141 lines, 2634 charactersE[1;1HTests 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
ENDTESTE[41;9H${CDIR}/test17a.inE[42;9H$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"E[34m^[E[m
:w
:e Xdir1/dir2/bar.a
i#include      "baz.a"E[34m^[E[m
:w
:e Xdir1/dir2/baz.a
i#includeE[12C"foo.a"E[34m^[E[m
:wE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 33 lines, 771 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("ebcdic")E[?25l
:  E[?12lE[?25h: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.E[60;1HE[KE[40;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfunction! DeleteDirectory(dir)E[?25l
:  E[?12lE[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
E[?25l:    E[?12lE[?25h:  exec "silent !rmdir /Q /S " . a:dir
E[?25l:    E[?12lE[?25h: else
E[?25l:    E[?12lE[?25h:  exec "silent !rm -rf " . a:dir
E[?25l:    E[?12lE[?25h: endif
E[?25l:  E[?12lE[?25h:endfunE[1;1HE[6LE[?25lE[1;1HTests for:
- "gf" on ${VAR},
- ":checkpath!" with various 'include' settings.

STARTTEST
:so small.vimE[60;1HE[KE[40;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hif has("unix")E[?25l
:  E[?12lE[?25h:let $CDIR = "."
E[?25l:  E[?12lE[?25h/CDIR
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:if has("amiga")
E[?25l:    E[?12lE[?25h:let $TDIR = "/testdir"
E[?25l:    E[?12lE[?25h:else
E[?25l:    E[?12lE[?25h:let $TDIR = "."
E[?25l:    E[?12lE[?25h:endif
E[?25l:  E[?12lE[?25h/TDIR
E[?25l:  E[?12lE[?25h:endifE[1;1HE[10LE[?25lE[1;1HTests 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,/,.,-,_,+,,,$,:,~,{,}E[60;1HE[KE[41;9HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" Dummy writing for making that sure gf doesn't fail even if the currentE[?25lE[41;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" file is modified. It can be occurred when executing the following commandE[?25lE[41;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" directly on Windows without fixing the 'fileformat':E[?25lE[41;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"  > nmake -f Make_dos.mak test17.outE[?25lE[41;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 141 lines, 2634 characters writtenE[41;9HE[?12lE[?25hE[?25lE[60;2H/sources/vim74/src/testdir/./test17a.in" E[60;43HE[KE[60;43H3 lines, 88 charactersE[1;2Hhis file is just to test "gf" in test 17.
The contents is not important.
Just testing!E[3;14HE[KE[4;1HE[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset ff=unixE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H3 lines, 88 characters writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbrewindE[?25l"test17.in" 141 lines, 2634 charactersE[1;1H:function! DeleteDirectory(dir)E[1;32HE[KE[2;1H: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
:  exec "silent !rmdir /Q /S " . a:dir
: elseE[4;7HE[KE[5;1H:  exec "silent !rm -rf " . a:dirE[5;34HE[KE[6;1H: endifE[6;8HE[KE[7;1H:endfunE[7;8HE[KE[8;1H:if has("unix")E[8;16HE[KE[9;1H:let $CDIR = "."E[9;17HE[KE[10;1H/CDIRE[10;6HE[KE[11;1H:elseE[11;6HE[KE[12;1H:if has("amiga")E[12;17HE[KE[13;1H:let $TDIR = "/testdir"E[13;24HE[KE[14;1H:elseE[14;6HE[KE[15;1H:let $TDIR = "."E[15;17HE[KE[16;1H:endifE[16;7HE[KE[17;1H/TDIRE[17;6HE[KE[18;1H:endifE[18;7HE[KE[19;1H:" Dummy writing for making that sure gf doesn't fail even if the currentE[19;74HE[KE[20;1H:" file is modified. It can be occurred when executing the following commandE[20;77HE[KE[21;1H:" directly on Windows without fixing the 'fileformat':E[21;56HE[KE[22;1H:"  > nmake -f Make_dos.mak test17.outE[22;39HE[KE[23;1H:w! test.outE[23;13HE[KE[24;1HgfE[24;3HE[KE[25;1H:set ff=unixE[25;13HE[KE[26;1H:w! test.outE[26;13HE[KE[27;1H:brewindE[27;9HE[KE[28;1HENDTESTE[28;8HE[KE[29;1HE[KE[30;1H        ${CDIR}/test17a.inE[30;27HE[KE[31;1H        $TDIR/test17a.inE[31;25HE[KE[32;1HE[KE[33;1HSTARTTESTE[33;10HE[KE[34;1H:" check for 'include' without \zs or \zeE[34;42HE[KE[35;1H:lang CE[35;8HE[KE[36;1H:call delete("./Xbase.a")E[36;26HE[KE[37;1H:call DeleteDirectory("Xdir1")E[37;31HE[KE[38;1H:!mkdir Xdir1E[38;14HE[KE[39;1H:!mkdir "Xdir1/dir2"E[39;21HE[KE[40;1H:e! Xdir1/dir2/foo.aE[40;21HE[KE[41;1Hi#include   "bar.a"E[34m^[E[mE[41;22HE[KE[42;1H:wE[42;3HE[KE[43;1H:e Xdir1/dir2/bar.aE[43;20HE[KE[44;1Hi#include      "baz.a"E[34m^[E[mE[44;25HE[KE[45;1H:wE[45;3HE[KE[46;1H:e Xdir1/dir2/baz.aE[46;20HE[KE[47;1Hi#include            "foo.a"E[34m^[E[mE[47;31HE[KE[48;1H:wE[48;3HE[KE[49;1H:e Xbase.aE[49;11HE[KE[50;1H:set path=Xdir1/dir2E[50;21HE[KE[51;1Hi#include    <foo.a>E[34m^[E[mE[51;23HE[KE[52;1H:wE[52;3HE[KE[53;1H:redir! >>test.outE[53;19HE[KE[54;1H:checkpath!E[54;12HE[KE[55;1H:redir ENDE[55;11HE[KE[56;1H:brewindE[56;9HE[KE[57;1HENDTESTE[57;8HE[KE[58;1HE[KE[59;1HSTARTTESTE[59;10HE[KE[30;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[33;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H23 lines, 395 characters writtenE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[34;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[57;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" check for 'include' without \zs or \zeE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlang CE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall delete("./Xbase.a")E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall DeleteDirectory("Xdir1")E[?25lE[?1lE>E[?12lE[?25hE[?1049lE[?1049hE[?1hE=E[58;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir1E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir "Xdir1/dir2"E[?25lE[20CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xdir1/dir2/foo.aE[?25l"Xdir1/dir2/foo.a" [New File]E[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[m#include   "bar.a"E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters writtenE[1;18HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/bar.aE[?25l"Xdir1/dir2/bar.a" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l#include      "baz.a"E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters writtenE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/baz.aE[?25l"Xdir1/dir2/baz.a" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l#includeE[12C"foo.a"E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters writtenE[1;27HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xbase.aE[?25l"Xbase.a" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset path=Xdir1/dir2E[?25lE[1;1HE[?12lE[?25hE[?25l#include    <foo.a>E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xbase.a" [New File] 1 line, 20 characters writtenE[1;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir! >>test.outE[?25lE[1;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcheckpath!E[?25lE[60;1HE[KE[60;1HE[35m--- Included files in path ---E[m
E[34mXdir1/dir2/foo.aE[m
Xdir1/dir2/foo.a -->
  E[34mXdir1/dir2/bar.aE[m
  Xdir1/dir2/bar.a -->
    E[34mXdir1/dir2/baz.aE[m
    Xdir1/dir2/baz.a -->
      E[34m"foo.a"E[m  (Already listed)
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[8LE[1;1H#include    <foo.a>
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[mE[60;1HE[KE[1;19HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hbrewindE[?25l"test17.in" 141 lines, 2634 charactersE[1;1HE[KE[2;1H        ${CDIR}/test17a.inE[2;27HE[KE[3;1H        $TDIR/test17a.inE[3;25HE[KE[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:" check for 'include' without \zs or \zeE[6;42HE[KE[7;1H:lang CE[7;8HE[KE[8;1H:call delete("./Xbase.a")E[8;26HE[KE[9;1H:call DeleteDirectory("Xdir1")E[9;31HE[KE[10;1H:!mkdir Xdir1E[10;14HE[KE[11;1H:!mkdir "Xdir1/dir2"E[11;21HE[KE[12;1H:e! Xdir1/dir2/foo.aE[12;21HE[KE[13;1Hi#include   "bar.a"E[34m^[E[mE[13;22HE[KE[14;1H:wE[14;3HE[KE[15;1H:e Xdir1/dir2/bar.aE[15;20HE[KE[16;1Hi#include      "baz.a"E[34m^[E[mE[16;25HE[KE[17;1H:wE[17;3HE[KE[18;1H:e Xdir1/dir2/baz.aE[18;20HE[KE[19;1Hi#include            "foo.a"E[34m^[E[mE[19;31HE[KE[20;1H:wE[20;3HE[KE[21;1H:e Xbase.aE[21;11HE[KE[22;1H:set path=Xdir1/dir2E[22;21HE[KE[23;1Hi#include    <foo.a>E[34m^[E[mE[23;23HE[KE[24;1H:wE[24;3HE[KE[25;1H:redir! >>test.outE[25;19HE[KE[26;1H:checkpath!E[26;12HE[KE[27;1H:redir ENDE[27;11HE[KE[28;1H:brewindE[28;9HE[KE[29;1HENDTESTE[29;8HE[KE[30;1HE[KE[31;1HSTARTTESTE[31;10HE[KE[32;1H:" check for 'include' with \zs and \zeE[32;40HE[KE[33;1H:call delete("./Xbase.b")E[33;26HE[KE[34;1H:call DeleteDirectory("Xdir1")E[34;31HE[KE[35;1H:!mkdir Xdir1E[35;14HE[KE[36;1H:!mkdir "Xdir1/dir2"E[36;21HE[KE[37;1H:let &include='^\s*%inc\s*/\zs[^/]\+\ze'E[37;41HE[KE[38;1H:function! DotsToSlashes()E[38;27HE[KE[39;1H:  return substitute(v:fname, '\.', '/', 'g') . '.b'E[39;53HE[KE[40;1H:endfunctionE[40;13HE[KE[41;1H:let &includeexpr='DotsToSlashes()'E[41;36HE[KE[42;1H:e! Xdir1/dir2/foo.bE[42;21HE[KE[43;1Hi%inc   /bar/E[34m^[E[mE[43;16HE[KE[44;1H:wE[44;3HE[KE[45;1H:e Xdir1/dir2/bar.bE[45;20HE[KE[46;1Hi%inc      /baz/E[34m^[E[mE[46;19HE[KE[47;1H:wE[47;3HE[KE[48;1H:e Xdir1/dir2/baz.bE[48;20HE[KE[49;1Hi%inc            /foo/E[34m^[E[mE[49;25HE[KE[50;1H:wE[50;3HE[KE[51;1H:e Xbase.bE[51;11HE[KE[52;1H:set path=Xdir1/dir2E[52;21HE[KE[53;1Hi%inc    /foo/E[34m^[E[mE[53;17HE[KE[54;1H:wE[54;3HE[KE[55;1H:redir! >>test.outE[55;19HE[KE[56;1H:checkpath!E[56;12HE[KE[57;1H:redir ENDE[57;11HE[KE[58;1H:brewindE[58;9HE[KE[59;1HENDTESTE[59;8HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[31;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H27 lines, 531 characters writtenE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[32;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" check for 'include' with \zs and \zeE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall delete("./Xbase.b")E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall DeleteDirectory("Xdir1")E[?25lE[?1lE>E[?12lE[?25hE[?1049lE[?1049hE[?1hE=E[59;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir1E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir "Xdir1/dir2"E[?25lE[20CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet &include='^\s*%inc\s*/\zs[^/]\+\ze'E[?25lE[27mE[mE[HE[2JE[1;9H${CDIR}/test17a.inE[2;9H$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"E[34m^[E[m
:w
:e Xdir1/dir2/bar.a
i#include      "baz.a"E[34m^[E[m
:w
:e Xdir1/dir2/baz.a
i#includeE[12C"foo.a"E[34m^[E[m
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>E[34m^[E[m
: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/E[34m^[E[m
:w
:e Xdir1/dir2/bar.b
i%inc      /baz/E[34m^[E[m
:w
:e Xdir1/dir2/baz.b
i%incE[12C/foo/E[34m^[E[m
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/E[34m^[E[m
:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
ENDTEST
E[?12lE[?25hE[?25l
:E[?12lE[?25hfunction! DotsToSlashes()E[?25l
:  E[?12lE[?25h:  return substitute(v:fname, '\.', '/', 'g') . '.b'
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[2LE[?25lE[1;9H${CDIR}/test17a.inE[2;9H$TDIR/test17a.inE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet &includeexpr='DotsToSlashes()'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xdir1/dir2/foo.bE[?25l"Xdir1/dir2/foo.b" [New File]E[1;9HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[m%inc   /bar/E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters writtenE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/bar.bE[?25l"Xdir1/dir2/bar.b" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l%inc      /baz/E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters writtenE[1;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/baz.bE[?25l"Xdir1/dir2/baz.b" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l%incE[12C/foo/E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters writtenE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xbase.bE[?25l"Xbase.b" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset path=Xdir1/dir2E[?25lE[1;1HE[?12lE[?25hE[?25l%inc    /foo/E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xbase.b" [New File] 1 line, 14 characters writtenE[1;13HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir! >>test.outE[?25lE[1;13HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcheckpath!E[?25lE[60;1HE[KE[60;1HE[35m--- Included files in path ---E[m
E[34mXdir1/dir2/foo.bE[m
Xdir1/dir2/foo.b -->
  E[34mXdir1/dir2/bar.bE[m
  Xdir1/dir2/bar.b -->
    E[34mXdir1/dir2/baz.bE[m
    Xdir1/dir2/baz.b -->
      E[34mfooE[m  (Already listed)
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[8LE[1;1H%inc    /foo/
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[mE[60;1HE[KE[1;13HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hbrewindE[?25l"test17.in" 141 lines, 2634 charactersE[1;1HSTARTTESTE[1;10HE[KE[2;1H:" check for 'include' with \zs and \zeE[2;40HE[KE[3;1H:call delete("./Xbase.b")E[3;26HE[KE[4;1H:call DeleteDirectory("Xdir1")E[4;31HE[KE[5;1H:!mkdir Xdir1E[5;14HE[KE[6;1H:!mkdir "Xdir1/dir2"E[6;21HE[KE[7;1H:let &include='^\s*%inc\s*/\zs[^/]\+\ze'E[7;41HE[KE[8;1H:function! DotsToSlashes()E[8;27HE[KE[9;1H:  return substitute(v:fname, '\.', '/', 'g') . '.b'E[9;53HE[KE[10;1H:endfunctionE[10;13HE[KE[11;1H:let &includeexpr='DotsToSlashes()'E[11;36HE[KE[12;1H:e! Xdir1/dir2/foo.bE[12;21HE[KE[13;1Hi%inc   /bar/E[34m^[E[mE[13;16HE[KE[14;1H:wE[14;3HE[KE[15;1H:e Xdir1/dir2/bar.bE[15;20HE[KE[16;1Hi%inc      /baz/E[34m^[E[mE[16;19HE[KE[17;1H:wE[17;3HE[KE[18;1H:e Xdir1/dir2/baz.bE[18;20HE[KE[19;1Hi%inc            /foo/E[34m^[E[mE[19;25HE[KE[20;1H:wE[20;3HE[KE[21;1H:e Xbase.bE[21;11HE[KE[22;1H:set path=Xdir1/dir2E[22;21HE[KE[23;1Hi%inc    /foo/E[34m^[E[mE[23;17HE[KE[24;1H:wE[24;3HE[KE[25;1H:redir! >>test.outE[25;19HE[KE[26;1H:checkpath!E[26;12HE[KE[27;1H:redir ENDE[27;11HE[KE[28;1H:brewindE[28;9HE[KE[29;1HENDTESTE[29;8HE[KE[30;1HE[KE[31;1HSTARTTESTE[31;10HE[KE[32;1H:" check for 'include' with \zs and no \zeE[32;43HE[KE[33;1H:call delete("./Xbase.c")E[33;26HE[KE[34;1H:call DeleteDirectory("Xdir1")E[34;31HE[KE[35;1H:!mkdir Xdir1E[35;14HE[KE[36;1H:!mkdir "Xdir1/dir2"E[36;21HE[KE[37;1H:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'E[37;73HE[KE[38;1H:function! StripNewlineChar()E[38;30HE[KE[39;1H:  if v:fname =~ '\n$'E[39;23HE[KE[40;1H:    return v:fname[:-2]E[40;25HE[KE[41;1H:  endifE[41;9HE[KE[42;1H:  return v:fnameE[42;18HE[KE[43;1H:endfunctionE[43;13HE[KE[44;1H:let &includeexpr='StripNewlineChar()'E[44;39HE[KE[45;1H:e! Xdir1/dir2/foo.cE[45;21HE[KE[46;1Hi%inc   bar.cE[34m^[E[mE[46;16HE[KE[47;1H:wE[47;3HE[KE[48;1H:e Xdir1/dir2/bar.cE[48;20HE[KE[49;1Hi%inc      baz.cE[34m^[E[mE[49;19HE[KE[50;1H:wE[50;3HE[KE[51;1H:e Xdir1/dir2/baz.cE[51;20HE[KE[52;1Hi%inc            foo.cE[34m^[E[mE[52;25HE[KE[53;1H:wE[53;3HE[KE[54;1H:e Xdir1/dir2/FALSE.cE[54;22HE[KE[55;1Hi%inc            foo.cE[34m^[E[mE[55;25HE[KE[56;1H:wE[56;3HE[KE[57;1H:e Xbase.cE[57;11HE[KE[58;1H:set path=Xdir1/dir2E[58;21HE[KE[59;1Hi%inc    FALSE.c foo.cE[34m^[E[mE[59;25HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[31;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H39 lines, 743 characters writtenE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[32;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[12ME[1;60rE[48;1H:w
:redir! >>test.out
:checkpath!
:redir END
:brewind
:" change "\" to "/" for Windows and fix 'fileformat'
:e test.out
:%s#\\#/#g
:set ff&
:w
:q
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" check for 'include' with \zs and no \zeE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall delete("./Xbase.c")E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall DeleteDirectory("Xdir1")E[?25lE[?1lE>E[?12lE[?25hE[?1049lE[?1049hE[?1hE=E[59;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir1E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir "Xdir1/dir2"E[?25lE[20CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'E[?25lE[27mE[mE[HE[2JE[1;1H:w
:e Xdir1/dir2/bar.b
i%inc      /baz/E[34m^[E[m
:w
:e Xdir1/dir2/baz.b
i%incE[12C/foo/E[34m^[E[m
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/E[34m^[E[m
: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.cE[34m^[E[m
:w
:e Xdir1/dir2/bar.c
i%inc      baz.cE[34m^[E[m
:w
:e Xdir1/dir2/baz.c
i%incE[12Cfoo.cE[34m^[E[m
:w
:e Xdir1/dir2/FALSE.c
i%incE[12Cfoo.cE[34m^[E[m
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.cE[34m^[E[m
: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
E[?12lE[?25hE[?25l
:E[?12lE[?25hfunction! StripNewlineChar()E[?25l
:  E[?12lE[?25h:  if v:fname =~ '\n$'
E[?25l:    E[?12lE[?25h:    return v:fname[:-2]
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:  return v:fname
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[5LE[?25lE[1;1H:w
:e Xdir1/dir2/bar.b
i%inc      /baz/E[34m^[E[m
:w
:e Xdir1/dir2/baz.bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet &includeexpr='StripNewlineChar()'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xdir1/dir2/foo.cE[?25l"Xdir1/dir2/foo.c" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[m%inc   bar.cE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters writtenE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/bar.cE[?25l"Xdir1/dir2/bar.c" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l%inc      baz.cE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters writtenE[1;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/baz.cE[?25l"Xdir1/dir2/baz.c" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l%incE[12Cfoo.cE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters writtenE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xdir1/dir2/FALSE.cE[?25l"Xdir1/dir2/FALSE.c" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25l%incE[12Cfoo.cE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters writtenE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xbase.cE[?25l"Xbase.c" [New File]E[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset path=Xdir1/dir2E[?25lE[1;1HE[?12lE[?25hE[?25l%inc    FALSE.c foo.cE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xbase.c" [New File] 1 line, 22 characters writtenE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir! >>test.outE[?25lE[1;21HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcheckpath!E[?25lE[60;1HE[KE[60;1HE[35m--- Included files in path ---E[m
E[34mXdir1/dir2/foo.cE[m
Xdir1/dir2/foo.c -->
  E[34mXdir1/dir2/bar.cE[m
  Xdir1/dir2/bar.c -->
    E[34mXdir1/dir2/baz.cE[m
    Xdir1/dir2/baz.c -->
      E[34mfoo.cE[m  (Already listed)
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[8LE[1;1H%inc    FALSE.c foo.c
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[mE[60;1HE[KE[1;21HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hbrewindE[?25l"test17.in" 141 lines, 2634 charactersE[1;1H:wE[1;3HE[KE[2;1H:e Xdir1/dir2/bar.bE[2;20HE[KE[3;1Hi%inc      /baz/E[34m^[E[mE[3;19HE[KE[4;1H:wE[4;3HE[KE[5;1H:e Xdir1/dir2/baz.bE[5;20HE[KE[6;1Hi%inc            /foo/E[34m^[E[mE[6;25HE[KE[7;1H:wE[7;3HE[KE[8;1H:e Xbase.bE[8;11HE[KE[9;1H:set path=Xdir1/dir2E[9;21HE[KE[10;1Hi%inc    /foo/E[34m^[E[mE[10;17HE[KE[11;1H:wE[11;3HE[KE[12;1H:redir! >>test.outE[12;19HE[KE[13;1H:checkpath!E[13;12HE[KE[14;1H:redir ENDE[14;11HE[KE[15;1H:brewindE[15;9HE[KE[16;1HENDTESTE[16;8HE[KE[17;1HE[KE[18;1HSTARTTESTE[18;10HE[KE[19;1H:" check for 'include' with \zs and no \zeE[19;43HE[KE[20;1H:call delete("./Xbase.c")E[20;26HE[KE[21;1H:call DeleteDirectory("Xdir1")E[21;31HE[KE[22;1H:!mkdir Xdir1E[22;14HE[KE[23;1H:!mkdir "Xdir1/dir2"E[23;21HE[KE[24;1H:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'E[24;73HE[KE[25;1H:function! StripNewlineChar()E[25;30HE[KE[26;1H:  if v:fname =~ '\n$'E[26;23HE[KE[27;1H:    return v:fname[:-2]E[27;25HE[KE[28;1H:  endifE[28;9HE[KE[29;1H:  return v:fnameE[29;18HE[KE[30;1H:endfunctionE[30;13HE[KE[31;1H:let &includeexpr='StripNewlineChar()'E[31;39HE[KE[32;1H:e! Xdir1/dir2/foo.cE[32;21HE[KE[33;1Hi%inc   bar.cE[34m^[E[mE[33;16HE[KE[34;1H:wE[34;3HE[KE[35;1H:e Xdir1/dir2/bar.cE[35;20HE[KE[36;1Hi%inc      baz.cE[34m^[E[mE[36;19HE[KE[37;1H:wE[37;3HE[KE[38;1H:e Xdir1/dir2/baz.cE[38;20HE[KE[39;1Hi%inc            foo.cE[34m^[E[mE[39;25HE[KE[40;1H:wE[40;3HE[KE[41;1H:e Xdir1/dir2/FALSE.cE[41;22HE[KE[42;1Hi%inc            foo.cE[34m^[E[mE[42;25HE[KE[43;1H:wE[43;3HE[KE[44;1H:e Xbase.cE[44;11HE[KE[45;1H:set path=Xdir1/dir2E[45;21HE[KE[46;1Hi%inc    FALSE.c foo.cE[34m^[E[mE[46;25HE[KE[47;1H:wE[47;3HE[KE[48;1H:redir! >>test.outE[48;19HE[KE[49;1H:checkpath!E[49;12HE[KE[50;1H:redir ENDE[50;11HE[KE[51;1H:brewindE[51;9HE[KE[52;1H:" change "\" to "/" for Windows and fix 'fileformat'E[52;54HE[KE[53;1H:e test.outE[53;12HE[KE[54;1H:%s#\\#/#gE[54;11HE[KE[55;1H:set ff&E[55;9HE[KE[56;1H:wE[56;3HE[KE[57;1H:qE[57;3HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" change "\" to "/" for Windows and fix 'fileformat'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he test.outE[?25l"test.out" 33 lines, 655 charactersE[1;1HThis file is just to test "gf" in test 17.
The contents is not important.
Just testing!E[3;14HE[KE[4;1HE[KE[5;1HE[KE[6;1H--- Included files in path ---
Xdir1/dir2/foo.a
Xdir1/dir2/foo.a -->
  Xdir1/dir2/bar.aE[9;19HE[KE[10;1H  Xdir1/dir2/bar.a -->
    Xdir1/dir2/baz.a
    Xdir1/dir2/baz.a -->
      "foo.a"  (Already listed)E[14;1HE[KE[15;1HE[KE[16;1H--- Included files in path ---
Xdir1/dir2/foo.b
Xdir1/dir2/foo.b -->
  Xdir1/dir2/bar.bE[19;19HE[KE[20;1H  Xdir1/dir2/bar.b -->E[20;23HE[KE[21;1H    Xdir1/dir2/baz.bE[21;21HE[KE[22;1H    Xdir1/dir2/baz.b -->
      foo  (Already listed)E[24;1HE[KE[25;1HE[KE[26;1H--- Included files in path ---
Xdir1/dir2/foo.cE[27;17HE[KE[28;1HXdir1/dir2/foo.c -->
  Xdir1/dir2/bar.c
  Xdir1/dir2/bar.c -->
    Xdir1/dir2/baz.cE[31;21HE[KE[32;1H   E[12Cbaz.c -->
      foo.c  (Already listed)
E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h%s#\\#/#gE[?25lE[1mE[37mE[41mE486: Pattern not found: \\E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset ff&E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 33 lines, 655 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqE[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test18.in" 16 lines, 213 charactersE[1;1HTests for not doing smart indenting when it isn't set.

STARTTEST
:so small.vim
:set nocin nosi ai
/some
2cc#testE[34m^[E[m
:?start?,$w! test.out
:qa!
ENDTEST

start textE[13;17Hsome test textE[14;17Htest text
test textE[16;17Htest text
E[1mE[34m~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for not doing smart indenting when it isn't set.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 6 lines, 76 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[10;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocin nosi aiE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hsomeE[?25lE[13;17HE[?12lE[?25hE[?25lE[13;59rE[59;1H
E[1;60rE[13;17H#testE[13;22HE[KE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[13;21HE[?12lE[?25hE[14;9HE[?25lE[60;1H:E[?12lE[?25h?start?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 41 characters writtenE[14;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test19.in" 33 lines, 692 charactersE[1;1HTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

STARTTEST
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=E[34m^VE[mx7f t_kb=E[34m^VE[mx08
/some
rE[7C:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wRE[21CE[34m^H^H^H^[E[m
:" Test replacing with Tabs
0wRE[21CE[34m^[E[m
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
xE[34m^[E[m:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

start textE[27;17Hsome test text
test textE[29;17Hother test text
    a cde
    f ghi
test text
  Second line beginning with whitespace
E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 19 lines, 447 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[24;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset smarttab expandtab ts=8 sw=4E[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" make sure that backspace works, no matter what termcap is usedE[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset t_kD=^E[34m^?E[m t_kb=^E[34m^HE[?25lE[27mE[mE[HE[2JE[1;1HTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.
Also test that dv_ works correctly

STARTTEST
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=E[34m^VE[mx7f t_kb=E[34m^VE[mx08
/some
rE[7C:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wRE[21CE[34m^H^H^H^[E[m
:" Test replacing with Tabs
0wRE[21CE[34m^[E[m
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
xE[34m^[E[m:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST

start textE[27;17Hsome test text
test textE[29;17Hother test text
    a cde
    f ghi
test text
  Second line beginning with whitespace
E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[25;1HE[?12lE[?25hE[?25lE[60;1HE[m/E[?12lE[?25hsomeE[?25lE[27;17HE[?12lE[?25hE[?25l    ome test textE[27;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noexpandtabE[?25lE[27;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hotherE[?25lE[29;17HE[?12lE[?25hE[?25l    ther test textE[29;20HE[?12lE[?25hE[30;9HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test replacing with Tabs and then backspacing to undo itE[?25lE[30;9HE[?12lE[?25h    E[?25lE[?12lE[?25h
   E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test replacing with TabsE[?25lE[31;4HE[?12lE[?25h    E[?25l     E[7ChiE[?12lE[?25hE[32;9HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test that copyindent works with expandtab setE[?25lE[32;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset expandtab smartindent copyindent ts=8 sw=8 sts=8E[?25lE[32;9HE[?12lE[?25hE[?25lE[33;59rE[33;1HE[2LE[1;60rE[33;1H{E[34;9HxE[60;1HE[KE[34;9HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset nosolE[?25lE[34;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hSecond line/E[?25lE[60;13HE[KE[60;1HE[35;3HE[?12lE[?25hE[22CE[?25l  with whitespaceE[35;18HE[KE[35;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?^start?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 10 lines, 121 characters writtenE[35;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test20.in" 22 lines, 361 charactersE[1;1HTests 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$
E[34m^VE[mjjlld
:/here$/,$-1w! test.out
:qa!
ENDTEST

test text test tex start hereE[18;17Hsome textE[19;17Htest text
test text

OxE[34m^[E[mjAyE[34m^[E[mkdd
E[1mE[34m~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests Blockwise Visual when there are TABs before the text.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 9 lines, 92 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[15;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[16;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso tiny.vimE[?25lE[16;1HE[?12lE[?25hE[22;1HE[21;1HE[?25lE[21;59rE[21;1HE[LE[1;60rE[21;1HxE[60;1HE[KE[21;1HE[?12lE[?25h
E[?25lyE[?12lE[?25hE[21;1HE[?25lE[21;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[21;1HE[?12lE[?25hE[?25lE[mE[60;1H2 changes; before #1  0 seconds agoE[21;1HE[KE[21;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1HE[34m^VE[mjjlldE[31;8HE[KE[32;1H:/here$/,$-1w! test.outE[32;24HE[KE[33;1H:qa!E[33;5HE[KE[34;1HENDTESTE[34;8HE[KE[35;1HE[KE[36;1Htest text test tex start hereE[36;30HE[KE[37;1H                some textE[37;26HE[KE[38;1H                test textE[38;26HE[KE[39;1Htest textE[39;10HE[KE[40;1HE[KE[41;1HOxE[34m^[E[mjAyE[34m^[E[mkddE[41;13HE[KE[59;1HE[7mtest20.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[1;29rE[mE[1;1HE[LE[1;60rE[1;1HxE[30;11HE[1mE[7m[+]E[mE[60;1HE[KE[1;1HE[?12lE[?25h
E[?25lyE[?12lE[?25hE[1;1HE[?25lE[1;29rE[29;1H
E[1;60rE[29;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1H1 line less; before #1  0 seconds agoE[1;1HE[KE[30;11HE[1mE[7m    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hquit!E[?25lE[1;1HTests Blockwise Visual when there are TABs before the text.
First test for undo working properly when executing commands from a register.E[2;78HE[KE[3;1HAlso test this in an empty buffer.E[3;35HE[KE[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so tiny.vimE[6;13HE[KE[7;1HG0"ay$k@auE[7;11HE[KE[8;1H:newE[8;5HE[KE[9;1H@auY:quit!E[9;11HE[KE[10;1HGPE[10;3HE[KE[11;1H/start here$E[11;13HE[KE[12;1HE[34m^VE[mjjlldE[12;8HE[KE[13;1H:/here$/,$-1w! test.outE[13;24HE[KE[14;1H:qa!E[14;5HE[KE[15;1HENDTESTE[15;8HE[KE[16;1HE[KE[17;1Htest text test tex start hereE[17;30HE[KE[18;1H                some textE[18;26HE[KE[19;1H                test textE[19;26HE[KE[20;1Htest textE[20;10HE[KE[21;1HE[KE[22;1HOxE[34m^[E[mjAyE[34m^[E[mkddE[22;13HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[59;1H~                                                                                               E[22;1HE[?12lE[?25hE[?25lE[22;59rE[mE[22;1HE[LE[1;60rE[60;1HE[KE[22;1HE[?12lE[?25h
E[?25lE[60;1H/E[?12lE[?25hstart here$E[?25lE[31msearch hit BOTTOM, continuing at TOPE[17;20HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[mE[7msE[18;20HE[?12lE[?25hE[?25leE[19;20HE[?12lE[?25hE[?25lE[17;21HtE[18;21H E[19;20HtE[?12lE[?25hE[?25lE[17;22HaE[18;22HtE[19;21H E[?12lE[?25hE[?25lE[mE[17;20Hrt hereE[17;27HE[KE[18;20HextE[18;23HE[KE[19;20HexE[19;23HE[KE[17;20HE[?12lE[?25hE[18;20HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/here$/,$-1w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 6 lines, 57 characters writtenE[18;20HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test21.in" 19 lines, 297 charactersE[1;1HTests 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
6E[34m^WE[m     :.w >>test.out
:qa!
ENDTEST

#include test21.in

/* test text test tex start hereE[15;17Hsome textE[16;17Htest textE[17;17Hstart OK if found this lineE[18;9Hstart found wrong line
test text
E[1mE[34m~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for [ CTRL-I with a count and CTRL-W CTRL-I with a countE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 6 lines, 73 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[10;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hstartE[?25lE[14;23HE[?12lE[?25hE[17;17HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 30 characters writtenE[17;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H?E[?12lE[?25hstart hereE[?25lE[14;23HE[?12lE[?25hE[?25lE[1;1H6E[34m^WE[m     :.w >>test.ouE[1;23HE[KE[2;1H:qa!
ENDTESTE[3;8HE[KE[4;1HE[KE[5;1H#include test21.inE[6;1HE[KE[7;1H/* test text test tex start here
                some text
    E[12Ctest text
       E[9Cstart OK if found this lineE[11;9Hstart found wrong line
test textE[12;10HE[KE[13;1HE[1mE[34m~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[30;1HE[1mE[7mtest21.in                                                                                       E[mE[31;1H6E[34m^WE[m     :.w >>test.outE[31;23HE[KE[32;1H:qa!E[32;5HE[KE[33;1HENDTESTE[33;8HE[KE[34;1HE[KE[35;1H#include test21.inE[35;19HE[KE[36;1HE[KE[37;1H/* test text test tex start hereE[37;33HE[KE[38;1H                some textE[38;26HE[KE[39;1H                test textE[39;26HE[KE[40;1H                start OK if found this lineE[40;44HE[KE[41;1H        start found wrong lineE[41;31HE[KE[42;1Htest textE[42;10HE[KE[59;1HE[7mtest21.in                                                                                       E[10;17HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 30 characters appendedE[10;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test22.in" 13 lines, 197 charactersE[1;1HTests for file with some lines ending in CTRL-M, some notE[34m^M
^ME[m
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in aE[34m^ME[m
this one doesn't
this one doesE[34m^ME[m
and the last one doesn't
E[1mE[34m~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for file with some lines ending in CTRL-M, some notE[34m^ME[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 4 lines, 38 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[8;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ta txE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he!E[?25l"test22.in" 13 lines, 197 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-3,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 79 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test23.in" 15 lines, 282 charactersE[1;1HTests 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
E[1mE[34m~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for complicated + argument to :edit commandE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 7 lines, 125 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-1w! Xfile1E[?25l"Xfile1" E[60;10HE[KE[60;10H[New File] 1 line, 8 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$w! Xfile2E[?25l"Xfile2" E[60;10HE[KE[60;10H[New File] 1 line, 8 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hedit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|wE[?25l"Xfile1" E[60;10HE[KE[60;10H1 line, 8 characters
foo|bar
"Xfile1" 1 line, 11 characters written
"Xfile2" 1 line, 8 characters
foo/bar
"Xfile2" 1 line, 12 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 12 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xfile1E[?25l"Xfile1" 1 line, 11 charactersE[1;1HE[7LE[1;1HfooPIPEbar
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[mE[60;1HE[KE[60;1H"Xfile1" 1 line, 11 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >> test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test24.in" 89 lines, 1301 charactersE[1;1HTests 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\)\@<!bar/A/

:s/\(an\_s\+\)\@<=file/A/

:s/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/

:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test textE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for regexp with backslash and other special characters inside []E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 51 lines, 519 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[56;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h[\x]E[?25lE[59;6HE[?12lE[?25hE[?25ltext test textE[59;20HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h[\t\]]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest    text test textE[60;1HE[KE[59;8HE[?12lE[?25hE[?25ltext test texE[59;20HE[KE[59;6HE[?12lE[?25hE[?25l
/E[?12lE[?25h[]y]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text ]test textE[60;1HE[KE[59;11HE[?12lE[?25hE[?25ltest textE[59;20HE[KE[59;11HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\]]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest ]text test textE[60;1HE[KE[59;6HE[?12lE[?25hE[?25ltext test textE[59;20HE[KE[59;6HE[?12lE[?25hE[?25l
/E[?12lE[?25h[y^]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text te^st textE[60;1HE[KE[59;13HE[?12lE[?25hE[?25lst textE[59;20HE[KE[59;13HE[?12lE[?25hE[?25l
/E[?12lE[?25h[$y]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest te$xt test textE[60;1HE[KE[59;8HE[?12lE[?25hE[?25lxt test textE[59;20HE[KE[59;8HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\x61]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest taext test text  x61E[60;1HE[KE[59;7HE[?12lE[?25hE[?25lext test text  x61E[59;25HE[KE[59;7HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\x60-\x64]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest tbext test text  x60-x64E[60;1HE[KE[59;7HE[?12lE[?25hE[?25lext test text  x60-x64E[59;29HE[KE[59;7HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest 5text test text  x78 5E[59;7HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\x785]E[?25lE[59;6HE[?12lE[?25hE[?25ltext test text  x78 5E[59;27HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h[\o143]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htestc text test text  o143E[60;1HE[KE[59;5HE[?12lE[?25hE[?25l text test text  o143E[59;26HE[KE[59;5HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\o140-\o144]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htesdt text test text  o140-o144E[60;1HE[KE[59;4HE[?12lE[?25hE[?25lt text test text  o140-o14E[59;31HE[KE[59;4HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\o417]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest7 text test text  o41 7E[60;1HE[KE[59;5HE[?12lE[?25hE[?25l text test text  o41 7E[59;27HE[KE[59;5HE[?12lE[?25hE[?25l
/E[?12lE[?25h\%x42E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text tBest text  \%x42E[60;1HE[KE[59;12HE[?12lE[?25hE[?25lest text  \%x42E[59;27HE[KE[59;12HE[?12lE[?25hE[?25l
/E[?12lE[?25h\%o103E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text teCst text  \%o103E[60;1HE[KE[59;13HE[?12lE[?25hE[?25lst text  \%o103E[59;28HE[KE[59;13HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\x00]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text E[34m^@E[mtest text  [\x00]E[60;1HE[KE[59;11HE[?12lE[?25hE[?25ltest text  [\x00]E[59;28HE[KE[59;11HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest teE[34m^@E[mxt tE[34m^DE[mest tE[34m^PE[mext  [\x00-\x10]E[59;11HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/[\x00-\x10]//gE[?25l3 substitutions on 1 lineE[59;8Hxt test text  [\x00-\x10]E[59;33HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest \xyztext test text  [\x-z]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/[\x-z]\+//E[?25lE[59;6Htext test text  [\x-z]E[59;28HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htest text tev\uyst text  [\u-z]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/[\u-z]\{2,}//E[?25lE[59;13Hst text  [\u-z]E[59;28HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaaaa xx aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a\)\+//E[?25lE[59;4H xx E[59;10HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaaaa xx aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a*\)\+//E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaaaa xx aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a*\)*//E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaaaa xxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a\)\{2,3}/A/E[?25lE[59;4HAaa xxE[59;10HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaaaa xxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a\)\{-2,3}/A/E[?25lE[59;4HAaaa xE[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx aaa12aa xxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(a\)*\(12\)\@>/A/E[?25lE[59;4HAaa xxE[59;10HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx foobar xbar xxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(foo\)\@<!bar/A/E[?25lE[59;12HA xxE[59;16HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxx an file xxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(an\_s\+\)\@<=file/A/E[?25lE[59;7HA xxE[59;12HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hx= 9;E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/E[?25lE[59;1HXXE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hhh= 77;E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/E[?25lE[59;1HYY 77;E[59;7HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2HaaaE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/aaa/xyz/E[?25lE[59;2Hxyz E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2HxyzE[60;1HE[KE[59;2HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/~/bcd/E[?25lE[59;2Hbcd E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2HbcdbcdbcdE[60;1HE[KE[59;2HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/~\+/BB/E[?25lE[59;2HBBE[59;4HE[KE[59;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?start?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 32L, 586C writtenE[59;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test25.in" 31 lines, 840 charactersE[1;1HTest 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
GE[34m^]E[m 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
E[1mE[34m~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 17 lines, 540 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[22;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hiddenE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Create a link from test25.dir to the current directory.E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!rm -f test25.dirE[?25lE[18CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!ln -s . test25.dirE[?25lE[20CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Create tags.text, with the current directory name inserted.E[?25lE[27mE[mE[HE[2JE[1;1HTest 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
GE[34m^]E[m 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
E[1mE[34m~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[23;1HE[?12lE[?25hE[?25lE[60;1HE[m/E[?12lE[?25htags lineE[?25lE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hr !pwdE[?25lE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1HTest 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
GE[34m^]E[m 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
E[1mE[34m~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[25;1HE[?12lE[?25hE[?25lE[mE[25;1HE[KE[25;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25htestE[?25lE[26;18HE[?12lE[?25hE[?25l/sources/vim74/src/testdir/test25.dir/test25.in /^#define  SECTION_OFF  3$/E[26;42HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! tags.testE[?25l"tags.test" E[60;13HE[KE[60;13H[New File] 1 line, 88 characters writtenE[26;42HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Try jumping to a tag in the current file, but with a path that contains aE[?25lE[26;42HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" symbolic link.  When wrong, this will give the ATTENTION message.  The nextE[?25lE[26;42HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" space will then be eaten by hit-return, instead of moving the cursor to 'd'.E[?25lE[26;42HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tags=tags.testE[?25lE[26;42HE[?12lE[?25hE[32;1HE[29;1H#E[?25lefine  SECTION_OFF  3E[29;23HE[KE[29;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 23 characters writtenE[29;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!rm -f test25.dir tags.testE[?25lE[28CE[?1lE>E[?12lE[?25hE[?1049l
[No write since last change]

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test26.in" 44 lines, 750 charactersE[1;1HTest 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 AxE[34m^V^[E[m
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:E[8Cif has("ebcdic")
:E[10Cexecute "normal" j . "a" . j . "\x27"
:E[8Celse
:E[10Cexecute "normal" j . "a" . j . "\x1b"
:E[8Cendif
:E[8Clet 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

E[1mE[34m~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for :execute, :while and :ifE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 39 lines, 696 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[43;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet i = 0E[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwhile i < 12E[?25l
:  E[?12lE[?25h:  let i = i + 1
E[?25l:  E[?12lE[?25h:  if has("ebcdic")
E[?25l:    E[?12lE[?25h:    execute "normal o" . i . "\047"
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    execute "normal o" . i . "\033"
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:  if i % 2
E[?25l:    E[?12lE[?25h:    normal Ax^E[34m^[E[m
E[?25l:    E[?12lE[?25h:    if i == 9
E[?25l:      E[?12lE[?25h:      break
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    if i == 5
E[?25l:      E[?12lE[?25h:      continue
E[?25l:      E[?12lE[?25h:    else
E[?25l:      E[?12lE[?25h:      let j = 9
E[?25l:      E[?12lE[?25h:      while j > 0
E[?25l:E[8CE[?12lE[?25h:        if has("ebcdic")
E[?25l:E[10CE[?12lE[?25h:          execute "normal" j . "a" . j . "\x27"
E[?25l:E[10CE[?12lE[?25h:        else
E[?25l:E[10CE[?12lE[?25h:          execute "normal" j . "a" . j . "\x1b"
E[?25l:E[10CE[?12lE[?25h:        endif
E[?25l:E[8CE[?12lE[?25h:        let j = j - 1
E[?25l:E[8CE[?12lE[?25h:      endwhile
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:  if i == 9
E[?25l:    E[?12lE[?25h:    if has("ebcdic")
E[?25l:      E[?12lE[?25h:      execute "normal Az\047"
E[?25l:      E[?12lE[?25h:    else
E[?25l:      E[?12lE[?25h:      execute "normal Az\033"
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endwhileE[1;1HE[33LE[?25lE[1;1HTest 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 AxE[34m^V^[E[m
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:E[8Cif has("ebcdic")
:E[10Cexecute "normal" j . "a" . j . "\x27"
:E[8Celse
:E[10Cexecute "normal" j . "a" . j . "\x1b"
:E[8Cendif
:E[8Clet j = j - 1
:      endwhile
:    endif
:  endif
:  if i == 9
:    if has("ebcdic")E[45;1H1x999999999888888887777777666666555554444333221E[45;48HE[KE[46;1H2E[46;2HE[KE[47;1H3x999999999888888887777777666666555554444333221E[47;48HE[KE[48;1H4E[48;2HE[KE[49;1H5xE[49;3HE[KE[50;1H6E[50;2HE[KE[51;1H7x999999999888888887777777666666555554444333221E[51;48HE[KE[52;1H8E[52;2HE[KE[53;1H9xE[53;3HE[KE[60;1HE[KE[53;2HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hunlet i jE[?25lE[53;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h't,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 10 lines, 159 characters writtenE[53;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test27.in" 20 lines, 270 charactersE[1;1HTest 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
GoE[34m^RE[m%E[34m^[E[m:.w! test.out
:n! Xdir?/*/nofile
GoE[34m^RE[m%E[34m^[E[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for expanding file namesE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 15 lines, 220 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[19;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir1E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir2E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h!mkdir Xdir3E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd Xdir3E[?25l/sources/vim74/src/testdir/Xdir3E[27mE[mE[HE[2JE[1;1HTest 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
GoE[34m^RE[m%E[34m^[E[m:.w! test.out
:n! Xdir?/*/nofile
GoE[34m^RE[m%E[34m^[E[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[20;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h!mkdir Xdir4E[?25lE[13CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdirE[27mE[mE[HE[2JE[1;1HTest 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
GoE[34m^RE[m%E[34m^[E[m:.w! test.out
:n! Xdir?/*/nofile
GoE[34m^RE[m%E[34m^[E[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[20;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hw Xdir1/fileE[?25l"Xdir1/file" [New File] 20 lines, 270 characters writtenE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw Xdir3/Xdir4/fileE[?25l"Xdir3/Xdir4/file" [New File] 20 lines, 270 characters writtenE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hn Xdir?/*/fileE[?25l"Xdir3/Xdir4/file" 20 lines, 270 charactersE[1;1HE[?12lE[?25hE[20;1HE[?25l
Xdir3/Xdir4/fileE[21;17HE[KE[21;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 17 characters writtenE[21;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hn! Xdir?/*/nofileE[?25l"Xdir?/*/nofile" [New DIRECTORY]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[m
Xdir?/*/nofileE[2;15HE[KE[2;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 15 characters appendedE[2;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! xxE[?25l"xx" [New File]E[2;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h!rm -rf Xdir1 Xdir2 Xdir3E[?25lE[26CE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test28.in" 23 lines, 364 charactersE[1;1HTest for sourcing a file with CTRL-V's at the end of the line

STARTTEST
:/firstline/+1,/lastline/-1w! Xtestfile
:so Xtestfile
Gmm__1E[34m^[^[E[m__2E[34m^[E[m__3E[34m^[^[E[m__4E[34m^[E[m__5E[34m^[E[m:'m,$s/E[34m^@E[m/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 asdE[34m^VE[m
map __2 asdE[34m^V^VE[m
map __3 asdE[34m^V^VE[m
map __4 asdE[34m^V^V^VE[m
map __5 asdE[34m^V^V^VE[m
lastline

E[1mE[34m~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for sourcing a file with CTRL-V's at the end of the lineE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 5 lines, 114 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[9;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/firstline/+1,/lastline/-1w! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[New File] 10 lines, 148 characters writtenE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso XtestfileE[?25lE[10;1HE[?12lE[?25hE[23;1HE[24;12HE[?25lE[23;1Hsd
map __2 asdE[34m^[E[mE[24;14HE[KE[24;12HE[?12lE[?25hE[?25lE[2CsecondE[?12lE[?25hd  E[?25lsdE[34m^[E[?12lE[?25h^[E[m  E[13CE[?25lE[24;24HsdE[34m^@E[mmap __5 asdE[34m^@E[?12lE[?25hE[?25lE[mE[2CfifthE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h'm,$s/E[34m^@E[m/0/gE[?25lE[24;26H0map __5 asd0fifthE[24;44HE[KE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h'm,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 2 lines, 45 characters writtenE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test29.in" 202 lines, 3656 charactersE[1;1HTest 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
/^{/+1E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for joining lines and marks in themE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 11 lines, 478 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[18;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nojoinspacesE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpoptions-=jE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hfirstline/E[?25lE[60;11HE[KE[60;1HE[20;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^STARTTEST/-1E[?25lE[12C+-137 fewer linesE[60;15HE[KE[21;1HSTARTTEST
/^{/+1
:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4JE[27;4HE[KE[28;1H:.,+2join
j3JE[29;4HE[KE[30;1H:.,+2join
j3JE[31;4HE[KE[32;1H:.,+2join
jj3JE[33;5HE[KE[34;1HENDTESTE[35;1HE[KE[36;1H{E[36;2HE[KE[37;1HE[KE[38;1H/*E[38;3HE[KE[39;1H * Make sure the previous comment leader is not removed.
 */E[40;4HE[KE[41;1HE[KE[42;1H/*E[42;3HE[KE[43;1H * Make sure the previous comment leader is not removed.
 */E[44;4HE[KE[45;1HE[KE[46;1H// Should the next comment leader be left alone?
// Yes.E[47;8HE[KE[48;1HE[KE[49;1H// Should the next comment leader be left alone?
// Yes.E[51;1HE[KE[52;1H/* Here the comment leader should be left intact. */
// And so should this one.E[54;1HE[KE[55;1H/* Here the comment leader should be left intact. */
// And so should this one.

if (condition) // Remove the next comment leader!
      E[9C// OK, I will.E[21;1HE[?12lE[?25hE[?25lE[60;4Hmore linesE[60;14HE[KE[21;1Hasdfasdf.
asdfE[22;5HE[KE[23;1Hasdfasdf. E[23;11HE[KE[24;1HasdfE[24;6HE[KE[25;1Hasdfasdf.  E[25;12HE[KE[26;1HasdfE[26;5HE[KE[27;1Hasdfasdf.
asdfE[28;5HE[KE[29;1Hasdfasdf.
asdfE[30;5HE[KE[31;1Hasdfasdf.
asdfE[32;5HE[KE[33;1Hasdfasdf.
asdfE[34;5HE[KE[35;1Hasdfasdf
asdf
asdfasdf
asdf
asdfasdf  E[39;11HE[KE[40;1Hasdf
asdfasdf
asdf
asdfasdf        E[43;18HE[KE[44;1Hasdf
asdfasdf
asdfE[46;5HE[KE[47;1Hasdfasdf
asdf
zx cvn.E[49;8HE[KE[50;1Has dfg?
hjkl iop!
ertE[52;4HE[KE[53;1Hzx cvn.E[53;8HE[KE[54;1Has dfg?
hjkl iop!E[55;10HE[KE[56;1HertE[56;4HE[KE[58;1HSTARTTESTE[58;10HE[KE[59;1H/^{/+1E[59;16HE[KE[21;1HE[?12lE[?25hE[?25lE[21;59rE[59;1H
E[1;60rE[21;5Hasdf. asdfE[59;1H:set comments=s1:/*,mb:*,ex:*/,://E[60;1HE[KE[21;10HE[?12lE[?25hE[22;10HE[?25lE[22;59rE[59;1H
E[1;60rE[22;5Hasdf. asdfE[59;1H:set nojoinspaces fo=jE[22;11HE[?12lE[?25hE[23;11HE[?25lE[23;59rE[59;1H
E[1;60rE[23;5Hasdf.  asdfE[59;1H:set backspace=eol,startE[23;12HE[?12lE[?25hE[24;16HE[?25lE[24;59rE[59;1H
E[1;60rE[24;5Hasdf.E[7CasdfE[59;1H:.,+3joinE[24;17HE[?12lE[?25hE[25;16HE[?25lE[25;59rE[59;1H
E[1;60rE[25;5Hasdf.E[7CasdfE[59;1Hj4JE[25;17HE[?12lE[?25hE[26;17HE[?25lE[26;59rE[59;1H
E[1;60rE[26;5Hasdf.E[8CasdfE[59;1H:.,+2joinE[26;18HE[?12lE[?25hE[27;24HE[?25lE[27;59rE[59;1H
E[1;60rE[27;5Hasdf.E[15CasdfE[59;1Hj3JE[27;25HE[?12lE[?25hE[28;8HE[?25lE[28;59rE[59;1H
E[1;60rE[28;5Hasdf asdfE[59;1H:.,+2joinE[28;9HE[?12lE[?25hE[29;9HE[?25lE[29;59rE[59;1H
E[1;60rE[29;5Hasdf asdfE[59;1Hj3JE[29;10HE[?12lE[?25hE[30;10HE[?25lE[30;59rE[59;1H
E[1;60rE[30;5Hasdf  asdfE[59;1H:.,+2joinE[30;11HE[?12lE[?25hE[31;16HE[?25lE[31;59rE[59;1H
E[1;60rE[31;5HasdfE[8CasdfE[59;1Hjj3JE[31;17HE[?12lE[?25hE[32;17HE[?25lE[32;59rE[59;1H
E[1;60rE[32;5HasdfE[9CasdfE[59;1HENDTESTE[32;18HE[?12lE[?25hE[33;16HE[?25lE[33;59rE[59;1H
E[1;60rE[33;5HasdfE[8CasdfE[?12lE[?25hE[34;24HE[?25lE[34;59rE[59;1H
E[1;60rE[34;5HasdfE[16CasdfE[59;1H{E[34;25HE[?12lE[?25hE[35;7Hzx cvE[37;6Hhjkl iE[35;7HE[?25lE[35;59rE[35;1HE[3ME[1;60rE[35;1Hzx cvn. as dfg? hjkl iop! ertE[58;1H/*
 * Make sure the previous comment leader is not removed.E[35;26HE[?12lE[?25h erE[?25lt erE[?12lE[?25hzx cvE[26CE[?25lrnE[?12lE[?25hE[35;23HE[10CE[?25lnopE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset cpoptions+=jE[?25lE[35;35HE[?12lE[?25hE[36;7Hzx cvE[38;6Hhjkl iE[36;7HE[?25lE[36;59rE[36;1HE[3ME[1;60rE[36;1Hzx cvn. as dfg? hjkl iop! ertE[57;2H*/

/*E[60;1HE[KE[36;26HE[?12lE[?25h erE[?25lt erE[?12lE[?25hzx cvE[26CE[?25lrnE[?12lE[?25hE[36;23HE[10CE[?25lnopE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset cpoptions-=j joinspacesE[?25lE[36;35HE[?12lE[?25h
E[?25lE[60;1H37 more linesE[60;14HE[KE[38;1Hasdfasdf.
asdfE[39;5HE[KE[40;1Hasdfasdf. E[40;11HE[KE[41;1HasdfE[41;6HE[KE[42;1Hasdfasdf.  E[42;12HE[KE[43;1HasdfE[43;5HE[KE[44;1Hasdfasdf.
asdfE[45;5HE[KE[46;1Hasdfasdf.
asdfE[47;5HE[KE[48;1Hasdfasdf.
asdfE[49;5HE[KE[50;1Hasdfasdf.
asdfE[51;5HE[KE[52;1Hasdfasdf
asdf
asdfasdf
asdf
asdfasdf  E[56;11HE[KE[57;1Hasdf
asdfasdf
asdfE[38;1HE[?12lE[?25hE[?25lE[38;59rE[59;1H
E[1;60rE[38;5Hasdf.  asdfE[59;1HasdfasdfE[60;1HE[KE[38;10HE[?12lE[?25hE[39;10HE[?25lE[39;59rE[59;1H
E[1;60rE[39;5Hasdf.  asdfE[59;1HasdfE[39;11HE[?12lE[?25hE[40;11HE[?25lE[40;59rE[59;1H
E[1;60rE[40;5Hasdf.  asdfE[59;1HasdfasdfE[40;12HE[?12lE[?25hE[41;16HE[?25lE[41;59rE[59;1H
E[1;60rE[41;5Hasdf.E[7CasdfE[59;1HasdfE[41;17HE[?12lE[?25hE[42;16HE[?25lE[42;59rE[59;1H
E[1;60rE[42;5Hasdf.E[7CasdfE[59;1HasdfasdfE[42;17HE[?12lE[?25hE[43;17HE[?25lE[43;59rE[59;1H
E[1;60rE[43;5Hasdf.E[8CasdfE[59;1HasdfE[43;18HE[?12lE[?25hE[44;24HE[?25lE[44;59rE[59;1H
E[1;60rE[44;5Hasdf.E[15CasdfE[59;1Hzx cvn.E[44;25HE[?12lE[?25hE[45;8HE[?25lE[45;59rE[59;1H
E[1;60rE[45;5Hasdf asdfE[59;1Has dfg?E[45;9HE[?12lE[?25hE[46;9HE[?25lE[46;59rE[59;1H
E[1;60rE[46;5Hasdf asdfE[59;1Hhjkl iop!E[46;10HE[?12lE[?25hE[47;10HE[?25lE[47;59rE[59;1H
E[1;60rE[47;5Hasdf  asdfE[59;1HertE[47;11HE[?12lE[?25hE[48;16HE[?25lE[48;59rE[59;1H
E[1;60rE[48;5HasdfE[8CasdfE[59;1Hzx cvn.E[48;17HE[?12lE[?25hE[49;17HE[?25lE[49;59rE[59;1H
E[1;60rE[49;5HasdfE[9CasdfE[59;1Has dfg?E[49;18HE[?12lE[?25hE[50;16HE[?25lE[50;59rE[59;1H
E[1;60rE[50;5HasdfE[8CasdfE[59;1Hhjkl iop!E[50;17HE[?12lE[?25hE[51;24HE[?25lE[51;59rE[59;1H
E[1;60rE[51;5HasdfE[16CasdfE[59;1HertE[51;25HE[?12lE[?25hE[52;7Hzx cvE[54;6Hhjkl iE[52;7HE[?25lE[52;59rE[52;1HE[3ME[1;60rE[52;1Hzx cvn.  as dfg?  hjkl iop!  ertE[58;1HSTARTTEST
/^{/+1E[52;28HE[?12lE[?25h  erE[?25lt  eE[?12lE[?25hzx cvE[29CE[?25lenE[?12lE[?25hE[52;25HE[11CE[?25lnopE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset cpoptions+=jE[?25lE[52;38HE[?12lE[?25hE[53;7Hzx cvE[55;6Hhjkl iE[53;7HE[?25lE[53;59rE[53;1HE[3ME[1;60rE[53;1Hzx cvn.  as dfg? hjkl iop! ertE[57;1H:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,startE[60;1HE[KE[53;27HE[?12lE[?25h erE[?25lt erE[?12lE[?25hzx cvE[27CE[?25lrnE[?12lE[?25hE[53;24HE[10CE[?25lnopE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset cpoptions-=j nojoinspaces compatibleE[?25lE[53;36HE[?12lE[?25h
E[?25lE[60;1H37 more linesE[60;14HE[KE[55;1Hasdfasdf.
asdfE[56;5HE[KE[57;1Hasdfasdf. E[57;11HE[KE[58;1HasdfE[58;6HE[KE[59;1Hasdfasdf.  E[59;12HE[KE[55;1HE[?12lE[?25hE[?25lE[55;59rE[59;1H
E[1;60rE[55;5Hasdf.  asdfE[59;1HasdfE[60;1HE[KE[55;10HE[?12lE[?25hE[56;10HE[?25lE[56;59rE[59;1H
E[1;60rE[56;5Hasdf.  asdf


asdfasdf.E[56;11HE[?12lE[?25hE[57;11HE[?25l asdf
asdfasdf.E[59;5HE[KE[57;12HE[?12lE[?25hE[58;16HE[?25l asdf
asdfasdf.E[58;17HE[?12lE[?25hE[59;16HE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hasdfasdf.E[7CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hasdfasdf.E[14CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[?12lE[?25hE[?25lf asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hasdfasdf E[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[7CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[8CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[7CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HasdfasdfE[15CE[?12lE[?25hE[?25l asdfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hzx cvn.E[?12lE[?25hE[?25l.  as dfg? hjkl iop! ertE[59;8HE[?12lE[?25hE[22CE[?25lt  aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hzx cvn.E[?12lE[?25hE[?25l
/E[?12lE[?25hSTARTTEST/-2E[?25lE[11C+-24 fewer linesE[60;14HE[KE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[59;1H
E[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H12 lines, 147 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[12ME[1;60rE[48;1H:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset comments=s1:/*,mb:*,ex:*/,://E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nojoinspaces fo=jE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset backspace=eol,startE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,+3joinE[?25lE[59;1H/* Make sure the previous comment leader is not removed. */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l/* Make sure the previous comment leader is not removed. */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1H// Should the next comment leader be left alone? Yes.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l// Should the next comment leader be left alone? Yes.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1H/* Here the comment leader should be left intact. */ // And so should this one.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l/* Here the comment leader should be left intact. */ // And so should this one.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1Hif (condition) // Remove the next comment leader! OK, I will.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Haction();E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lif (condition) // Remove the next comment leader! OK, I will.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Haction();E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1H}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H21 lines, 356 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[21ME[1;60rE[39;1H: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!E[34m^ME[m// Make sure backspacing does not remove this comment leader.E[34m^[E[m0iE[34m^H^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset comments=sO:*\ -,mO:*\ \ ,exO:*/E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset comments+=s1:/*,mb:*,ex:*/,://E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset comments+=s1:>#,mb:#,ex:#<,:<E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpoptions-=j joinspaces fo=jE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset backspace=eol,startE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.,+3joinE[?25lE[59;1H/* Make sure the previous comment leader is not removed.  */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l/* Make sure the previous comment leader is not removed.  */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+8joinE[?25lE[59;1H/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1H// Should the next comment leader be left alone?  Yes.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l// Should the next comment leader be left alone?  Yes.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1H/* Here the comment leader should be left intact. */ // And so should this one.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l/* Here the comment leader should be left intact. */ // And so should this one.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1Hif (condition) // Remove the next comment leader!  OK, I will.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Haction();E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lif (condition) // Remove the next comment leader!  OK, I will.E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5Haction();E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+2joinE[?25lE[59;1Hint i = 7 /* foo *// 3 // commentE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2H;E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lint i = 7 /* foo *// 3 // commentE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2H;E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h.,+5joinE[?25lE[59;1H># Note that the last character of the ending comment leader (left angle bracket) is a comment lE[59;1HE[1mE[34m@                                                                                               E[1;59rE[mE[1;1HE[2ME[1;60rE[57;1H># Note that the last character of the ending comment leader (left angle bracket) is a comment llE[58;1Header itself. Make sure that this comment leader is not removed from the next line #< < On this  E[59;1Hline a new comment is opened which spans 2 lines. This comment should retain its comment leader.E[60;1HE[KE[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l># Note that the last character of the ending comment leader (left angle bracket) is a comment lE[59;1HE[1mE[34m@                                                                                               E[1;59rE[mE[1;1HE[2ME[1;60rE[57;1H># Note that the last character of the ending comment leader (left angle bracket) is a comment llE[58;1Header itself. Make sure that this comment leader is not removed from the next line #< < On this  E[59;1Hline a new comment is opened which spans 2 lines. This comment should retain its comment leader.E[57;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HSome code!
// Make sure backspacing does not remove this comment leader.E[?12lE[?25hE[?25lE[58;11H// Make sure backspacing does not remove this comment leader.
}E[59;2HE[KE[58;10HE[?12lE[?25h
E[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:g/^STARTTEST/.,/^ENDTEST/dE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 61 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[59;19HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:?firstline?+1,$w! test.outE[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hg/^STARTTEST/.,/^ENDTEST/dE[?25l55 fewer linesE[60;15HE[KE[1;1H}E[1;5HE[KE[2;1HE[KE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h?firstline?+1,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 88 lines, 2789 characters writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test30.in" 222 lines, 3463 charactersE[1;1HTest 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! XXtt13E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for a lot of variations of the 'fileformats' optionE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 195 lines, 3271 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H: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
Go1E[34m^[E[m:$r XXtt11
:$r XXtt12
:$r XXtt13
Go2E[34m^[E[m:$r XXtt21
:$r XXtt22
:$r XXtt23
Go3E[34m^[E[m:$r XXtt31
:$r XXtt32
:$r XXtt33
Go4E[34m^[E[m:$r XXtt41
:$r XXtt42
:$r XXtt43
Go5E[34m^[E[m:$r XXtt51
:$r XXtt52
:$r XXtt53
Go6E[34m^[E[m:$r XXtt61
:$r XXtt62
:$r XXtt63
Go7E[34m^[E[m:$r XXtt71
Go8E[34m^[E[m:$r XXtt81
Go9E[34m^[E[m:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10E[34m^[E[m:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

1
2
3
4
5
6
7
8
9
10

unix
unix
eof

dosE[34m^ME[m
dosE[34m^ME[m
eof

macE[34m^ME[mmacE[34m^ME[38;1HE[?12lE[?25h
E[?25lE[60;1HE[m:so! XdotestE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" first write three test files, one in each formatE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat=unixE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=E[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^1/w! XX1E[?25l"XX1" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^2/w! XX2E[?25l"XX2" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^3/w! XX3E[?25l"XX3" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^4/w! XX4E[?25l"XX4" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^5/w! XX5E[?25l"XX5" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^6/w! XX6E[?25l"XX6" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^7/w! XX7E[?25l"XX7" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^8/w! XX8E[?25l"XX8" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^9/w! XX9E[?25l"XX9" E[60;7HE[KE[60;7H[New File] 1 line, 2 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^10/w! XX10E[?25l"XX10" E[60;8HE[KE[60;8H[New File] 1 line, 3 characters writtenE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^unix/;/eof/-1w! XXUnixE[?25l"XXUnix" E[60;10HE[KE[60;10H[New File] 2 lines, 10 characters writtenE[51;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^dos/;/eof/-1w! XXDosE[?25l"XXDos" E[60;9HE[KE[60;9H[New File] 2 lines, 10 characters writtenE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset bin noeolE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$w! XXMacE[?25l"XXMac" E[60;9HE[KE[60;9H[New File][Incomplete last line] 1 line, 8 characters writtenE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobin eolE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUnix XXDos XXMacE[?25l3 buffers wiped outE[60;21HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" create mixed format filesE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has("vms")E[?25l
:  E[?12lE[?25h: !copy XXUnix,XXDos XXUxDs.
E[?25l:  E[?12lE[?25h: !copy XXUnix,XXMac XXUxMac.
E[?25l:  E[?12lE[?25h: !copy XXDos,XXMac  XXDosMac.
E[?25l:  E[?12lE[?25h: !copy XXUnix,XXDos,XXMac XXUxDsMc.
E[?25l:  E[?12lE[?25h:elseif has("win32")
E[?25l:  E[?12lE[?25h: !copy /b XXUnix+XXDos XXUxDs
E[?25l:  E[?12lE[?25h: !copy /b XXUnix+XXMac XXUxMac
E[?25l:  E[?12lE[?25h: !copy /b XXDos+XXMac XXDosMac
E[?25l:  E[?12lE[?25h: !copy /b XXUnix+XXDos+XXMac XXUxDsMc
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: !cat XXUnix XXDos >XXUxDs
E[?25l:!cat XXUnix XXDos >XXUxDsE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25h !cat XXUnix XXMac >XXUxMac
E[?25l:!cat XXUnix XXMac >XXUxMacE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25h !cat XXDos XXMac >XXDosMac
E[?25l:!cat XXDos XXMac >XXDosMacE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25h !cat XXUnix XXDos XXMac >XXUxDsMc
E[?25l:!cat XXUnix XXDos XXMac >XXUxDsMcE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25hendifE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[27mE[mE[HE[2JE[1;1H: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
Go1E[34m^[E[m:$r XXtt11
:$r XXtt12
:$r XXtt13
Go2E[34m^[E[m:$r XXtt21
:$r XXtt22
:$r XXtt23
Go3E[34m^[E[m:$r XXtt31
:$r XXtt32
:$r XXtt33
Go4E[34m^[E[m:$r XXtt41
:$r XXtt42
:$r XXtt43
Go5E[34m^[E[m:$r XXtt51
:$r XXtt52
:$r XXtt53
Go6E[34m^[E[m:$r XXtt61
:$r XXtt62
:$r XXtt63
Go7E[34m^[E[m:$r XXtt71
Go8E[34m^[E[m:$r XXtt81
Go9E[34m^[E[m:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10E[34m^[E[m:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

1
2
3
4
5
6
7
8
9
10

unix
unix
eof

dosE[34m^ME[m
dosE[34m^ME[m
eof

macE[34m^ME[mmacE[34m^ME[55;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h" try reading and writing with 'fileformats' emptyE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat=unixE[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUnixE[?25l"XXUnix" E[60;10HE[KE[60;10H2 lines, 10 charactersE[1;1HunixE[1;5HE[KE[2;1HunixE[2;5HE[KE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 2 lines, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXDosE[?25l"XXDos" E[60;9HE[KE[60;9H2 lines, 10 charactersE[1;1HdosE[34m^ME[m
dosE[34m^ME[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt01E[?25l"XXtt01" E[60;10HE[KE[60;10H[New File] 2 lines, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXMacE[?25l"XXMac" E[60;9HE[KE[60;9H[Incomplete last line] 1 line, 8 charactersE[1;1HmacE[2CmacE[34m^ME[m
E[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt02E[?25l"XXtt02" E[60;10HE[KE[60;10H[New File] 1 line, 9 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUnix XXDos XXMacE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 characters
3 buffers wiped out
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat=dosE[?25lE[1;1HE[2LE[1;1H:w >>XXtt92
:w >>XXtt93
:"E[3;3HE[KE[4;1H:" Concatenate the results.E[4;28HE[KE[5;1H:" Make fileformat of test.out the native fileformat.E[5;54HE[KE[6;1H:" Add a newline at the end.E[6;29HE[KE[7;1H:set binaryE[7;12HE[KE[8;1H:e! test.outE[8;13HE[KE[9;1H:$r XXtt01E[9;11HE[KE[10;1H:$r XXtt02E[10;11HE[KE[11;1HGo1E[34m^[E[m:$r XXtt11E[11;16HE[KE[12;1H:$r XXtt12E[12;11HE[KE[13;1H:$r XXtt13E[13;11HE[KE[14;1HGo2E[34m^[E[m:$r XXtt21E[14;16HE[KE[15;1H:$r XXtt22E[15;11HE[KE[16;1H:$r XXtt23E[16;11HE[KE[17;1HGo3E[34m^[E[m:$r XXtt31E[17;16HE[KE[18;1H:$r XXtt32E[18;11HE[KE[19;1H:$r XXtt33E[19;11HE[KE[20;1HGo4E[34m^[E[m:$r XXtt41E[20;16HE[KE[21;1H:$r XXtt42E[21;11HE[KE[22;1H:$r XXtt43E[22;11HE[KE[23;1HGo5E[34m^[E[m:$r XXtt51E[23;16HE[KE[24;1H:$r XXtt52E[24;11HE[KE[25;1H:$r XXtt53E[25;11HE[KE[26;1HGo6E[34m^[E[m:$r XXtt61E[26;16HE[KE[27;1H:$r XXtt62E[27;11HE[KE[28;1H:$r XXtt63E[28;11HE[KE[29;1HGo7E[34m^[E[m:$r XXtt71E[29;16HE[KE[30;1HGo8E[34m^[E[m:$r XXtt81E[30;16HE[KE[31;1HGo9E[34m^[E[m:$r XXtt91E[31;16HE[KE[32;1H:$r XXtt92E[32;11HE[KE[33;1H:$r XXtt93E[33;11HE[KE[34;1HGo10E[34m^[E[m:$r XXUnixE[34;17HE[KE[35;1H:set nobinary ff&E[35;18HE[KE[36;1H:wE[36;3HE[KE[37;1H:qa!E[37;5HE[KE[38;1HENDTESTE[38;8HE[KE[39;1HE[KE[40;1H1E[40;2HE[KE[41;1H2E[41;2HE[KE[42;1H3E[42;2HE[KE[43;1H4E[43;2HE[KE[44;1H5E[44;2HE[KE[45;1H6E[45;2HE[KE[46;1H7E[46;2HE[KE[47;1H8E[47;2HE[KE[48;1H9E[48;2HE[KE[49;1H10E[49;3HE[KE[50;1HE[KE[51;1HunixE[51;5HE[KE[52;1HunixE[52;5HE[KE[53;1HeofE[53;4HE[KE[54;1HE[KE[55;1HdosE[34m^ME[mE[55;6HE[KE[56;1HdosE[34m^ME[mE[56;6HE[KE[57;1HeofE[57;4HE[KE[58;1HE[KE[59;1HmacE[34m^ME[mmacE[34m^ME[mE[59;11HE[KE[60;1HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25he! XXUnixE[?25l"XXUnix" E[60;10HE[KE[60;10H[CR missing][dos format] 2 lines, 10 charactersE[1;1HunixE[1;5HE[KE[2;1HunixE[2;5HE[KE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt11E[?25l"XXtt11" E[60;10HE[KE[60;10H[New File][dos format] 2 lines, 12 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXDosE[?25l"XXDos" E[60;9HE[KE[60;9H[dos format] 2 lines, 10 charactersE[1;1HdosE[1;4HE[KE[2;1HdosE[2;4HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt12E[?25l"XXtt12" E[60;10HE[KE[60;10H[New File][dos format] 2 lines, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXMacE[?25l"XXMac" E[60;9HE[KE[60;9H[Incomplete last line][dos format] 1 line, 8 charactersE[1;1HmacE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt13E[?25l"XXtt13" E[60;10HE[KE[60;10H[New File][dos format] 1 line, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUnix XXDos XXMacE[?25l"test30.in" E[60;13HE[KE[60;13H[CR missing][dos format] 222 lines, 3463 characters
3 buffers wiped out
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat=macE[?25lE[1;1HE[2LE[1;1H:w >>XXtt92
:w >>XXtt93
:"E[3;3HE[KE[4;1H:" Concatenate the results.E[4;28HE[KE[5;1H:" Make fileformat of test.out the native fileformat.E[5;54HE[KE[6;1H:" Add a newline at the end.E[6;29HE[KE[7;1H:set binaryE[7;12HE[KE[8;1H:e! test.outE[8;13HE[KE[9;1H:$r XXtt01E[9;11HE[KE[10;1H:$r XXtt02E[10;11HE[KE[11;1HGo1E[34m^[E[m:$r XXtt11E[11;16HE[KE[12;1H:$r XXtt12E[12;11HE[KE[13;1H:$r XXtt13E[13;11HE[KE[14;1HGo2E[34m^[E[m:$r XXtt21E[14;16HE[KE[15;1H:$r XXtt22E[15;11HE[KE[16;1H:$r XXtt23E[16;11HE[KE[17;1HGo3E[34m^[E[m:$r XXtt31E[17;16HE[KE[18;1H:$r XXtt32E[18;11HE[KE[19;1H:$r XXtt33E[19;11HE[KE[20;1HGo4E[34m^[E[m:$r XXtt41E[20;16HE[KE[21;1H:$r XXtt42E[21;11HE[KE[22;1H:$r XXtt43E[22;11HE[KE[23;1HGo5E[34m^[E[m:$r XXtt51E[23;16HE[KE[24;1H:$r XXtt52E[24;11HE[KE[25;1H:$r XXtt53E[25;11HE[KE[26;1HGo6E[34m^[E[m:$r XXtt61E[26;16HE[KE[27;1H:$r XXtt62E[27;11HE[KE[28;1H:$r XXtt63E[28;11HE[KE[29;1HGo7E[34m^[E[m:$r XXtt71E[29;16HE[KE[30;1HGo8E[34m^[E[m:$r XXtt81E[30;16HE[KE[31;1HGo9E[34m^[E[m:$r XXtt91E[31;16HE[KE[32;1H:$r XXtt92E[32;11HE[KE[33;1H:$r XXtt93E[33;11HE[KE[34;1HGo10E[34m^[E[m:$r XXUnixE[34;17HE[KE[35;1H:set nobinary ff&E[35;18HE[KE[36;1H:wE[36;3HE[KE[37;1H:qa!E[37;5HE[KE[38;1HENDTESTE[38;8HE[KE[39;1HE[KE[40;1H1E[40;2HE[KE[41;1H2E[41;2HE[KE[42;1H3E[42;2HE[KE[43;1H4E[43;2HE[KE[44;1H5E[44;2HE[KE[45;1H6E[45;2HE[KE[46;1H7E[46;2HE[KE[47;1H8E[47;2HE[KE[48;1H9E[48;2HE[KE[49;1H10E[49;3HE[KE[50;1HE[KE[51;1HunixE[51;5HE[KE[52;1HunixE[52;5HE[KE[53;1HeofE[53;4HE[KE[54;1HE[KE[55;1HdosE[55;4HE[KE[56;1HdosE[56;4HE[KE[57;1HeofE[57;4HE[KE[58;1HE[KE[59;1HmacE[34m^JE[mmacE[59;9HE[KE[60;1HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25he! XXUnixE[?25l"XXUnix" E[60;10HE[KE[60;10H[Incomplete last line][mac format] 1 line, 10 charactersE[1;1HunixE[34m^JE[munixE[34m^JE[m
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt21E[?25l"XXtt21" E[60;10HE[KE[60;10H[New File][mac format] 1 line, 11 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXDosE[?25l"XXDos" E[60;9HE[KE[60;9H[Incomplete last line][mac format] 3 lines, 10 charactersE[1;1HdosE[1;4HE[KE[2;1HE[34m^JE[mdosE[2;6HE[KE[3;1HE[34m^JE[mE[3;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt22E[?25l"XXtt22" E[60;10HE[KE[60;10H[New File][mac format] 3 lines, 11 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXMacE[?25l"XXMac" E[60;9HE[KE[60;9H[mac format] 2 lines, 8 charactersE[1;1Hmac
macE[2;4HE[KE[3;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt23E[?25l"XXtt23" E[60;10HE[KE[60;10H[New File][mac format] 2 lines, 8 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUnix XXDos XXMacE[?25l"test30.in" E[60;13HE[KE[60;13H[Incomplete last line][mac format] 5 lines, 3463 characters
3 buffers wiped out
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[2LE[1;1HTest for a lot of variations of the 'fileformats' optionE[34m^J^JE[mNote: This test will fail if "cat" iiE[2;1Hs not available.E[34m^J^JE[mSTARTTESTE[34m^JE[m:so small.vimE[34m^JE[m:" first write three test files, one in each formaaE[3;1HtE[34m^JE[m:set fileformat=unixE[34m^JE[m:set fileformats=E[34m^JE[m:/^1/w! XX1E[34m^JE[m:/^2/w! XX2E[34m^JE[m:/^3/w! XX3E[34m^JE[m:/^4/w! XX4E[34m^JJE[mE[4;1H:/^5/w! XX5E[34m^JE[m:/^6/w! XX6E[34m^JE[m:/^7/w! XX7E[34m^JE[m:/^8/w! XX8E[34m^JE[m:/^9/w! XX9E[34m^JE[m:/^10/w! XX10E[34m^JE[m:/^unix/;/eof/-11E[5;1Hw! XXUnixE[34m^JE[m:/^dos/;/eof/-1w! XXDosE[34m^JE[m:set bin noeolE[34m^JE[m:$w! XXMacE[34m^JE[m:set nobin eolE[34m^JE[m:bwipe XXUnix XXXE[6;1HDos XXMacE[34m^JE[m:" create mixed format filesE[34m^JE[m:if has("vms")E[34m^JE[m: !copy XXUnix,XXDos XXUxDs.E[34m^JE[m: !copy XXE[7;1HXUnix,XXMac XXUxMac.E[34m^JE[m: !copy XXDos,XXMac  XXDosMac.E[34m^JE[m: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[34m^JE[m:elssE[8;1Heif has("win32")E[34m^JE[m: !copy /b XXUnix+XXDos XXUxDsE[34m^JE[m: !copy /b XXUnix+XXMac XXUxMacE[34m^JE[m: !copy /b XXXE[9;1HDos+XXMac XXDosMacE[34m^JE[m: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[34m^JE[m:elseE[34m^JE[m: !cat XXUnix XXDos >XXUxDsE[34m^JJE[mE[10;1H: !cat XXUnix XXMac >XXUxMacE[34m^JE[m: !cat XXDos XXMac >XXDosMacE[34m^JE[m: !cat XXUnix XXDos XXMac >XXUxDsMcE[34m^^E[11;1HJE[m:endifE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' emptyE[34m^JE[m:set fileformat=unixE[34m^JE[m:e! XXUnnE[12;1HixE[34m^JE[m:w! test.outE[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt01E[34m^JE[m:e! XXMacE[34m^JE[m:w! XXtt02E[34m^JE[m:bwipe XXUnix XXDos XXMacE[34m^JE[m:set  E[13;1Hfileformat=dosE[34m^JE[m:e! XXUnixE[34m^JE[m:w! XXtt11E[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt12E[34m^JE[m:e! XXMacE[34m^JE[m:w! XXtt13E[34m^JE[m:bwipe XXUUE[14;1Hnix XXDos XXMacE[34m^JE[m:set fileformat=macE[34m^JE[m:e! XXUnixE[34m^JE[m:w! XXtt21E[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt22E[34m^JE[m:e! XXMacE[34m^JJE[mE[15;1H:w! XXtt23E[34m^JE[m:bwipe XXUnix XXDos XXMacE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' set to  E[16;1Hone formatE[34m^JE[m:set fileformats=unixE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt31E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=ddE[17;1HosE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt32E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt33E[34m^JE[m::E[18;1Hbwipe XXUxDsMcE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' set to two formatsE[34m^JE[m:set fileffE[19;1Hormats=unix,dosE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt41E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:e! XXUxMacE[34m^JE[m:w! XXtt42E[34m^JE[m:bwipe XXUxxE[20;1HMacE[34m^JE[m:e! XXDosMacE[34m^JE[m:w! XXtt43E[34m^JE[m:bwipe XXDosMacE[34m^JE[m:set fileformats=unix,macE[34m^JE[m:e! XXUxDsE[34m^JE[m:w! XXtt55E[21;1H1E[34m^JE[m:bwipe XXUxDsE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt52E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:e! XXDosMacE[34m^JE[m:w! XXtt53E[34m^JE[m:bwipe XXXE[22;1HDosMacE[34m^JE[m:set fileformats=dos,macE[34m^JE[m:e! XXUxDsE[34m^JE[m:w! XXtt61E[34m^JE[m:bwipe XXUxDsE[34m^JE[m:e! XXUxMacE[34m^JE[m:w! XXtt622E[23;1HE[34m^JE[m:bwipe XXUxMacE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt63E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:"E[34m^JE[m:" try reading and writing withhE[24;1H 'fileformats' set to three formatsE[34m^JE[m:set fileformats=unix,dos,macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt71E[34m^JE[m:bbE[25;1Hwipe XXUxDsMcE[34m^JE[m:set fileformats=mac,dos,unixE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt81E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:" try  E[26;1Hwith 'binary' setE[34m^JE[m:set fileformats=mac,unix,dosE[34m^JE[m:set binaryE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt91E[34m^JE[m:bwipe  E[27;1HXXUxDsMcE[34m^JE[m:set fileformats=macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt92E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=dosE[34m^^E[28;1HJE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt93E[34m^JE[m:"E[34m^JE[m:" Append "END" to each file so that we can see what the last wriiE[29;1Htten char was.E[34m^JE[m:set fileformat=unix nobinE[34m^JE[mggdGaENDE[34m^[E[m:w >>XXtt01E[34m^JE[m:w >>XXtt02E[34m^JE[m:w >>XXtt11E[34m^JE[m:w  E[30;1H>>XXtt12E[34m^JE[m:w >>XXtt13E[34m^JE[m:w >>XXtt21E[34m^JE[m:w >>XXtt22E[34m^JE[m:w >>XXtt23E[34m^JE[m:w >>XXtt31E[34m^JE[m:w >>XXtt32E[34m^JE[m:w >>XXttE[31;1Ht33E[34m^JE[m:w >>XXtt41E[34m^JE[m:w >>XXtt42E[34m^JE[m:w >>XXtt43E[34m^JE[m:w >>XXtt51E[34m^JE[m:w >>XXtt52E[34m^JE[m:w >>XXtt53E[34m^JE[m:w >>XXtt61E[34m^JJE[mE[32;1H:w >>XXtt62E[34m^JE[m:w >>XXtt63E[34m^JE[m:w >>XXtt71E[34m^JE[m:w >>XXtt81E[34m^JE[m:w >>XXtt91E[34m^JE[m:w >>XXtt92E[34m^JE[m:w >>XXtt93E[34m^JE[m:"E[34m^JE[m::E[33;1H" Concatenate the results.E[34m^JE[m:" Make fileformat of test.out the native fileformat.E[34m^JE[m:" Add a newllE[34;1Hine at the end.E[34m^JE[m:set binaryE[34m^JE[m:e! test.outE[34m^JE[m:$r XXtt01E[34m^JE[m:$r XXtt02E[34m^JE[mGo1E[34m^[E[m:$r XXtt11E[34m^JE[m:$r XXtt12E[34m^^E[35;1HJE[m:$r XXtt13E[34m^JE[mGo2E[34m^[E[m:$r XXtt21E[34m^JE[m:$r XXtt22E[34m^JE[m:$r XXtt23E[34m^JE[mGo3E[34m^[E[m:$r XXtt31E[34m^JE[m:$r XXtt32E[34m^JE[m:$r XXtt33E[34m^JE[mGGE[36;1Ho4E[34m^[E[m:$r XXtt41E[34m^JE[m:$r XXtt42E[34m^JE[m:$r XXtt43E[34m^JE[mGo5E[34m^[E[m:$r XXtt51E[34m^JE[m:$r XXtt52E[34m^JE[m:$r XXtt53E[34m^JE[mGo6E[34m^[E[m:$r XXtt611E[37;1HE[34m^JE[m:$r XXtt62E[34m^JE[m:$r XXtt63E[34m^JE[mGo7E[34m^[E[m:$r XXtt71E[34m^JE[mGo8E[34m^[E[m:$r XXtt81E[34m^JE[mGo9E[34m^[E[m:$r XXtt91E[34m^JE[m:$r XXtt92E[34m^JE[m:$r XXttE[38;1Ht93E[34m^JE[mGo10E[34m^[E[m:$r XXUnixE[34m^JE[m:set nobinary ff&E[34m^JE[m:wE[34m^JE[m:qa!E[34m^JE[mENDTESTE[34m^J^JE[m1E[34m^JE[m2E[34m^JE[m3E[34m^JE[m4E[34m^JE[m5E[34m^JE[m6E[34m^JE[m7E[34m^JE[m8E[34m^JE[m9E[34m^JE[m10E[34m^J^JJE[mE[39;1HunixE[34m^JE[munixE[34m^JE[meofE[34m^J^JE[mdosE[39;23HE[KE[40;1HE[34m^JE[mdosE[40;6HE[KE[41;1HE[34m^JE[meofE[34m^J^JE[mmacE[41;13HE[KE[42;1HmacE[42;4HE[KE[43;1HE[34m^JE[mE[43;3HE[KE[60;1HE[KE[43;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" try reading and writing with 'fileformats' set to one formatE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=unixE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1HunixE[2;5HE[KE[3;1HdosE[34m^ME[mE[3;6HE[KE[4;1HdosE[34m^ME[mE[4;6HE[KE[5;1HmacE[34m^ME[mmacE[34m^ME[mE[5;11HE[KE[6;1HE[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt31E[?25l"XXtt31" E[60;10HE[KE[60;10H[New File] 5 lines, 29 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=dosE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line][CR missing][dos format] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[3;4HE[KE[4;1Hdos
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt32E[?25l"XXtt32" E[60;10HE[KE[60;10H[New File][dos format] 5 lines, 32 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H[CR missing][dos format] 222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=macE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[mac format] 4 lines, 28 charactersE[1;1HunixE[34m^JE[munixE[34m^JE[mdosE[1;16HE[KE[2;1HE[34m^JE[mdos
E[34m^JE[mmacE[3;7HE[KE[4;1Hmac
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt33E[?25l"XXtt33" E[60;10HE[KE[60;10H[New File][mac format] 4 lines, 28 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H[Incomplete last line][mac format] 5 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[34m^J^JE[mNote: This test will fail if "cat" iiE[2;1Hs not available.E[34m^J^JE[mSTARTTESTE[34m^JE[m:so small.vimE[34m^JE[m:" first write three test files, one in each formaaE[3;1HtE[34m^JE[m:set fileformat=unixE[34m^JE[m:set fileformats=E[34m^JE[m:/^1/w! XX1E[34m^JE[m:/^2/w! XX2E[34m^JE[m:/^3/w! XX3E[34m^JE[m:/^4/w! XX4E[34m^JJE[mE[4;1H:/^5/w! XX5E[34m^JE[m:/^6/w! XX6E[34m^JE[m:/^7/w! XX7E[34m^JE[m:/^8/w! XX8E[34m^JE[m:/^9/w! XX9E[34m^JE[m:/^10/w! XX10E[34m^JE[m:/^unix/;/eof/-11E[5;1Hw! XXUnixE[34m^JE[m:/^dos/;/eof/-1w! XXDosE[34m^JE[m:set bin noeolE[34m^JE[m:$w! XXMacE[34m^JE[m:set nobin eolE[34m^JE[m:bwipe XXUnix XXXE[6;1HDos XXMacE[34m^JE[m:" create mixed format filesE[34m^JE[m:if has("vms")E[34m^JE[m: !copy XXUnix,XXDos XXUxDs.E[34m^JE[m: !copy XXE[7;1HXUnix,XXMac XXUxMac.E[34m^JE[m: !copy XXDos,XXMac  XXDosMac.E[34m^JE[m: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[34m^JE[m:elssE[8;1Heif has("win32")E[34m^JE[m: !copy /b XXUnix+XXDos XXUxDsE[34m^JE[m: !copy /b XXUnix+XXMac XXUxMacE[34m^JE[m: !copy /b XXXE[9;1HDos+XXMac XXDosMacE[34m^JE[m: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[34m^JE[m:elseE[34m^JE[m: !cat XXUnix XXDos >XXUxDsE[34m^JJE[mE[10;1H: !cat XXUnix XXMac >XXUxMacE[34m^JE[m: !cat XXDos XXMac >XXDosMacE[34m^JE[m: !cat XXUnix XXDos XXMac >XXUxDsMcE[34m^^E[11;1HJE[m:endifE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' emptyE[34m^JE[m:set fileformat=unixE[34m^JE[m:e! XXUnnE[12;1HixE[34m^JE[m:w! test.outE[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt01E[34m^JE[m:e! XXMacE[34m^JE[m:w! XXtt02E[34m^JE[m:bwipe XXUnix XXDos XXMacE[34m^JE[m:set  E[13;1Hfileformat=dosE[34m^JE[m:e! XXUnixE[34m^JE[m:w! XXtt11E[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt12E[34m^JE[m:e! XXMacE[34m^JE[m:w! XXtt13E[34m^JE[m:bwipe XXUUE[14;1Hnix XXDos XXMacE[34m^JE[m:set fileformat=macE[34m^JE[m:e! XXUnixE[34m^JE[m:w! XXtt21E[34m^JE[m:e! XXDosE[34m^JE[m:w! XXtt22E[34m^JE[m:e! XXMacE[34m^JJE[mE[15;1H:w! XXtt23E[34m^JE[m:bwipe XXUnix XXDos XXMacE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' set to  E[16;1Hone formatE[34m^JE[m:set fileformats=unixE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt31E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=ddE[17;1HosE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt32E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt33E[34m^JE[m::E[18;1Hbwipe XXUxDsMcE[34m^JE[m:"E[34m^JE[m:" try reading and writing with 'fileformats' set to two formatsE[34m^JE[m:set fileffE[19;1Hormats=unix,dosE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt41E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:e! XXUxMacE[34m^JE[m:w! XXtt42E[34m^JE[m:bwipe XXUxxE[20;1HMacE[34m^JE[m:e! XXDosMacE[34m^JE[m:w! XXtt43E[34m^JE[m:bwipe XXDosMacE[34m^JE[m:set fileformats=unix,macE[34m^JE[m:e! XXUxDsE[34m^JE[m:w! XXtt55E[21;1H1E[34m^JE[m:bwipe XXUxDsE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt52E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:e! XXDosMacE[34m^JE[m:w! XXtt53E[34m^JE[m:bwipe XXXE[22;1HDosMacE[34m^JE[m:set fileformats=dos,macE[34m^JE[m:e! XXUxDsE[34m^JE[m:w! XXtt61E[34m^JE[m:bwipe XXUxDsE[34m^JE[m:e! XXUxMacE[34m^JE[m:w! XXtt622E[23;1HE[34m^JE[m:bwipe XXUxMacE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt63E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:"E[34m^JE[m:" try reading and writing withhE[24;1H 'fileformats' set to three formatsE[34m^JE[m:set fileformats=unix,dos,macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt71E[34m^JE[m:bbE[25;1Hwipe XXUxDsMcE[34m^JE[m:set fileformats=mac,dos,unixE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt81E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:" try  E[26;1Hwith 'binary' setE[34m^JE[m:set fileformats=mac,unix,dosE[34m^JE[m:set binaryE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt91E[34m^JE[m:bwipe  E[27;1HXXUxDsMcE[34m^JE[m:set fileformats=macE[34m^JE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt92E[34m^JE[m:bwipe XXUxDsMcE[34m^JE[m:set fileformats=dosE[34m^^E[28;1HJE[m:e! XXUxDsMcE[34m^JE[m:w! XXtt93E[34m^JE[m:"E[34m^JE[m:" Append "END" to each file so that we can see what the last wriiE[29;1Htten char was.E[34m^JE[m:set fileformat=unix nobinE[34m^JE[mggdGaENDE[34m^[E[m:w >>XXtt01E[34m^JE[m:w >>XXtt02E[34m^JE[m:w >>XXtt11E[34m^JE[m:w  E[30;1H>>XXtt12E[34m^JE[m:w >>XXtt13E[34m^JE[m:w >>XXtt21E[34m^JE[m:w >>XXtt22E[34m^JE[m:w >>XXtt23E[34m^JE[m:w >>XXtt31E[34m^JE[m:w >>XXtt32E[34m^JE[m:w >>XXttE[31;1Ht33E[34m^JE[m:w >>XXtt41E[34m^JE[m:w >>XXtt42E[34m^JE[m:w >>XXtt43E[34m^JE[m:w >>XXtt51E[34m^JE[m:w >>XXtt52E[34m^JE[m:w >>XXtt53E[34m^JE[m:w >>XXtt61E[34m^JJE[mE[32;1H:w >>XXtt62E[34m^JE[m:w >>XXtt63E[34m^JE[m:w >>XXtt71E[34m^JE[m:w >>XXtt81E[34m^JE[m:w >>XXtt91E[34m^JE[m:w >>XXtt92E[34m^JE[m:w >>XXtt93E[34m^JE[m:"E[34m^JE[m::E[33;1H" Concatenate the results.E[34m^JE[m:" Make fileformat of test.out the native fileformat.E[34m^JE[m:" Add a newllE[34;1Hine at the end.E[34m^JE[m:set binaryE[34m^JE[m:e! test.outE[34m^JE[m:$r XXtt01E[34m^JE[m:$r XXtt02E[34m^JE[mGo1E[34m^[E[m:$r XXtt11E[34m^JE[m:$r XXtt12E[34m^^E[35;1HJE[m:$r XXtt13E[34m^JE[mGo2E[34m^[E[m:$r XXtt21E[34m^JE[m:$r XXtt22E[34m^JE[m:$r XXtt23E[34m^JE[mGo3E[34m^[E[m:$r XXtt31E[34m^JE[m:$r XXtt32E[34m^JE[m:$r XXtt33E[34m^JE[mGGE[36;1Ho4E[34m^[E[m:$r XXtt41E[34m^JE[m:$r XXtt42E[34m^JE[m:$r XXtt43E[34m^JE[mGo5E[34m^[E[m:$r XXtt51E[34m^JE[m:$r XXtt52E[34m^JE[m:$r XXtt53E[34m^JE[mGo6E[34m^[E[m:$r XXtt611E[37;1HE[34m^JE[m:$r XXtt62E[34m^JE[m:$r XXtt63E[34m^JE[mGo7E[34m^[E[m:$r XXtt71E[34m^JE[mGo8E[34m^[E[m:$r XXtt81E[34m^JE[mGo9E[34m^[E[m:$r XXtt91E[34m^JE[m:$r XXtt92E[34m^JE[m:$r XXttE[38;1Ht93E[34m^JE[mGo10E[34m^[E[m:$r XXUnixE[34m^JE[m:set nobinary ff&E[34m^JE[m:wE[34m^JE[m:qa!E[34m^JE[mENDTESTE[34m^J^JE[m1E[34m^JE[m2E[34m^JE[m3E[34m^JE[m4E[34m^JE[m5E[34m^JE[m6E[34m^JE[m7E[34m^JE[m8E[34m^JE[m9E[34m^JE[m10E[34m^J^JJE[mE[39;1HunixE[34m^JE[munixE[34m^JE[meofE[34m^J^JE[mdosE[39;23HE[KE[40;1HE[34m^JE[mdosE[40;6HE[KE[41;1HE[34m^JE[meofE[34m^J^JE[mmacE[41;13HE[KE[42;1HmacE[42;4HE[KE[43;1HE[34m^JE[mE[43;3HE[KE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" try reading and writing with 'fileformats' set to two formatsE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=unix,dosE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1HunixE[2;5HE[KE[3;1HdosE[34m^ME[mE[3;6HE[KE[4;1HdosE[34m^ME[mE[4;6HE[KE[5;1HmacE[34m^ME[mmacE[34m^ME[mE[5;11HE[KE[6;1HE[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt41E[?25l"XXtt41" E[60;10HE[KE[60;10H[New File] 5 lines, 29 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxMacE[?25l"XXUxMac" E[60;11HE[KE[60;11H[Incomplete last line] 3 lines, 18 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
macE[34m^ME[mmacE[34m^ME[mE[3;12HE[KE[4;1HE[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt42E[?25l"XXtt42" E[60;10HE[KE[60;10H[New File] 3 lines, 19 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxMacE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXDosMacE[?25l"XXDosMac" E[60;12HE[KE[60;12H[Incomplete last line][dos format] 3 lines, 18 charactersE[1;1HdoE[1;4HE[KE[2;1Hdos
macE[34m^ME[mmacE[34m^ME[mE[3;12HE[KE[4;1HE[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt43E[?25l"XXtt43" E[60;10HE[KE[60;10H[New File][dos format] 3 lines, 20 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXDosMacE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=unix,macE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsE[?25l"XXUxDs" E[60;10HE[KE[60;10H4 lines, 20 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt51E[?25l"XXtt51" E[60;10HE[KE[60;10H[New File] 4 lines, 20 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt52E[?25l"XXtt52" E[60;10HE[KE[60;10H[New File] 5 lines, 29 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXDosMacE[?25l"XXDosMac" E[60;12HE[KE[60;12H[mac format] 4 lines, 18 charactersE[1;1HdoE[1;4HE[KE[2;1HE[34m^JE[mdos
E[34m^JE[mmacE[3;7HE[KE[4;1Hmac
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt53E[?25l"XXtt53" E[60;10HE[KE[60;10H[New File][mac format] 4 lines, 18 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXDosMacE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=dos,macE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsE[?25l"XXUxDs" E[60;10HE[KE[60;10H[CR missing][dos format] 4 lines, 20 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[3;4HE[KE[4;1Hdos
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt61E[?25l"XXtt61" E[60;10HE[KE[60;10H[New File][dos format] 4 lines, 22 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsE[?25l"test30.in" E[60;13HE[KE[60;13H[CR missing][dos format] 222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxMacE[?25l"XXUxMac" E[60;11HE[KE[60;11H[Incomplete last line][CR missing][dos format] 3 lines, 18 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
macE[34m^ME[mmacE[34m^ME[mE[3;12HE[KE[4;1HE[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt62E[?25l"XXtt62" E[60;10HE[KE[60;10H[New File][dos format] 3 lines, 22 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxMacE[?25l"test30.in" E[60;13HE[KE[60;13H[CR missing][dos format] 222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line][CR missing][dos format] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[3;4HE[KE[4;1Hdos
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt63E[?25l"XXtt63" E[60;10HE[KE[60;10H[New File][dos format] 5 lines, 32 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H[CR missing][dos format] 222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" try reading and writing with 'fileformats' set to three formatsE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=unix,dos,macE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt71E[?25l"XXtt71" E[60;10HE[KE[60;10H[New File] 5 lines, 29 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=mac,dos,unixE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt81E[?25l"XXtt81" E[60;10HE[KE[60;10H[New File] 5 lines, 29 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" try with 'binary' setE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=mac,unix,dosE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binaryE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt91E[?25l"XXtt91" E[60;10HE[KE[60;10H[New File][Incomplete last line] 5 lines, 28 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=macE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt92E[?25l"XXtt92" E[60;10HE[KE[60;10H[New File][Incomplete last line] 5 lines, 28 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe XXUxDsMcE[?25l"test30.in" E[60;13HE[KE[60;13H222 lines, 3463 charactersE[1;1HTest for a lot of variations of the 'fileformats' optionE[2;1HE[KE[3;1HNote: This test will fail if "cat" is not available.E[4;1HE[KE[5;1HSTARTTESTE[5;10HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:" first write three test files, one in each formatE[7;52HE[KE[8;1H:set fileformat=unixE[8;21HE[KE[9;1H:set fileformats=E[9;18HE[KE[10;1H:/^1/w! XX1E[10;12HE[KE[11;1H:/^2/w! XX2E[11;12HE[KE[12;1H:/^3/w! XX3E[12;12HE[KE[13;1H:/^4/w! XX4E[13;12HE[KE[14;1H:/^5/w! XX5E[14;12HE[KE[15;1H:/^6/w! XX6E[15;12HE[KE[16;1H:/^7/w! XX7E[16;12HE[KE[17;1H:/^8/w! XX8E[17;12HE[KE[18;1H:/^9/w! XX9E[18;12HE[KE[19;1H:/^10/w! XX10E[19;14HE[KE[20;1H:/^unix/;/eof/-1w! XXUnixE[20;26HE[KE[21;1H:/^dos/;/eof/-1w! XXDosE[21;24HE[KE[22;1H:set bin noeolE[22;15HE[KE[23;1H:$w! XXMacE[23;11HE[KE[24;1H:set nobin eolE[24;15HE[KE[25;1H:bwipe XXUnix XXDos XXMacE[25;26HE[KE[26;1H:" create mixed format filesE[26;29HE[KE[27;1H:if has("vms")E[27;15HE[KE[28;1H: !copy XXUnix,XXDos XXUxDs.E[28;29HE[KE[29;1H: !copy XXUnix,XXMac XXUxMac.E[29;30HE[KE[30;1H: !copy XXDos,XXMac  XXDosMac.E[30;31HE[KE[31;1H: !copy XXUnix,XXDos,XXMac XXUxDsMc.E[31;37HE[KE[32;1H:elseif has("win32")E[32;21HE[KE[33;1H: !copy /b XXUnix+XXDos XXUxDsE[33;31HE[KE[34;1H: !copy /b XXUnix+XXMac XXUxMacE[34;32HE[KE[35;1H: !copy /b XXDos+XXMac XXDosMacE[35;32HE[KE[36;1H: !copy /b XXUnix+XXDos+XXMac XXUxDsMcE[36;39HE[KE[37;1H:elseE[37;6HE[KE[38;1H: !cat XXUnix XXDos >XXUxDsE[38;28HE[KE[39;1H: !cat XXUnix XXMac >XXUxMacE[39;29HE[KE[40;1H: !cat XXDos XXMac >XXDosMacE[40;29HE[KE[41;1H: !cat XXUnix XXDos XXMac >XXUxDsMcE[41;36HE[KE[42;1H:endifE[42;7HE[KE[43;1H:"E[43;3HE[KE[44;1H:" try reading and writing with 'fileformats' emptyE[44;52HE[KE[45;1H:set fileformat=unixE[45;21HE[KE[46;1H:e! XXUnixE[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:e! XXDosE[48;10HE[KE[49;1H:w! XXtt01E[49;11HE[KE[50;1H:e! XXMacE[50;10HE[KE[51;1H:w! XXtt02E[51;11HE[KE[52;1H:bwipe XXUnix XXDos XXMacE[52;26HE[KE[53;1H:set fileformat=dosE[53;20HE[KE[54;1H:e! XXUnixE[54;11HE[KE[55;1H:w! XXtt11E[55;11HE[KE[56;1H:e! XXDosE[56;10HE[KE[57;1H:w! XXtt12E[57;11HE[KE[58;1H:e! XXMacE[58;10HE[KE[59;1H:w! XXtt13E[59;11HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=dosE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XXUxDsMcE[?25l"XXUxDsMc" E[60;12HE[KE[60;12H[Incomplete last line] 5 lines, 28 charactersE[1;1HunixE[1;6HE[KE[2;1Hunix
dosE[34m^ME[mE[3;7HE[KE[4;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
E[1mE[34m~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XXtt93E[?25l"XXtt93" E[60;10HE[KE[60;10H[New File][Incomplete last line] 5 lines, 28 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Append "END" to each file so that we can see what the last written char was.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat=unix nobinE[?25lE[1;1HE[?12lE[?25hE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[60;23HE[KE[1;1HE[?12lE[?25hE[?25lENDE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt01E[?25l"XXtt01" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt02E[?25l"XXtt02" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt11E[?25l"XXtt11" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt12E[?25l"XXtt12" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt13E[?25l"XXtt13" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt21E[?25l"XXtt21" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt22E[?25l"XXtt22" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt23E[?25l"XXtt23" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt31E[?25l"XXtt31" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt32E[?25l"XXtt32" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt33E[?25l"XXtt33" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt41E[?25l"XXtt41" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt42E[?25l"XXtt42" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt43E[?25l"XXtt43" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt51E[?25l"XXtt51" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt52E[?25l"XXtt52" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt53E[?25l"XXtt53" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt61E[?25l"XXtt61" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt62E[?25l"XXtt62" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt63E[?25l"XXtt63" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt71E[?25l"XXtt71" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt81E[?25l"XXtt81" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt91E[?25l"XXtt91" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt92E[?25l"XXtt92" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XXtt93E[?25l"XXtt93" E[60;10HE[KE[60;10H1 line, 4 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Concatenate the results.E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Make fileformat of test.out the native fileformat.E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Add a newline at the end.E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binaryE[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! test.outE[?25l"test.out" E[60;12HE[KE[60;12H2 lines, 10 charactersE[1;1Hunix
unixE[2;5HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt01E[?25l"XXtt01" E[60;10HE[KE[60;10H3 lines, 14 charactersE[3;1HdosE[34m^ME[mE[3;6HE[KE[4;1HdosE[34m^ME[mE[4;6HE[KE[5;1HENDE[5;4HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt02E[?25l"XXtt02" E[60;10HE[KE[60;10H2 lines, 13 charactersE[6;1HmacE[34m^ME[mmacE[34m^ME[mE[6;11HE[KE[7;1HENDE[7;4HE[KE[6;1HE[?12lE[?25h
E[?25l
1E[8;2HE[KE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt11E[?25l"XXtt11" E[60;10HE[KE[60;10H3 lines, 16 charactersE[9;1HunixE[34m^ME[mE[9;7HE[KE[10;1HunixE[34m^ME[mE[10;7HE[KE[11;1HENDE[11;4HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt12E[?25l"XXtt12" E[60;10HE[KE[60;10H3 lines, 14 charactersE[12;1HdosE[34m^ME[mE[12;6HE[KE[13;1HdosE[34m^ME[mE[13;6HE[KE[14;1HENDE[14;4HE[KE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt13E[?25l"XXtt13" E[60;10HE[KE[60;10H2 lines, 14 charactersE[15;1HmacE[34m^ME[mmacE[34m^M^ME[mE[15;13HE[KE[16;1HENDE[16;4HE[KE[15;1HE[?12lE[?25h
E[?25l
2E[17;2HE[KE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt21E[?25l"XXtt21" E[60;10HE[KE[60;10H3 lines, 15 charactersE[18;1HunixE[18;5HE[KE[19;1HunixE[19;5HE[KE[20;1HE[34m^ME[mENDE[20;6HE[KE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt22E[?25l"XXtt22" E[60;10HE[KE[60;10H3 lines, 15 charactersE[21;1HdosE[34m^ME[mE[21;6HE[KE[22;1HdosE[34m^ME[mE[22;6HE[KE[23;1HE[34m^ME[mENDE[23;6HE[KE[21;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt23E[?25l"XXtt23" E[60;10HE[KE[60;10H1 line, 12 charactersE[24;1HmacE[34m^ME[mmacE[34m^ME[mENDE[24;14HE[KE[24;1HE[?12lE[?25hE[?25l
3E[25;2HE[KE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt31E[?25l"XXtt31" E[60;10HE[KE[60;10H6 lines, 33 charactersE[26;1HunixE[26;5HE[KE[27;1HunixE[27;5HE[KE[28;1HdosE[34m^ME[mE[28;6HE[KE[29;1HdosE[34m^ME[mE[29;6HE[KE[30;1HmacE[34m^ME[mmacE[34m^ME[mE[30;11HE[KE[31;1HENDE[31;4HE[KE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt32E[?25l"XXtt32" E[60;10HE[KE[60;10H6 lines, 36 charactersE[32;1HunixE[34m^ME[mE[32;7HE[KE[33;1HunixE[34m^ME[mE[33;7HE[KE[34;1HdosE[34m^ME[mE[34;6HE[KE[35;1HdosE[34m^ME[mE[35;6HE[KE[36;1HmacE[34m^ME[mmacE[34m^M^ME[mE[36;13HE[KE[37;1HENDE[37;4HE[KE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt33E[?25l"XXtt33" E[60;10HE[KE[60;10H5 lines, 32 charactersE[38;1HunixE[38;5HE[KE[39;1HunixE[39;5HE[KE[40;1HdosE[34m^ME[mE[40;6HE[KE[41;1HdosE[34m^ME[mE[41;6HE[KE[42;1HmacE[34m^ME[mmacE[34m^ME[mENDE[42;14HE[KE[38;1HE[?12lE[?25hE[42;1HE[?25l
4E[43;2HE[KE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt41E[?25l"XXtt41" E[60;10HE[KE[60;10H6 lines, 33 charactersE[44;1HunixE[44;5HE[KE[45;1HunixE[45;5HE[KE[46;1HdosE[34m^ME[mE[46;6HE[KE[47;1HdosE[34m^ME[mE[47;6HE[KE[48;1HmacE[34m^ME[mmacE[34m^ME[mE[48;11HE[KE[49;1HENDE[49;4HE[KE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt42E[?25l"XXtt42" E[60;10HE[KE[60;10H4 lines, 23 charactersE[50;1HunixE[50;5HE[KE[51;1HunixE[51;5HE[KE[52;1HmacE[34m^ME[mmacE[34m^ME[mE[52;11HE[KE[53;1HENDE[53;4HE[KE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt43E[?25l"XXtt43" E[60;10HE[KE[60;10H4 lines, 24 charactersE[54;1HdosE[34m^ME[mE[54;6HE[KE[55;1HdosE[34m^ME[mE[55;6HE[KE[56;1HmacE[34m^ME[mmacE[34m^M^ME[mE[56;13HE[KE[57;1HENDE[57;4HE[KE[54;1HE[?12lE[?25h


E[?25l
5E[58;2HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt51E[?25l"XXtt51" E[60;10HE[KE[60;10H5 lines, 24 charactersE[59;1HunixE[59;5HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XXtt52E[?25l"XXtt52" E[60;10HE[KE[60;10H6 lines, 33 charactersE[1;59rE[1;1HE[5ME[1;60rE[55;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
END
unixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt53E[?25l"XXtt53" E[60;10HE[KE[60;10H3 lines, 22 charactersE[1;59rE[1;1HE[6ME[1;60rE[54;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
END
dosE[34m^ME[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HdosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[mENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H6E[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt61E[?25l"XXtt61" E[60;10HE[KE[60;10H5 lines, 26 charactersE[1;59rE[59;1H
E[1;60rE[59;1HunixE[34m^ME[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt62E[?25l"XXtt62" E[60;10HE[KE[60;10H4 lines, 26 charactersE[1;59rE[1;1HE[5ME[1;60rE[55;1HunixE[34m^ME[m
dosE[34m^ME[m
dosE[34m^ME[m
END
unixE[34m^ME[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt63E[?25l"XXtt63" E[60;10HE[KE[60;10H6 lines, 36 charactersE[1;59rE[1;1HE[4ME[1;60rE[56;1HunixE[34m^ME[m
macE[34m^ME[mmacE[34m^M^ME[m
END
unixE[34m^ME[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[5ME[1;60rE[55;1HunixE[34m^ME[m
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^M^ME[m
ENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H7E[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt71E[?25l"XXtt71" E[60;10HE[KE[60;10H6 lines, 33 charactersE[1;59rE[59;1H
E[1;60rE[59;1HunixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[5ME[1;60rE[55;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
ENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H8E[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt81E[?25l"XXtt81" E[60;10HE[KE[60;10H6 lines, 33 charactersE[1;59rE[59;1H
E[1;60rE[59;1HunixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[5ME[1;60rE[55;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[m
ENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H9E[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt91E[?25l"XXtt91" E[60;10HE[KE[60;10H5 lines, 32 charactersE[1;59rE[59;1H
E[1;60rE[59;1HunixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt92E[?25l"XXtt92" E[60;10HE[KE[60;10H5 lines, 32 charactersE[1;59rE[1;1HE[5ME[1;60rE[55;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[mEND
unixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXtt93E[?25l"XXtt93" E[60;10HE[KE[60;10H5 lines, 32 charactersE[1;59rE[1;1HE[5ME[1;60rE[55;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[mEND
unixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[4ME[1;60rE[56;1Hunix
dosE[34m^ME[m
dosE[34m^ME[m
macE[34m^ME[mmacE[34m^ME[mENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H10E[?12lE[?25hE[?25l
:E[?12lE[?25h$r XXUnixE[?25l"XXUnix" E[60;10HE[KE[60;10H2 lines, 10 charactersE[1;59rE[59;1H
E[1;60rE[59;1HunixE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset nobinary ff&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 121 lines, 664 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test31.in" 75 lines, 1545 charactersE[1;1HTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so tiny.vim
GA 1E[34m^[E[m:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1E[34m^[E[m: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 2E[34m^[E[m: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 1E[34m^[E[m: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 1E[34m^[E[m:q!
:w >>test.out
:unhide
:w >>test.out
:" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"
:set nohidden
A 2E[34m^[E[m:hide
:w >>test.out
:" test ":edit" failing in modified buffer when 'hidden' not set
:" write "testtext 3 3"
A 3E[34m^[E[m: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 nohiddenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for commands that close windows and/or buffers:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[12;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 60 lines, 1410 characters writtenE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[13;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[14ME[1;60rE[46;1HA 3E[34m^[E[m:close
:w >>test.out
:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
A 3E[34m^[E[m:close!
:w >>test.out
:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
GA 4E[34m^[E[m:all!
:1wincmd w
:w >>test.out
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso tiny.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HtesttextE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[9C1E[?12lE[?25hE[?25l
:E[?12lE[?25h$w! Xtest1E[?25l"Xtest1" E[60;10HE[KE[60;10H[New File] 1 line, 11 characters writtenE[59;10HE[?12lE[?25hE[?25l2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$w! Xtest2E[?25l"Xtest2" E[60;10HE[KE[60;10H[New File] 1 line, 11 characters writtenE[59;10HE[?12lE[?25hE[?25l3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$w! Xtest3E[?25l"Xtest3" E[60;10HE[KE[60;10H[New File] 1 line, 11 characters writtenE[59;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hn! Xtest1 Xtest2E[?25l"Xtest1" E[60;10HE[KE[60;10H1 line, 11 charactersE[1;1Htesttext E[1;12HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[11C1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hiddenE[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for working :n when hidden set; write "testtext 2"E[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnE[?25l"Xtest2" 1 line, 11 charactersE[1;10H2E[1;12HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 11 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for failing :rew when hidden not set; write "testtext 2 2"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nohiddenE[?25lE[1;1HE[?12lE[?25hE[?25lE[11C2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hrewE[?25lE[1mE[37mE[41mE37: No write since last change (add ! to override)E[1;12HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 13 characters appendedE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for working :rew when hidden set; write "testtext 1 1"E[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hiddenE[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hrewE[?25l"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)E[1;10H1 1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 13 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nohiddenE[?25lE[1;1HE[?12lE[?25hE[?25lE[13C1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hspE[?25lE[30;1HE[1mE[7mXtest1 [+]                                                                                      E[mE[31;1Htesttext 1 1 1E[31;15HE[KE[59;1HE[7mXtest1 [+]                                                                                      E[1;14HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hn Xtest2 Xtest3E[?25l"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)E[1;10H2 2E[1;14HE[KE[30;6HE[1mE[7m2 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hallE[?25l"Xtest3" 1 line, 11 charactersE[27mE[mE[HE[2JE[1;1Htesttext 1 1 1
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[7mXtest1 [+]                                                                                      E[mE[21;1Htesttext 2 2
E[1mE[34m~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[mE[39;1HE[1mE[7mXtest2 [+]                                                                                      E[mE[40;1Htesttext 3
E[1mE[34m~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mXtest3                                                                                          E[21;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h1wincmd wE[?25lE[20;1HE[1mE[7mXtest1 [+]                                                                                      E[mE[39;1HE[7mXtest2 [+]E[mE[1mE[7m E[mE[7m                                                                                      E[1;14HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 15 characters appendedE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test abandoning changed buffer, should be unloaded even when 'hidden' setE[?25lE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" write "testtext 2 2" twiceE[?25lE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hiddenE[?25lE[1;14HE[?12lE[?25hE[?25l1 1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[27mE[mE[HE[2JE[1;1Htesttext 2 2
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7mXtest2 [+]                                                                                      E[mE[31;1Htesttext 3
E[1mE[34m~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mXtest3                                                                                          E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 13 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunhideE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 13 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nohiddenE[?25lE[1;1HE[?12lE[?25hE[?25lE[13C2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhideE[?25lE[1;10H3E[1;12HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":edit" failing in modified buffer when 'hidden' not setE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" write "testtext 3 3"E[?25lE[1;1HE[?12lE[?25hE[?25lE[11C3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtest1E[?25lE[1mE[37mE[41mE37: No write since last change (add ! to override)E[1;12HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 13 characters appendedE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1"E[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hiddenE[?25lE[1;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he Xtest1E[?25l"Xtest1" 1 line, 11 charactersE[1;10H1E[1;12HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":close" not hiding when 'hidden' not set in modified buffer;E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" write "testtext 3 3 3"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xtest3E[?25l"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)E[1;10H3 3E[30;1HE[1mE[7mXtest3 [+]                                                                                      E[mE[31;1Htesttext 1E[31;11HE[KE[59;1HE[7mXtest1                                                                                          E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset nohiddenE[?25lE[1;1HE[?12lE[?25hE[?25lE[13C3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1mE[37mE[41mE37: No write since last change (add ! to override)E[1;14HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 15 characters appendedE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":close!" does hide when 'hidden' not set in modified buffer;E[?25lE[1;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" write "testtext 1"E[?25lE[1;14HE[?12lE[?25hE[?25l3 3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hclose!E[?25lE[1;10H1E[1;12HE[KE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nohiddenE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test ":all!" hides changed buffer; write "testtext 2 2 2"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp Xtest4E[?25l"Xtest4" [New File]E[1;1HE[KE[30;1HE[1mE[7mXtest4                                                                                          E[mE[31;1Htesttext 1E[31;11HE[KE[59;1HE[7mXtest1                                                                                          E[1;1HE[?12lE[?25hE[?25lE[m 4E[30;8HE[1mE[7m[+]E[1;2HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hall!E[?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)
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1wincmd wE[?25lE[1;1HE[2LE[1;1Htesttext 2 2 2
E[1mE[34m~                                                                                               E[mE[29;1HE[1mE[7mXtest2 [+]                                                                                      E[mE[30;1Htesttext 3 3 3 3E[30;17HE[KE[31;1HE[1mE[34m~                                                                                               E[mE[59;6HE[7m3 [+]E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 15 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test32.in" 57 lines, 1242 charactersE[1;1HTest 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=
E[34m^WE[mnO#include "Xtestfile"
ruE[34m^N^N^X^N^[^AE[m
OE[34m^P^X^N
^X^P^P^P^P^P
^X^P^P^X^X^N^X^N^N^[E[m
:se cpt=.,w,i
kOME[34m^N^X^N^X^N^X^X^X^P
^X^L^X^L^P^P^[E[m
:se cpt=kXtestfile
:w Xtest11.one
:w Xtest11.two
OE[34m^N^[E[mIXE[34m^[E[mAE[34m^X^F^N^[E[m
:se cpt=w
OSTE[34m^N^P^P^P^P^[E[m
:se cpt=u nohid
E[34m^WE[moOENE[34m^NE[m
unlE[34m^N^X^X^P^[E[m
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
OE[34m^X^]^X^D^X^D^X^X^D^X^D^X^D^X^DE[m
aE[34m^N^[E[m
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36GepetoE[8C/Tag/
asd     test11file      36G
MakefileE[8Cto      run
E[1mE[34m~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for insert expansionE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[23;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 24 lines, 384 characters writtenE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[24;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[48;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hse nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&E[?25l"Xtestfile" E[60;13HE[KE[60;13H[New] 3L, 57C writtenE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hse cot=E[?25lE[49;1HE[?12lE[?25hE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1H:se cot=E[31;9HE[KE[32;1HE[34m^WE[mnO#include "Xtestfile"
ruE[34m^N^N^X^N^[^AE[mE[33;15HE[KE[34;1HOE[34m^P^X^NE[mE[34;8HE[KE[35;1HE[34m^X^P^P^P^P^PE[mE[35;13HE[KE[36;1HE[34m^X^P^P^X^X^N^X^N^N^[E[m
:se cpt=.,w,iE[37;14HE[KE[38;1HkOME[1CE[34mN^X^N^X^N^X^X^X^P
^X^L^X^L^P^P^[E[m
:se cpt=kXtestfile
:w Xtest11.oneE[41;15HE[KE[42;1H:w Xtest11.two
OE[34m^N^[E[mIXE[1CE[34m[E[mAE[34m^X^F^N^[E[mE[44;9HwE[44;10HE[KE[45;2HSTE[1CE[34mN^P^P^P^P^[E[mE[45;16HE[KE[46;1H:se cpt=u nohid
E[34m^WE[moOENE[34m^NE[mE[47;9HE[KE[48;1HunlE[34m^N^X^X^P^[E[m
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
OE[34m^X^]^X^D^X^D^X^X^D^X^D^X^D^X^DE[m
aE[34m^N^[E[m
:wq! test.out
ENDTESTE[53;8HE[KE[55;1Hstart of testfileE[55;25HE[KE[56;1Hrun1E[56;9HE[KE[57;1Hrun2E[57;5HE[KE[58;1Hend of testfileE[58;16HE[KE[59;1HE[7mtest32.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Keyword completion (^N^P) E[mE[32mmatch 1 of 4E[2;3HE[mE[60;29HE[KE[60;1Hmatch in file test32.inE[1m^E[mE[60;24HE[KE[60;1HE[1m-- Keyword completion (^N^P) E[mE[32mmatch 2 of 4E[2;5HE[mE[60;29HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mAdding Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Adding Keyword completion (^N^P) Word from other lineE[2;10HE[1;29rE[mE[1;1HE[2LE[1;60rE[1;1H#include "Xtestfile"
run1 run2E[30;11HE[1mE[7m[+]E[2;10HE[?12lE[?25hE[mE[60;1HE[KE[?25lE[60;1HE[1m-- Adding Keyword completion (^N^P) Word from other lineE[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[2;9HE[?12lE[?25hE[?25l3E[?12lE[?25h
E[?25lE[60;1HE[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1HE[1m-- Keyword completion (^N^P) E[mE[32mmatch 1 of 103E[3;5HE[mE[60;29HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mAdding Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1HE[1m-- Adding Keyword completion (^N^P) Word from other lineE[3;10HE[mE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mKeyword Local completion (^N^P) -- Searching...E[mE[60;36HE[32mmatch 1 of 4E[mE[1m.E[mE[60;48HE[KE[4;5HE[60;35HE[KE[60;35HE[1m E[mE[32mmatch 2 of 4E[4;5HE[mE[60;35HE[KE[60;35HE[1m E[mE[32mmatch 3 of 4E[4;10HE[mE[60;35HE[KE[60;35HE[1m E[mE[32mmatch 4 of 4E[4;8HE[mE[60;35HE[KE[60;35HE[1m E[mE[31mBack at originalE[4;1HE[mE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mKeyword Local completion (^N^P) -- Searching...E[mE[60;36HE[32mmatch 1 of 4E[mE[1m.E[mE[60;48HE[KE[5;5HE[60;35HE[KE[60;35HE[1m E[mE[32mmatch 2 of 4E[5;5HE[mE[60;35HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mKeyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[5;5HE[mE[60;29HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mAdding Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1HE[1m-- Adding Keyword completion (^N^P) E[mE[32mmatch 1 of 2E[5;10HE[mE[60;36HE[KE[60;1Hmatch in file test32.inE[1meE[mE[60;24HE[KE[60;1HE[1m-- Adding Keyword completion (^N^P) Word from other lineE[5;10HE[3;29rE[mE[3;1HE[3LE[1;60rE[3;1Hrun3 run3

run1 run2E[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- Adding Keyword completion (^N^P) Word from other lineE[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[5;9HE[?12lE[?25h
E[?25lE[60;1H:E[?12lE[?25hse cpt=.,w,iE[?25lE[6;1HE[?12lE[?25hE[5;9HE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;4HE[1mKeyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;9HE[32m included file: XtestfileE[mmatch in file test32.inE[60;24HE[KE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[5;9HE[mE[60;29HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mAdding Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;9HE[32m included file: XtestfileE[mmatch in file test32.inE[60;24HE[KE[60;1HE[1m-- Adding Keyword completion (^N^P) The only matchE[5;19HE[mE[60;36HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mAdding Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;9HE[32m included file: XtestfileE[mmatch in file test32.inE[60;24HE[KE[60;1HE[1m-- Adding Keyword completion (^N^P) The only matchE[5;28HE[mE[60;36HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mKeyword Local completion (^N^P) -- Searching...E[mE[60;36HE[32mmatch 1 of 3E[mE[1m.E[mE[60;48HE[KE[5;29HE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Whole line completion (^L^N^P)^ U-- Searching...E[mE[32mScanning: test32.inE[mE[1meE[mE[60;20HE[KE[60;1HE[1m-- Whole line completion (^L^N^P) E[mE[32mmatch 1 of 54E[6;29HE[mE[60;4HE[1mINSERT --eE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) E[mE[32mmatch 1 of 54E[mE[60;4HE[1mAddinge Whole line completion (^L^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1meE[mE[60;20HE[KE[60;1HE[1m-- Adding Whole line completion (^L^N^P) The only matchE[7;29HE[mE[60;41HE[KE[60;41HE[1m E[mE[31mBack at originalE[7;1HE[mE[60;41HE[KE[60;41HE[1m The only matchE[7;29HE[5;29rE[mE[5;1HE[3LE[1;60rE[5;1HMakefileE[8Cto      run3
MakefileE[8Cto      run3
MakefileE[8Cto      run3E[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[7;28HE[?12lE[?25hE[8;9HE[?25lE[60;1H:E[?12lE[?25hse cpt=kXtestfileE[?25lE[8;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw Xtest11.oneE[?25l"Xtest11.one" [New] 9L, 104C writtenE[30;1HE[1mE[7mXtest11.one+   E[8;9HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw Xtest11.twoE[?25l"Xtest11.two" [New] 9L, 104C writtenE[8;9HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;4HE[1mKeyword completion (^N^P) -- Searching...E[mE[32mScanning dictionary: XtestfileE[mE[1m-E[mE[60;31HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Keyword completion (^N^P) E[mE[32mmatch 1 of 9E[8;7HE[8;29rE[mE[8;1HE[LE[1;60rE[8;1Htest11E[30;13HE[1mE[7m[+]E[8;7HE[mIE[?12lE[?25h E[60;1HE[KE[?25lE[60;1HE[1m-- Keyword completion (^N^P) E[mE[32mmatch 1 of 9E[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[8;6HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[8;1HXtest11E[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- File name completion (^F^N^P)s ^-- Searching...E[mE[60;34HE[32mmatch 1 of 2E[mE[1m.E[mE[60;46HE[KE[8;12HE[60;33HE[KE[60;33HE[1m E[mE[32mmatch 2 of 2E[8;12HE[m.twoE[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[8;11HE[?12lE[?25hE[9;9HE[?25lE[60;1H:E[?12lE[?25hse cpt=wE[?25lE[9;9HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Keyword completion (^N^P) The only matchE[9;10HE[mE[60;29HE[KE[60;29HE[1m E[mE[31mBack at originalE[9;3HE[mE[60;29HE[KE[60;1Hmatch in file test32.inE[1m^E[mE[60;24HE[KE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[9;10HE[mE[60;29HE[KE[60;29HE[1m E[mE[31mBack at originalE[9;3HE[mE[60;29HE[KE[60;1Hmatch in file test32.inE[1m^E[mE[60;24HE[KE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[9;10HE[9;29rE[mE[9;1HE[LE[1;60rE[9;1HSTARTTESTE[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[9;9HE[?12lE[?25hE[10;9HE[?25lE[60;1H:E[?12lE[?25hse cpt=u nohidE[?25lE[10;9HE[?12lE[?25hE[?25lE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[10;9HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;4HE[1mKeyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Keyword completion (^N^P) The only matchE[10;8HE[mE[60;1HE[KE[60;1HE[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Keyword completion (^N^P) E[mE[32mmatch 1 of 3E[11;7HE[mE[60;29HE[KE[60;1HE[KE[60;1HE[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1mKeyword completion (^N^P) -- Searching...E[mE[32mScanning: test32.inE[mE[1moE[mE[60;20HE[KE[60;1Hmatch in file test32.inE[1m-- Keyword completion (^N^P) The only matchE[11;7HE[10;59rE[mE[10;1HE[2LE[1;60rE[10;1HENDTEST
unlessE[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[11;6HE[?12lE[?25hE[12;6HE[?25lE[60;1H:E[?12lE[?25hse cpt=t,d def=^\\k* tags=Xtestfile notagbsearchE[?25lE[12;6HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Tag completion (^]^N^P)^ N-- Searching...E[mE[60;28HE[32mmatch 1 of 3E[mE[1m.E[mE[60;40HE[KE[12;7HE[60;4HE[1mINSERTm --eE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) E[mE[32mmatch 1 of 3E[mE[60;4HE[1mDefinition completion (^D^N^P)^ U-- Searching...E[mE[60;50HE[KE[60;1HE[32mScanning included file: XtestfileE[mE[1m E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Definition completion (^D^N^P) The only matchE[12;11HE[60;4HINSERTt --nE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- Addinge Definition completion (^D^N^P) -- Searching...E[mE[32mScanning included file: XtestfileE[mE[1m^E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Adding Definition completion (^D^N^P) The only matchE[12;20HE[60;4HINSERT --fE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- INSERTe --^E[mE[60;13HE[KE[60;4HE[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Definition completion (^D^N^P)^ U-- Searching...E[mE[32mScanning included file: XtestfileE[mE[1m E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Definition completion (^D^N^P) The only matchE[12;25HE[60;4HINSERTt --nE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- Addinge Definition completion (^D^N^P) -- Searching...E[mE[32mScanning included file: XtestfileE[mE[1m^E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Adding Definition completion (^D^N^P) The only matchE[12;37HE[60;4HINSERT --fE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- Addinge Definition completion (^D^N^P) -- Searching...E[mE[32mScanning included file: XtestfileE[mE[1m^E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Adding Definition completion (^D^N^P) The only matchE[12;38HE[60;4HINSERT --fE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- Addinge Definition completion (^D^N^P) -- Searching...E[mE[32mScanning included file: XtestfileE[mE[1m^E[mE[60;34HE[KE[60;1Hmatch in file XtestfileE[60;24HE[KE[60;1HE[1m-- Adding Definition completion (^D^N^P) Word from other lineE[12;42HE[60;4HINSERT --fE[mE[60;13HE[KE[60;1HE[KE[60;1HE[1m-- Keyword completion (^N^P) -- Searching...E[mE[32mScanning tags.E[mE[1mpE[mE[60;15HE[KE[60;10HE[32mincluded file: XtestfileE[mE[1m-- Keyword completion (^N^P) The only matchE[13;4HE[12;59rE[mE[12;1HE[2LE[1;60rE[12;1Htest11file      36GepetoE[8C/Tag/ asd
asdE[?12lE[?25hE[60;1HE[KE[?25lE[60;1HE[1m-- Keyword completion (^N^P) The only matchE[mE[60;1HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[13;3HE[?12lE[?25h
ruE[?25lE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 15L, 175C written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test33.in" 34 lines, 616 charactersE[1;1HTest for 'lisp'
If the lisp feature is not enabled, this will fail!

STARTTEST
:so small.vim
:set lisp
/^(defun
=G:/^(defun/,$w! test.out
:q!
ENDTEST

(defun html-file (base)
(format nil "~(~A~).html" base))

(defmacro page (name title &rest body)
(let ((ti (gensym)))
`(with-open-file (*standard-output*
(html-file ,name)
:direction :output
:if-exists :supersede)
(let ((,ti ,title))
(as title ,ti)
(with center
(as h2 (string-upcase ,ti)))
(brs 3)
,@body))))

;;; Utilities for generating links

(defmacro with-link (dest &rest body)
`(progn
(format t "<a href=\"~A\">" (html-file ,dest))
,@body
(princ "</a>")))
E[1mE[34m~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for 'lisp'E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 5 lines, 63 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[10;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset lispE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^(defunE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1H22 lines to indent...23E[7Cindented E[60;19HE[KE[13;1H  (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 E[8C(html-file ,name)
                  E[7C:direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              E[15C(as title ,ti)
            E[17C(with center
                            E[7C(as h2 (string-upcase ,ti)))
       E[22C(brs 3)
          E[19C,@body))))E[31;1H  `(progn
    (format t "<a href=\"~A\">" (html-file ,dest))
    ,@body
    (princ "</a>")))E[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^(defun/,$w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 23 lines, 544 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test34.in" 76 lines, 1435 charactersE[1;1HTest for user functions.
Also test an <expr> 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 <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()
:let retval = "nop"
/^here
CE[34m^RE[m=Table("xxx", 4, "asdf")
 E[34m^RE[m=Compute(45, 0, "retval")
 E[34m^RE[m=retval
 E[34m^RE[m=Compute(45, 5, "retval")
 E[34m^RE[m=retval
 E[34m^RE[m=g:FuncRef(333)

XX+-XX
---*---E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for user functions.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 68 lines, 1283 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[15ME[1;60rE[45;1H(one
(two
[(one againE[34m^[E[m: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!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction Table(title, ...)E[?25l
:  E[?12lE[?25h:  let ret = a:title
E[?25l:  E[?12lE[?25h:  let idx = 1
E[?25l:  E[?12lE[?25h:  while idx <= a:0
E[?25l:    E[?12lE[?25h:    exe "let ret = ret . a:" . idx
E[?25l:    E[?12lE[?25h:    let idx = idx + 1
E[?25l:    E[?12lE[?25h:  endwhile
E[?25l:  E[?12lE[?25h:  return ret
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[8LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction
:func Expr1()
:  normal! vE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunction Compute(n1, n2, divname)E[?25l
:  E[?12lE[?25h:  if a:n2 == 0
E[?25l:    E[?12lE[?25h:    return "fail"
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
E[?25l:  E[?12lE[?25h:  return "ok"
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[6LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunctionE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunc Expr1()E[?25l
:  E[?12lE[?25h:  normal! v
E[?25l:  E[?12lE[?25h:  return "111"
E[?25l:  E[?12lE[?25h:endfuncE[1;1HE[3LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunc Expr2()E[?25l
:  E[?12lE[?25h:  call search('XX', 'b')
E[?25l:  E[?12lE[?25h:  return "222"
E[?25l:  E[?12lE[?25h:endfuncE[1;1HE[3LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunc ListItem()E[?25l
:  E[?12lE[?25h:  let g:counter += 1
E[?25l:  E[?12lE[?25h:  return g:counter . '. '
E[?25l:  E[?12lE[?25h:endfuncE[1;1HE[3LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunc ListReset()E[?25l
:  E[?12lE[?25h:  let g:counter = 0
E[?25l:  E[?12lE[?25h:  return ''
E[?25l:  E[?12lE[?25h:endfuncE[1;1HE[3LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunc FuncWithRef(a)E[?25l
:  E[?12lE[?25h:  unlet g:FuncRef
E[?25l:  E[?12lE[?25h:  return a:a
E[?25l:  E[?12lE[?25h:endfuncE[1;1HE[3LE[?25lE[1;1H:  if a:n2 == 0
:    return "fail"
:  endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet g:FuncRef=function("FuncWithRef")E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet counter = 0E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hinoremap <expr> ( ListItem()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hinoremap <expr> [ ListReset()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25himap <expr> + Expr1()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25himap <expr> * Expr2()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet retval = "nop"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^hereE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HhereE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lher$
=E[?12lE[?25hTable("xxx", 4, "asdf")E[?25lE[60;1HE[KE[60;1H=E[?12lE[?25hCompute(45, 0, "retval")E[?25lE[60;1HE[KE[60;1H=E[?12lE[?25hretvalE[?25lE[60;1HE[KE[60;1H=E[?12lE[?25hCompute(45, 5, "retval")E[?25lE[60;1HE[KE[60;1H=E[?12lE[?25hretvalE[?25lE[60;1HE[KE[60;1H=E[?12lE[?25hg:FuncRef(333)
E[?25lE[1mE[37mE[41mError detected while processing function Expr1:E[m
E[33mline    1:E[m
E[1mE[37mE[41mE523: Not allowed hereE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[4LE[?25lE[1;1H:func Expr1()
:  normal! v
:  return "111"
:endfunc
:func Expr2()
:  call search('XX', 'b')
:  return "222"
:endfuncE[8;9HE[KE[9;2Hfunc ListItem()
:  let g:counter += 1
:  return g:counter . '. '
:endfuncE[12;9HE[KE[13;2Hfunc ListReset()
:  let g:counter = 0
:  return ''E[15;13HE[KE[16;2HendfuncE[16;9HE[KE[17;2Hfunc FuncWithRef(a)
:  unlet g:FuncRef
:  return a:aE[19;14HE[KE[20;2HendfuncE[20;9HE[KE[21;2Hlet g:FuncRef=function("FuncWithRef")
:let counter = 0E[22;17HE[KE[23;2Hinoremap <expr> ( ListItem()
:inoremap <expr> [ ListReset()
:imap <expr> + Expr1()
:imap <expr> * Expr2()E[26;23HE[KE[27;6Hretval = "nop"
/^heE[28;7HE[KE[29;1HCE[34m^RE[m=Table("xxx", 4, "asdf")E[29;28HE[KE[30;1H E[34m^RE[m=Compute(45, 0, "retval")
 E[34m^RE[m=retvalE[31;11HE[KE[32;1H E[34m^RE[m=Compute(45, 5, "retval")
 E[34m^RE[m=retval
 E[3Cg:FuncRef(333)E[34;19HE[KE[35;2HE[KE[36;1HXX+-XXE[36;7HE[KE[37;1H---*---E[37;8HE[KE[38;1H(oneE[38;5HE[KE[39;1H(twoE[39;5HE[KE[40;1H[(one againE[34m^[E[m: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 ComputeE[45;17HE[KE[46;2Hdelfunc Expr1E[46;15HE[KE[47;2Hdelfunc Expr2E[47;15HE[KE[48;2Hdelfunc ListItemE[49;10HListReset
:unlet retval counter
:q!E[51;4HE[KE[52;1HENDTESTE[52;8HE[KE[53;1HE[KE[54;1Hxxx4asdf fail nop ok 9 333
XX111-XXE[55;9HE[KE[56;1H---222---
1. oneE[57;7HE[KE[58;1H2. twoE[59;1HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l1. one againE[?12lE[?25hE[?25l
:E[?12lE[?25hcall append(line('$'), max([1, 2, 3]))E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall extend(g:, {'max': function('min')})E[?25lE[1mE[37mE[41mE704: Funcref variable name must start with a capital: maxE[59;12HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), max([1, 2, 3]))E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-7,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 8 lines, 77 characters writtenE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc TableE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc ComputeE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc Expr1E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc Expr2E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc ListItemE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc ListResetE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet retval counterE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test35.in" 21 lines, 448 charactersE[1;1HTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,
and octal numbers.

STARTTEST
/^start-here
:set nrformats=octal,hex
jE[34m^AE[m102E[34m^X^AE[mlE[34m^XE[mlE[34m^AE[m64E[34m^AE[m128E[34m^XE[m$E[34m^XE[m
:set nrformats=octal
0E[34m^AE[m102E[34m^X^AE[mlE[34m^XE[m2E[34m^AE[mw65E[34m^AE[m129E[34m^XE[mblx6lD
:set nrformats=hex
0101E[34m^XE[ml257E[34m^X^AE[mTxldt E[34m^AE[m E[34m^XE[m E[34m^XE[m
:set nrformats=
0200E[34m^XE[ml100E[34m^XE[mw78E[34m^X^AE[mk
:$-3,$wq! test.out
ENDTEST

start-here
100     0x100     077     0
100     0x100     077
100     0x100     077     0xfF     0xFf
100     0x100     077
E[1mE[34m~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 10 lines, 200 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[15;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[16;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start-hereE[?25lE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nrformats=octal,hexE[?25lE[17;1HE[?12lE[?25h
E[?25l101E[?12lE[?25hE[?25l-1     0x100     077     0E[18;27HE[KE[18;2HE[?12lE[?25hE[?25l0     0x100     077     0E[18;26HE[KE[18;1HE[?12lE[?25h0E[?25lE[7C0ffE[?12lE[?25hfE[?25l     0100     0E[18;20HE[?12lE[?25hE[?25l20E[?12lE[?25hE[?25l00E[?12lE[?25h0     E[?25l-1E[?12lE[?25hE[19;26HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nrformats=octalE[?25lE[19;26HE[?12lE[?25hE[?25l101E[?12lE[?25hE[?25l-1     0x100     077 -E[?12lE[?25hE[?25l0     0x100     077 E[?12lE[?25h0E[?25l     -1x100     077E[19;8HE[?12lE[?25hE[?25l1x100     077 E[19;7HE[?12lE[?25hE[10CE[?25l0200E[?12lE[?25hE[?25l1777777777777777777777E[?12lE[?25hE[19;17H0E[?25l7E[20C E[19;18HE[?12lE[?25h777777E[?25lE[19;24HE[KE[19;23HE[?12lE[?25hE[20;23HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nrformats=hexE[?25lE[20;23HE[?12lE[?25hE[?25l-1     0x100     077     0xfF     0xFfE[20;39HE[KE[20;2HE[?12lE[?25h1E[?25lE[7Cffffffffffffffff     077     0xfF     0xFfE[20;25HE[?12lE[?25hE[?25lE[20;10H0000000000000000E[?12lE[?25hE[20;10H0E[?25l     077     0xfF     0xFfE[20;39HE[KE[20;11HE[?12lE[?25hE[?25lE[7C8E[?12lE[?25h8E[?25lE[7CFEE[?12lE[?25hEE[?25lE[7CfeE[?12lE[?25hE[21;26HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nrformats=E[?25lE[21;26HE[?12lE[?25hE[?25l-100     0x100     077-10E[?12lE[?25h0E[?25l     -100x100     077E[21;13HE[?12lE[?25hE[10CE[?25l-001E[?12lE[?25hE[?25l000 E[?12lE[?25hE[20;25HE[21;25HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-3,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 120 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test36.in" 105 lines, 1950 charactersE[1;1HTest 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//gE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest character classes in regexp using regexpengine 0, 1, 2.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 98 lines, 1775 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[43ME[1;60rE[17;1Hp:s/\%#=1\H//g
p:s/\%#=2\H//g
p:s/\%#=0[^A-Za-z_]//g
p:s/\%#=1[^A-Za-z_]//g
p:s/\%#=2[^A-Za-z_]//g
p:s/\%#=0\a//g
p:s/\%#=1\a//g
p:s/\%#=2\a//g
p:s/\%#=0[A-Za-z]//g
p:s/\%#=1[A-Za-z]//g
p:s/\%#=2[A-Za-z]//g
p:s/\%#=0\A//g
p:s/\%#=1\A//g
p:s/\%#=2\A//g
p:s/\%#=0[^A-Za-z]//g
p:s/\%#=1[^A-Za-z]//g
p:s/\%#=2[^A-Za-z]//g
p:s/\%#=0\l//g
p:s/\%#=1\l//g
p:s/\%#=2\l//g
p:s/\%#=0[a-z]//g
p:s/\%#=1[a-z]//g
p:s/\%#=2[a-z]//g
p:s/\%#=0\L//g
p:s/\%#=1\L//g
p:s/\%#=2\L//g
p:s/\%#=0[^a-z]//g
p:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
:/^start-here/+1,$wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start-here/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hstart-hereE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;8HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\d//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\d//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\d//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[0-9]//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[0-9]//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[0-9]//gE[?25l10 substitutions on 1 lineE[59;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;87HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\D//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\D//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\D//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^0-9]//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^0-9]//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^0-9]//gE[?25l72 substitutions on 1 lineE[59;1H0123456789E[59;11HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\o//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\o//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\o//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[0-7]//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[0-7]//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[0-7]//gE[?25l8 substitutions on 1 lineE[59;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;89HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\O//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\O//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\O//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^0-7]//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^0-7]//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^0-7]//gE[?25l74 substitutions on 1 lineE[59;1H01234567E[59;9HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\x//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\x//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\x//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[0-9A-Fa-f]//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[0-9A-Fa-f]//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[0-9A-Fa-f]//gE[?25l22 substitutions on 1 lineE[59;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;75HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\X//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\X//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\X//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^0-9A-Fa-f]//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^0-9A-Fa-f]//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^0-9A-Fa-f]//gE[?25l60 substitutions on 1 lineE[59;1H0123456789ABCDEFabcdefE[59;23HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\w//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\w//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\w//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[0-9A-Za-z_]//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[0-9A-Za-z_]//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[0-9A-Za-z_]//gE[?25l36 substitutions on 1 lineE[59;29H:;<=>?@[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;61HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\W//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\W//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\W//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^0-9A-Za-z_]//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^0-9A-Za-z_]//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^0-9A-Za-z_]//gE[?25l46 substitutions on 1 lineE[59;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyzE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\h//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\h//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\h//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[A-Za-z_]//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[A-Za-z_]//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[A-Za-z_]//gE[?25l26 substitutions on 1 lineE[59;46H[\]^`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;71HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\H//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\H//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\H//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^A-Za-z_]//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^A-Za-z_]//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^A-Za-z_]//gE[?25l56 substitutions on 1 lineE[59;1HABCDEFGHIXYZ_abcdefghiwxyzE[59;27HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\a//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\a//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\a//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[A-Za-z]//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[A-Za-z]//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[A-Za-z]//gE[?25l25 substitutions on 1 lineE[59;46H[\]^_`{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;72HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\A//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\A//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\A//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^A-Za-z]//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^A-Za-z]//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^A-Za-z]//gE[?25l57 substitutions on 1 lineE[59;1HABCDEFGHIXYZabcdefghiwxyzE[59;26HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\l//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\l//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\l//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[a-z]//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[a-z]//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[a-z]//gE[?25l13 substitutions on 1 lineE[59;64H{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;84HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\L//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\L//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\L//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^a-z]//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^a-z]//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^a-z]//gE[?25l69 substitutions on 1 lineE[59;1HabcdefghiwxyzE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\u//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\u//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\u//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[A-Z]//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[A-Z]//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[A-Z]//gE[?25l12 substitutions on 1 lineE[59;46H[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[59;85HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0\U//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1\U//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2\U//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=0[^A-Z]//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=1[^A-Z]//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;9HE[34m^L^ME[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~E[34m^?~@~B~P~[E[m¦±¼ÇÓéE[60;1HE[KE[59;9HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\%#=2[^A-Z]//gE[?25l70 substitutions on 1 lineE[59;1HABCDEFGHIXYZE[59;14HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start-here/+1,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 96 lines, 4032 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test37.in" 116 lines, 3262 charactersE[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim
:set noscrollbind
:set scrollopt=ver,jump
:set scrolloff=2
:set nowrap
:set noequalalways
:set splitbelow
:" TEST using two windows open to one buffer, one extra empty window
:split
:new
E[34m^WE[mt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
E[34m^WE[mj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --
:" TEST scrolling down
L5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
:" TEST horizontal scrolling
:set scrollopt+=hor
gg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:
E[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=hor
:" ****** tests using two different buffers *****
E[34m^WE[mtE[34m^WE[mj:
:close
E[34m^WE[mt:
:set noscrollbind
:/^start of window 2$/,/^end of window 2$/y
:new
E[34m^WE[mtE[34m^WE[mj4"zpGp:
E[34m^WE[mt/^start of window 1$/
zt:
:set scrollbind
E[34m^WE[mj:
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --
:" TEST scrolling down
L5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
:" TEST horizontal scrolling
:set scrollopt+=hor
gg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:
E[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=hor
:" TEST syncbind
E[34m^WE[mt:set noscbE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[2;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 72 lines, 1498 characters writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[3;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[16ME[1;60rE[44;1HggLE[34m^WE[mj:set noscb
ggL:set scb
E[34m^WE[mt:set scb
GE[34m^WE[mjG:syncbind
HkE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpE[34m^WE[mtyyE[34m^WE[mbp:
E[34m^WE[mt:set noscb
ggLE[34m^WE[mj:set noscb
ggL:set scb
E[34m^WE[mt:set scb
E[34m^WE[mtGE[34m^WE[mjGE[34m^WE[mt:syncbind
HkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
E[34m^WE[mtH3kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****
:w! test.outE[13C" Write contents of this file
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noscrollbindE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollopt=ver,jumpE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrolloff=2E[?25lE[1;1H/^start of window 2$/
zt:E[2;4HE[KE[3;1H:set scrollbE[3;16HE[KE[4;1H:" -- start of tests --
:" TEST scrolling down
L5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:E[7;19HupE[7;21HE[KE[8;1HE[34m^WE[mtH4kE[2CjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[2CtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:E[9;9Hhorizontal scrolling
:set scrollopt+=horE[10;20HE[KE[11;1Hgg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:
E[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=horE[13;20HE[KE[14;1H:" ****** tests using two different buffers *****
E[34m^WE[mtE[34m^WE[mj:E[15;8HE[KE[16;2HcloseE[16;7HE[KE[17;4H:E[17;5HE[KE[18;2Hset noscrollbind
:/^start of window 2$/,/^end of window 2$/y
:newE[20;6HE[KE[21;1HE[34m^WE[mtE[34m^WE[mj4"zpGp:E[21;14HE[KE[22;1HE[34m^WE[mt/^start of window 1$/
zt:E[23;4HE[KE[24;1H:set scrollbindE[24;16HE[KE[25;1HE[34m^WE[mj:
/^start of window 2$/
zt:E[27;4HE[KE[28;1H:set scrollbE[28;16HE[KE[29;1H:" -- start of tests --
:" TEST scrolling down
L5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:E[32;19HupE[32;21HE[KE[33;1HE[34m^WE[mtH4kE[2CjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[2CtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:E[34;9Hhorizontal scrolling
:set scrollopt+=horE[35;20HE[KE[36;1Hgg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:
E[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=horE[38;20HE[KE[39;1H:" TEST syncbindE[39;17HE[KE[40;1HE[34m^WE[mt:set noscbE[40;14HE[KE[41;1HggLE[34m^WE[mj:set noscb
ggL:set scbE[42;12HE[KE[43;1HE[34m^WE[mt:set scbE[43;12HE[KE[44;1HGE[34m^WE[mjG:syncbind
HkE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpE[34m^WE[mtyyE[34m^WE[mbp:
E[34m^WE[mt:set noscbE[46;14HE[KE[47;1HggLE[34m^WE[mj:set noscbE[47;17HE[KE[48;1HggL:set scbE[48;12HE[KE[49;1HE[34m^WE[mt:set scbE[49;12HE[KE[50;1HE[34m^WE[mtGE[34m^WE[mjGE[34m^WE[mt:syncbind
HkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:E[52;4HH3kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****
:w! test.out             " Write contents of this file
:qa!E[55;5HE[KE[56;1HENDTESTE[56;8HE[KE[57;1HE[KE[58;1HE[KE[59;1Hstart of window 1E[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nowrapE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noequalalwaysE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset splitbelowE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST using two windows open to one buffer, one extra empty windowE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[1;1HL5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
:" TEST horizontal scrolling
:set scrollopt+=horE[5;20HE[KE[6;1Hgg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:E[6;44HE[KE[7;1HE[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=horE[8;20HE[KE[9;9HsyncbindE[9;17HE[KE[10;1HE[34m^WE[mt:set noscbE[10;14HE[KE[11;3HLE[34m^WE[mj:set noscbE[11;17HE[KE[12;1HggL:set scbE[12;12HE[KE[13;1HE[34m^WE[mt:set scbE[13;12HE[KE[14;1HGE[34m^WE[mjG:syncbindE[14;15HE[KE[15;1HHkE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpE[34m^WE[mtyyE[34m^WE[mbp:
E[34m^WE[mt:set noscb
ggLE[34m^WE[mj:set noscb
ggL:set scbE[18;12HE[KE[19;1HE[34m^WE[mt:set scbE[19;13HE[KE[20;1HE[34m^WE[mtGE[34m^WE[mjGE[34m^WE[mt:syncbind
HkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:E[22;4HH3kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****
:w! test.out   E[10C" Write contents of this file
:qa!
ENDTESTE[26;9HE[KE[27;1HE[KE[28;1HE[KE[29;1HE[7mtest37.in                                                                                       E[mE[30;1HL5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling upE[31;21HE[KE[32;1HE[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
:" TEST horizontal scrollingE[33;29HE[KE[34;2Hset scrollopt+=horE[34;20HE[KE[35;1Hgg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:
E[34m^WE[mk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:E[36;40HE[KE[37;1H:set scrollopt-=horE[37;20HE[KE[38;2H" TEST syncbindE[38;17HE[KE[39;1HE[34m^WE[mt:set nosE[39;14HE[KE[40;1HggLE[34m^WE[mj:set noscb
ggL:set scbE[41;12HE[KE[42;1HE[34m^WE[mt
GE[34m^WE[mjG:syncbind
HkE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpE[34m^WE[mtyyE[34m^WE[mbp:
E[34m^WE[mt:set noscbE[45;14HE[KE[46;1HggLE[34m^WE[mj:set noscb
ggL:set scbE[47;12HE[KE[48;1HE[34m^WE[mtE[49;4HGE[34m^WE[mjGE[34m^WE[mt:syncbind
HkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
E[34m^WE[mtH3kE[2CjHE[34m^WE[mtHyyE[2CbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****E[52;31HE[KE[53;2Hw! test.out             " Write contents of this file
:qa!E[54;5HE[KE[55;1HENDTESTE[56;1HE[KE[58;1Hstart of window 1
E[1mE[7mtest37.in                                                                                       E[56;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[30;1HHkE[34m^WE[mtHE[2CjHyyE[2CbpE[34m^WE[mtyyE[34m^WE[mbp:E[30;27HE[KE[31;1HE[34m^WE[mt:set noscbE[31;14HE[KE[32;1HggLE[34m^WE[mj:set noscbE[32;17HE[KE[33;1HggL:set scbE[33;12HE[KE[34;1HE[34m^WE[mt:set scbE[34;12HE[KE[35;1HE[34m^WE[mtGE[34m^WE[mjGE[34m^WE[mt:syncbindE[35;21HE[KE[36;1HHkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:E[36;30HE[KE[37;1HE[34m^WE[mtH3kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****
:w! test.out E[12C" Write contents of this file
:qa!E[40;5HE[KE[41;1HENDTESTE[41;9HE[KE[42;1HE[KE[43;1HE[KE[44;1HE[7mtest37.in                                                                                       E[mE[45;1HE[KE[46;1HE[1mE[34m~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[1mE[7m[No Name] E[45;1HE[?12lE[?25hE[?25lE[1;28rE[mE[28;1H
E[1;60rE[28;1Hstart of window 1
E[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                                                                       E[mE[60;1HE[KE[26;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hresize 8E[?25lE[1;1HE[34m^WE[mtH3kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****E[2;31HE[KE[3;2Hw! test.out             " Write contents of this file
:qa!E[4;6HE[KE[5;1HENDTESTE[5;8HE[KE[6;1HE[KE[7;1HE[KE[8;1Hstart of window 1
E[1mE[7mtest37.in                                                                                       E[mE[10;1H/^start of window 2$/
zt:E[11;4HE[KE[12;1H:set scrollbind
:" -- start of tests --
:" TEST scrolling downE[14;23HE[KE[15;1HL5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
:" TEST horizontal scrolling
:set scrollopt+=horE[19;20HE[KE[20;1Hgg"zyyG"zpGE[34m^WE[mt015zly$E[34m^WE[mbp"zpGE[34m^WE[mky$E[34m^WE[mbp"zpG:E[21;3Hk10jH7zhg0y$E[34m^WE[mbp"zpGE[34m^WE[mtHg0y$E[34m^WE[mbp"zpG:
:set scrollopt-=horE[22;20HE[KE[23;2H" TEST syncbindE[23;26HE[KE[24;1HE[34m^WE[mt:set noscb
ggLE[34m^WE[mj:set noscb
ggL:set scb
E[34m^WE[mt:set scb
GE[34m^WE[mjG:syncbindE[28;15HE[KE[29;1HHkE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpE[34m^WE[mtyyE[34m^WE[mbp:E[29;27HE[KE[30;1HE[34m^WE[mt:set noscbE[30;14HE[KE[31;1HggLE[34m^WE[mj:set noscb
ggL:set scbE[32;12HE[KE[33;1HE[34m^WE[mtE[34;4HGE[34m^WE[mjGE[34m^WE[mt:syncbind
HkE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
E[34m^WE[mtH3kE[2CjHE[34m^WE[mtHyyE[2CbpE[34m^WE[mtE[34m^WE[mjyyE[34m^WE[mbp:
:" ***** done with tests *****E[37;31HE[KE[38;2Hw! test.out             " Write contents of this file
:qa!E[39;5HE[KE[40;1HENDTESTE[41;1HE[KE[43;1Hstart of window 1E[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start of window 1$/E[?25lE[60;21HE[KE[60;1HE[1;8rE[1;1HE[2ME[1;60rE[7;1H. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[60;1HE[KE[6;1HE[?12lE[?25hE[?25lE[1;8rE[1;1HE[3ME[1;60rE[6;1H. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05E[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollbindE[?25lE[3;1HE[?12lE[?25hE[9;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[44;1HE[1mE[7mtest37.in                                                                                       E[41;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[41;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hresize 7E[?25lE[10;1H:" ***** done with tests *****
:w! test.outE[13C" Write contents of this file
:qa!E[12;6HE[KE[13;1HENDTESTE[13;8HE[KE[14;1HE[KE[15;1HE[KE[16;1Hstart of window 1E[16;19HE[KE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[18;1HE[KE[19;1HE[1mE[34m~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[14;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^start of window 2$/E[?25lE[60;21HE[KE[60;1HE[10;1Hend of window 1E[10;16HE[KE[11;1HE[KE[12;1HE[KE[13;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03E[13;1HE[?12lE[?25hE[?25lE[10;16rE[16;1H
E[1;60rE[16;1H. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04E[60;1HE[KE[12;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollbindE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" -- start of tests --E[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST scrolling downE[?25lE[12;1HE[?12lE[?25h

E[?25lE[1;8rE[1;1HE[5ME[1;60rE[4;1H. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10E[10;16rE[10;1HE[5ME[1;60rE[12;1H. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09E[60;1HE[KE[14;1HE[?12lE[?25hE[12;1HE[17;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name]                                                                                       E[18;1HE[?25lE[m
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05E[19;50HE[KE[59;11HE[1mE[7m[+]E[19;1HE[?12lE[?25hE[?25lE[m0E[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[19;1HE[?25lE[m
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05E[20;50HE[KE[20;1HE[?12lE[?25hE[?25l1E[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1H


E[?25lE[1;8rE[mE[1;1HE[6ME[1;60rE[3;1H. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15
end of window 1E[10;16rE[10;1HE[6ME[1;60rE[11;1H. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15E[6;1HE[?12lE[?25hE[3;1HE[9;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[20;1HE[?25lE[m
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11E[21;50HE[KE[21;1HE[?12lE[?25hE[?25l2E[?12lE[?25hE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[12;1HE[17;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[21;1HE[?25lE[m
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11E[22;50HE[KE[22;1HE[?12lE[?25hE[?25l3E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST scrolling upE[?25lE[22;1HE[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[1;8rE[mE[1;1HE[5LE[1;60rE[1;1H. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08E[10;9H4E[39C4E[11;8H05E[38C05E[12;8H06E[38C06E[13;8H07E[38C07E[14;8H08E[38C08E[15;8H09E[38C09E[16;9H0E[39C0E[60;1HE[KE[4;1HE[?12lE[?25hE[9;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7mtest37.in                                                                                       E[14;1HE[12;1HE[9;1Htest37.in                                                                                       E[mE[17;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[4;1HE[3;1HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[22;1HE[?25lE[m
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06E[23;50HE[KE[23;1HE[?12lE[?25hE[?25l4E[?12lE[?25hE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[12;1HE[17;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[23;1HE[?25lE[m
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06E[24;50HE[KE[24;1HE[?12lE[?25hE[?25l5E[?12lE[?25hE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[12;1HE[?25lE[1;8rE[mE[1;1HE[4LE[1;60rE[1;1Hstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03E[10;16rE[10;1HE[4LE[1;60rE[10;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03E[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[6;1HE[3;1HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7mtest37.in                                                                                       E[13;1HE[12;1HE[mE[17;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[24;1HE[?25lE[m
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02E[25;50HE[KE[25;1HE[?12lE[?25hE[?25l6E[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[25;1HE[?25lE[m
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[26;50HE[KE[26;1HE[?12lE[?25hE[?25l7E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST horizontal scrollingE[?25lE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollopt+=horE[?25lE[26;1HE[?12lE[?25hE[18;1HE[26;1HE[?25lE[27;1HE[KE[27;1HE[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[1;1H 1E[1;3HE[KE[2;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01E[2;35HE[KE[3;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[3;35HE[KE[4;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03E[4;35HE[KE[5;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04E[5;35HE[KE[6;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05E[6;35HE[KE[7;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06E[7;35HE[KE[8;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07E[8;35HE[KE[10;1H 2E[10;3HE[KE[11;1HUTSRQPONMLKJIHGREDCBA9876543210 01E[11;35HE[KE[12;1HUTSRQPONMLKJIHGREDCBA9876543210 02E[12;35HE[KE[13;1HUTSRQPONMLKJIHGREDCBA9876543210 03E[13;35HE[KE[14;1HUTSRQPONMLKJIHGREDCBA9876543210 04E[14;35HE[KE[15;1HUTSRQPONMLKJIHGREDCBA9876543210 05E[15;35HE[KE[16;1HUTSRQPONMLKJIHGREDCBA9876543210 06E[16;35HE[KE[3;1HE[?12lE[?25hE[9;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[27;1HE[?25lE[m56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[?12lE[?25hE[?25lE[28;1HE[KE[28;1HE[?12lE[?25hE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[12;1HE[17;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[28;1HE[?25lE[mUTSRQPONMLKJIHGREDCBA9876543210 02E[?12lE[?25hE[?25lE[29;1HE[KE[29;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[29;1HE[?12lE[?25hE[17;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[12;1HE[?25lE[mE[1;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09E[2;33H10E[3;33H11E[4;33H12E[5;33H13E[6;33H14E[7;33H15E[8;1HE[KE[10;1HUTSRQPONMLKJIHGREDCBA9876543210 09E[11;33H10E[12;33H11E[13;33H12E[14;33H13E[15;33H14E[16;33H15E[13;1HE[?12lE[?25hE[?25lE[1;1H. 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 15E[12;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[17;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[29;1HE[?25lE[m. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11E[?12lE[?25hE[?25lE[30;1HE[KE[30;1HE[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;16HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[30;1HE[?25lE[m. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11E[?12lE[?25hE[?25lE[31;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollopt-=horE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" ****** tests using two different buffers *****E[?25lE[31;1HE[?12lE[?25hE[9;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[9;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7mtest37.in                                                                                       E[12;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[9;1HE[KE[10;1HE[KE[11;1Hstart of window 2E[11;18HE[KE[12;8H0E[39C0E[13;8H0E[39C0E[14;8H0E[39C0E[15;8H0E[39C0E[16;8H0E[39C0E[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noscrollbindE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of window 2$/,/^end of window 2$/yE[?25l18 lines yankedE[60;16HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[8;1HE[7mtest37.in                                                                                       E[mE[10;1HE[1mE[34m~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[mE[17;1HE[1mE[7m[No Name] E[9;1HE[?12lE[?25hE[8;1Htest37.in                                                                                       E[mE[17;1HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                                                                       E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name]                                                                                       E[9;1HE[?25lE[mE[60;1H4 more linesE[10;1HE[KE[11;1HE[KE[12;1HE[KE[13;1HE[KE[17;11HE[1mE[7m[+]E[10;1HE[?12lE[?25h


E[?25lE[mE[60;1H18 more linesE[14;1Hstart of window 2E[14;18HE[KE[15;1H. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01E[15;50HE[KE[16;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02E[16;50HE[KE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[14;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^start of window 1$/E[?25lE[60;21HE[KE[60;1HE[31msearch hit BOTTOM, continuing at TOPE[mE[1;1HENDTESTE[1;8HE[KE[2;1HE[KE[3;1HE[KE[4;1Hstart of window 1E[4;18HE[KE[5;8H01E[38C01E[6;8H02E[38C02E[7;8H03E[38C03E[4;1HE[?12lE[?25hE[?25lE[1;7rE[7;1H
E[1;60rE[7;1H. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04E[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollbindE[?25lE[3;1HE[?12lE[?25hE[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[14;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start of window 2$/E[?25lE[60;21HE[KE[60;1HE[31msearch hit BOTTOM, continuing at TOPE[14;1HE[?12lE[?25hE[?25lE[9;16rE[mE[9;1HE[3ME[1;60rE[14;1H. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05E[60;1HE[KE[11;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollbindE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" -- start of tests --E[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST scrolling downE[?25lE[11;1HE[?12lE[?25h


E[?25lE[1;7rE[1;1HE[5ME[1;60rE[3;1H. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09E[9;16rE[9;1HE[5ME[1;60rE[12;1H. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10E[60;1HE[KE[14;1HE[?12lE[?25hE[11;1HE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[31;1HE[?25lE[m
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05E[32;50HE[KE[32;1HE[?12lE[?25hE[?25l0E[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[32;1HE[?25lE[m
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05E[33;50HE[KE[33;1HE[?12lE[?25hE[?25l1E[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1H

E[?25lE[1;7rE[mE[1;1HE[6ME[1;60rE[2;1H. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
. line 12 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 12
. line 13 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 13
. line 14 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 14
. line 15 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 15E[9;16rE[9;1HE[6ME[1;60rE[11;1H. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16E[5;1HE[?12lE[?25hE[3;1HE[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[33;1HE[?25lE[m
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11E[34;50HE[KE[34;1HE[?12lE[?25hE[?25l2E[?12lE[?25hE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[11;1HE[17;1H[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[34;1HE[?25lE[m
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11E[35;50HE[KE[35;1HE[?12lE[?25hE[?25l3E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST scrolling upE[?25lE[35;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[1;9H4E[39C4E[2;8H05E[38C05E[3;8H06E[38C06E[4;8H07E[38C07E[5;8H08E[38C08E[6;8H09E[38C09E[7;9H0E[39C0E[9;16rE[9;1HE[5LE[1;60rE[9;1H. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08E[60;1HE[KE[4;1HE[?12lE[?25hE[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[14;1HE[11;1HE[8;1Htest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[4;1HE[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[35;1HE[?25lE[m
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06E[36;50HE[KE[36;1HE[?12lE[?25hE[?25l4E[?12lE[?25hE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[11;1HE[17;1H[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[36;1HE[?25lE[m
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06E[37;50HE[KE[37;1HE[?12lE[?25hE[?25l5E[?12lE[?25hE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[11;1HE[?25lE[1;7rE[mE[1;1HE[4LE[1;60rE[1;1Hstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03E[9;16rE[9;1HE[4LE[1;60rE[9;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03E[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[5;1HE[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[12;1HE[11;1HE[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[37;1HE[?25lE[m
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02E[38;50HE[KE[38;1HE[?12lE[?25hE[?25l6E[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[38;1HE[?25lE[m
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[39;50HE[KE[39;1HE[?12lE[?25hE[?25l7E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST horizontal scrollingE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollopt+=horE[?25lE[39;1HE[?12lE[?25hE[18;1HE[39;1HE[?25lE[40;1HE[KE[40;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[1;1H 1E[1;3HE[KE[2;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01E[2;35HE[KE[3;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[3;35HE[KE[4;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03E[4;35HE[KE[5;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04E[5;35HE[KE[6;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05E[6;35HE[KE[7;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06E[7;35HE[KE[9;1H 2E[9;3HE[KE[10;1HUTSRQPONMLKJIHGREDCBA9876543210 01E[10;35HE[KE[11;1HUTSRQPONMLKJIHGREDCBA9876543210 02E[11;35HE[KE[12;1HUTSRQPONMLKJIHGREDCBA9876543210 03E[12;35HE[KE[13;1HUTSRQPONMLKJIHGREDCBA9876543210 04E[13;35HE[KE[14;1HUTSRQPONMLKJIHGREDCBA9876543210 05E[14;35HE[KE[15;1HUTSRQPONMLKJIHGREDCBA9876543210 06E[15;35HE[KE[16;1HUTSRQPONMLKJIHGREDCBA9876543210 07E[16;35HE[KE[3;1HE[?12lE[?25hE[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[40;1HE[?25lE[m56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02E[?12lE[?25hE[?25lE[41;1HE[KE[41;1HE[?12lE[?25hE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[11;1HE[17;1H[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[41;1HE[?25lE[mUTSRQPONMLKJIHGREDCBA9876543210 02E[?12lE[?25hE[?25lE[42;1HE[KE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[42;1HE[?12lE[?25hE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[11;1HE[?25lE[mE[1;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09E[2;33H10E[3;33H11E[4;33H12E[5;33H13E[6;33H14E[7;33H15

UTSRQPONMLKJIHGREDCBA9876543210 09E[10;33H10E[11;33H11E[12;33H12E[13;33H13E[14;33H14E[15;33H15E[16;33H16E[12;1HE[?12lE[?25hE[?25lE[1;1H. 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 16E[11;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[42;1HE[?25lE[m. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11E[?12lE[?25hE[?25lE[43;1HE[KE[43;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;16HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[43;1HE[?25lE[m. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11E[?12lE[?25hE[?25lE[44;1HE[KE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scrollopt-=horE[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TEST syncbindE[?25lE[44;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset noscbE[?25lE[3;1HE[?12lE[?25hE[?25lE[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTESTE[2;11HE[KE[3;1H:so small.vimE[3;14HE[KE[4;1H:set noscrollbindE[4;18HE[KE[5;1H:set scrollopt=ver,jumpE[5;24HE[KE[6;1H:set scrolloff=2E[6;17HE[KE[7;1H:set nowrapE[7;12HE[KE[1;1HE[?12lE[?25hE[5;1H


E[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[11;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset noscbE[?25lE[11;1HE[?12lE[?25hE[?25lE[9;1HE[KE[10;1HE[KE[11;1HE[KE[12;1HE[KE[13;1HE[KE[14;1Hstart of window 2E[14;18HE[KE[15;8H01E[38C01E[16;8H02E[38C02E[9;1HE[?12lE[?25hE[14;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scbE[?25lE[14;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[5;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset scbE[?25lE[5;1HE[?12lE[?25hE[?25lE[1;1H. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13E[1;50HE[KE[2;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2E[5;16HE[KE[6;1HE[KE[7;1Hend of test37.in (please don't delete this line)

end of window 2
E[1mE[34m~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[7;1HE[?12lE[?25hE[?25lE[mE[1;1Hzt:E[1;4HE[KE[2;1H:set scrollbindE[2;16HE[KE[3;1H:" -- start of tests --E[3;24HE[KE[4;1H:" TEST scrolling downE[4;23HE[KE[5;1HL5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
E[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[9;16rE[mE[9;1HE[2LE[1;60rE[9;1H. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16E[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[60;1HE[KE[11;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsyncbindE[?25lE[11;1HE[?12lE[?25hE[?25lE[1;7rE[1;1HE[LE[1;60rE[1;1H/^start of window 2$/E[9;16rE[9;1HE[LE[1;60rE[9;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14E[60;1HE[KE[11;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[5;1HE[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[11;1HE[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[44;1HE[?25lE[m
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16E[45;50HE[KE[45;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[45;1HE[?25lE[m
:set scrollbindE[46;16HE[KE[46;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[46;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset noscbE[?25lE[3;1HE[?12lE[?25hE[?25lE[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vimE[3;14HE[KE[4;2Hset noscrollbindE[4;18HE[KE[5;2Hset scrollopt=ver,jump
:set scrolloff=2E[6;17HE[KE[7;2Hset nowrapE[7;12HE[KE[1;1HE[?12lE[?25hE[5;1H


E[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[11;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset noscbE[?25lE[11;1HE[?12lE[?25hE[?25lE[9;1HE[KE[10;1HE[KE[11;1HE[KE[12;1HE[KE[13;1HE[KE[14;1Hstart of window 2E[14;18HE[KE[15;1H. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01E[15;50HE[KE[16;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02E[16;50HE[KE[9;1HE[?12lE[?25hE[14;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset scbE[?25lE[14;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[5;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset scbE[?25lE[5;1HE[?12lE[?25hE[?25lE[1;1H. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13E[1;50HE[KE[2;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2E[5;16HE[KE[6;1HE[KE[7;1Hend of test37.in (please don't delete this line)

end of window 2
E[1mE[34m~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[7;1HE[?12lE[?25hE[?25lE[mE[1;1Hzt:E[1;4HE[KE[2;1H:set scrollbindE[2;16HE[KE[3;1H:" -- start of tests --E[3;24HE[KE[4;1H:" TEST scrolling downE[4;23HE[KE[5;1HL5jHyyE[34m^WE[mbpr0E[34m^WE[mtHyyE[34m^WE[mbpr1E[34m^WE[mtL6jHyyE[34m^WE[mbpr2E[34m^WE[mkHyyE[34m^WE[mbpr3:
:" TEST scrolling up
E[34m^WE[mtH4kE[34m^WE[mjHE[34m^WE[mtHyyE[34m^WE[mbpr4E[34m^WE[mkHyyE[34m^WE[mbpr5E[34m^WE[mk3kE[34m^WE[mtHE[34m^WE[mjHyyE[34m^WE[mbpr6E[34m^WE[mtHyyE[34m^WE[mbpr7:
E[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[9;16rE[mE[9;1HE[2LE[1;60rE[9;1H. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16E[17;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[60;1HE[KE[11;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[5;1HE[?25lE[60;1HE[m:E[?12lE[?25hsyncbindE[?25lE[5;1HE[?12lE[?25hE[3;1HE[?25lE[1;7rE[1;1HE[LE[1;60rE[1;1H/^start of window 2$/E[9;16rE[9;1HE[2LE[1;60rE[9;1H. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13
. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14E[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[1;7rE[1;1HE[LE[1;60rE[1;1H:resize 7E[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[12;1HE[?12lE[?25hE[11;1HE[8;1Htest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[4;1HE[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[46;1HE[?25lE[m
zt:E[47;4HE[KE[47;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[11;1HE[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[47;1HE[?25lE[m
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15E[48;50HE[KE[48;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[48;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[?25lE[1;7rE[mE[1;1HE[4LE[1;60rE[1;1H/^start of window 1$/
zt:
:set scrollbind
E[34m^WE[mj:E[9;16rE[9;1HE[4LE[1;60rE[9;1H. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12E[60;1HE[KE[4;1HE[?12lE[?25hE[8;1HE[7mtest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[14;1HE[11;1HE[8;1Htest37.in                                                                                       E[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[4;1HE[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[48;1HE[?25lE[m
:set scrollbindE[49;16HE[KE[49;1HE[?12lE[?25hE[8;1HE[1mE[7mtest37.in                                                                                       E[mE[59;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[3;1HE[8;1Htest37.inE[mE[1mE[7m E[mE[7m                                                                                       E[mE[17;1HE[1mE[7m[No Name] [+]                                                                                   E[11;1HE[mE[17;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7m[No Name] [+]                                                                                   E[49;1HE[?25lE[m
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11E[50;50HE[KE[50;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" ***** done with tests *****E[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.out             " Write contents of this fileE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 33 lines, 1329 characters writtenE[59;1HE[1mE[7mtest.out]      E[50;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test38.in" 35 lines, 455 charactersE[2;1HTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=E[34m^VE[mx7f t_kb=E[34m^VE[mx08
ggdGa
abcdefghi
jk      lmn
    opq rst
E[34m^DE[muvwxyz
E[34m^[E[mgg:set ai
:set bs=2
gR0E[34m^DE[m 1
A
BCDEFGHIJE[18;9HKL
MNO
PQRE[34m^[E[mG:ka
o0E[34m^DE[m
abcdefghi
jk      lmn
    opq rst
E[34m^DE[muvwxyz
E[34m^[E[m'ajgR0E[34m^DE[m 1
A
BCDEFGHIJE[29;9HKL
MNO
PQRE[34m^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^[E[m:$
iab     cdefghi jklE[34m^[E[m0gRAB......CDEFGHI.JE[34m^[E[moE[34m^[E[m:
iabcdefghijklmnopqrstE[34m^[E[m0gRAB    IJKLMNO QRE[34m^[E[m:wq! test.out
ENDTEST

E[1mE[34m~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 29 lines, 407 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[34;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" make sure that backspace works, no matter what termcap is usedE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset t_kD=^E[34m^?E[m t_kb=^E[34m^HE[?25lE[27mE[mE[HE[2JE[2;1HTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=E[34m^VE[mx7f t_kb=E[34m^VE[mx08
ggdGa
abcdefghi
jk      lmn
    opq rst
E[34m^DE[muvwxyz
E[34m^[E[mgg:set ai
:set bs=2
gR0E[34m^DE[m 1
A
BCDEFGHIJE[18;9HKL
MNO
PQRE[34m^[E[mG:ka
o0E[34m^DE[m
abcdefghi
jk      lmn
    opq rst
E[34m^DE[muvwxyz
E[34m^[E[m'ajgR0E[34m^DE[m 1
A
BCDEFGHIJE[29;9HKL
MNO
PQRE[34m^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^[E[m:$
iab     cdefghi jklE[34m^[E[m0gRAB......CDEFGHI.JE[34m^[E[moE[34m^[E[m:
iabcdefghijklmnopqrstE[34m^[E[m0gRAB    IJKLMNO QRE[34m^[E[m:wq! test.out
ENDTEST

E[1mE[34m~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[35;1HE[?12lE[?25hE[1;1HE[?25l
~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25l
abcdefghiE[2;10HE[KE[3;1Hjk      lmnE[3;12HE[KE[4;1H    opq rstE[4;12HE[KE[5;1HuvwxyzE[5;7HE[KE[6;1HE[KE[6;1HE[?12lE[?25hE[1;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset aiE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset bs=2E[?25lE[1;1HE[?12lE[?25hE[?25l 1
 AE[2;3HE[KE[3;1H BCDEFGHIJE[3;11HE[KE[4;5H    KLE[4;11HE[KE[5;1H        MNOE[6;9HPQRE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hkaE[?25lE[6;9HE[?12lE[?25hE[?25lE[7;1HE[KE[8;1HabcdefghiE[8;10HE[KE[9;1Hjk      lmnE[9;12HE[KE[10;1H    opq rstE[10;12HE[KE[11;1HuvwxyzE[11;7HE[KE[12;1HE[KE[12;1HE[?12lE[?25hE[6;9H
E[?25l 1E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$E[?25lE[12;1HE[?12lE[?25hE[?25lab      cdefghi jklE[?12lE[?25hE[?25lAB......CDEFGHI.JE[?12lE[?25hE[?25lE[13;1HE[KE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[13;1HE[?12lE[?25hE[?25labcdefghijklmnopqrstE[?12lE[?25hE[?25lAB      IJKLMNO QRE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 13 lines, 107 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test39.in" 43 lines, 916 charactersE[2;1HTest 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
jllllE[34m^VE[mjj>wllE[34m^VE[mjlll>
:" Test shift-left of a block
G$hhhhE[34m^VE[mkk<
:" Test block-insert
GklE[34m^VE[mkkkIxyzE[34m^[E[m
:" Test block-replace
GllllE[34m^VE[mkkklllrq
:" Test block-change
G$khhhE[34m^VE[mhhkkcmnoE[34m^[E[m
:$-4,$w! test.out
:" gUe must uppercase a whole word, also when ß changes to SS
Gothe youtußeuu endE[34m^[E[mYpk0wgUe
:" gUfx must uppercase until x, inclusive.
O- youßtußexu -E[34m^[E[m0fogUfx
:" VU must uppercase a whole line
YpkVU
:" same, when it's the last line in the buffer
YPGi111E[34m^[E[mVUddP
:" Uppercase two lines
Oblah di
doh dutE[34m^[E[mVkUj
:" Uppercase part of two lines
ddppi333E[34m^[E[mk0i222E[34m^[E[mfyllvjfuUk
:/^the/,$w >> test.out
:qa!
ENDTEST

abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
E[1mE[34m~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 31 lines, 740 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[37;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" This only works when 'encoding' is "latin1", don't depend on the environmentE[?25lE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=latin1E[?25lE[27mE[mE[HE[2JE[2;1HTest 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
jllllE[34m^VE[mjj>wllE[34m^VE[mjlll>
:" Test shift-left of a block
G$hhhhE[34m^VE[mkk<
:" Test block-insert
GklE[34m^VE[mkkkIxyzE[34m^[E[m
:" Test block-replace
GllllE[34m^VE[mkkklllrq
:" Test block-change
G$khhhE[34m^VE[mhhkkcmnoE[34m^[E[m
:$-4,$w! test.out
:" gUe must uppercase a whole word, also when ß changes to SS
Gothe youtußeuu endE[34m^[E[mYpk0wgUe
:" gUfx must uppercase until x, inclusive.
O- youßtußexu -E[34m^[E[m0fogUfx
:" VU must uppercase a whole line
YpkVU
:" same, when it's the last line in the buffer
YPGi111E[34m^[E[mVUddP
:" Uppercase two lines
Oblah di
doh dutE[34m^[E[mVkUj
:" Uppercase part of two lines
ddppi333E[34m^[E[mk0i222E[34m^[E[mfyllvjfuUk
:/^the/,$w >> test.out
:qa!
ENDTEST

abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
E[1mE[34m~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[38;1HE[?12lE[?25hE[?25lE[60;1HE[m/E[?12lE[?25h^abcdeE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test shift-right of a blockE[?25lE[39;1HE[?12lE[?25h
abcdE[?25lE[?12lE[?25hE[?25lE[7me
E[mabcdE[?12lE[?25hE[?25lE[7me
E[mabcdE[?12lE[?25hE[?25lE[60;1H3 lines >ed 1 timeE[60;19HE[KE[40;5H        efghijklm
abcd        efghijklm
abcd        efghijklmE[40;8HE[?12lE[?25h     efE[?25lE[?12lE[?25hE[?25lE[7mgE[41;15HE[?12lE[?25hE[?25lE[40;16HhE[41;15HgE[?12lE[?25hE[?25lE[40;17HiE[41;16HhE[?12lE[?25hE[?25lE[40;18HjE[41;17HiE[?12lE[?25hE[?25lE[mE[40;15H        ghijklmE[41;15H        ghijklmE[40;16HE[?12lE[?25hE[41;16HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test shift-left of a blockE[?25lE[41;16HE[?12lE[?25h

E[12CE[?25lE[?12lE[?25hE[?25lE[7miE[42;9HE[?12lE[?25hE[?25l E[41;9HE[?12lE[?25hE[?25lE[mE[60;1H3 lines <ed 1 timeE[60;20HE[KE[41;9Hef    E[42;9HefghijklmE[42;18HE[KE[43;9HiE[41;9HE[?12lE[?25hE[42;9HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test block-insertE[?25lE[42;9HE[?12lE[?25h
E[42;1HaE[?25lE[?12lE[?25hE[?25lE[7mbE[41;2HE[?12lE[?25hE[?25lbE[40;2HE[?12lE[?25hE[?25lbE[39;2HE[?12lE[?25hE[?25lE[m
ab
ab
abE[39;2Hxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcdE[39;2HE[?12lE[?25h
aE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test block-replaceE[?25lE[40;2HE[?12lE[?25h


abcdE[?25lE[?12lE[?25hE[?25lE[7meE[42;5HE[?12lE[?25hE[?25lbE[41;5HE[?12lE[?25hE[?25lbE[40;5HE[?12lE[?25hE[?25lbE[41;6HcE[42;6HcE[43;6HfE[40;6HE[?12lE[?25hE[?25lcE[41;7HdE[42;7HdE[43;7HgE[40;7HE[?12lE[?25hE[?25ldE[41;8H E[42;8H E[43;8HhE[40;8HE[?12lE[?25hE[?25lE[mqqqq
axyzqqqq
axyzqqqq
abcdqqqqE[40;5HE[?12lE[?25h
axyzE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test block-changeE[?25lE[41;5HE[?12lE[?25h

E[12CE[42;17HE[?25lE[?12lE[?25hE[?25lE[7mjE[?12lE[?25hE[?25liE[?12lE[?25hE[?25lE[41;12H     E[42;11HghijklE[41;11HE[?12lE[?25hE[?25lE[40;13HefE[mE[41;15H  E[42;11HgE[3CklE[40;12HE[?12lE[?25hE[?25lmnoE[41;12HmnoE[42;12HmnoE[40;14HE[?12lE[?25hE[41;14HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-4,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 5 lines, 108 characters writtenE[41;14HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" gUe must uppercase a whole word, also when ß changes to SSE[?25lE[41;14HE[?12lE[?25h

E[?25l
the youtußeuu endE[44;18HE[KE[44;17HE[?12lE[?25hE[?25l
the youtußeuu endE[45;18HE[KE[45;1HE[?12lE[?25hE[44;1Hthe E[?25lYOUTUSSEUU endthe E[?12lE[?25h
the E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" gUfx must uppercase until x, inclusive.E[?25lE[45;5HE[?12lE[?25hE[?25lE[45;59rE[45;1HE[LE[1;60rE[45;1H- youßtußexu -E[60;1HE[KE[45;14HE[?12lE[?25h- yE[?25lOUSSTUSSEXu -- yE[?12lE[?25h
theE[?25lE[60;1H:E[?12lE[?25h" VU must uppercase a whole lineE[?25lE[46;4HE[?12lE[?25hE[?25l
the youtußeuu endE[47;18HE[KE[47;1HE[?12lE[?25hE[46;1HE[?25ltE[7mhe youtußeuu end E[?12lE[?25hE[?25lE[mTHE YOUTUSSEUU ENDE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" same, when it's the last line in the bufferE[?25lE[47;1HE[?12lE[?25hE[?25lE[47;59rE[47;1HE[LE[1;60rE[47;1Hthe youtußeuu endE[60;1HE[KE[47;1HE[?12lE[?25h
E[?25l111the youtußeuu end11E[?12lE[?25hE[?25lE[7m11E[m1E[7mthe youtußeuu end 11E[?12lE[?25hE[?25lE[m111THE YOUTUSSEUU ENDE[?12lE[?25hE[?25lE[1mE[34m~                                                                                               E[47;1HE[?12lE[?25hE[?25lE[47;59rE[mE[47;1HE[LE[1;60rE[47;1H111THE YOUTUSSEUU ENDE[?12lE[?25h
E[?25lE[60;1H:E[?12lE[?25h" Uppercase two linesE[?25lE[48;1HE[?12lE[?25hE[?25lE[48;59rE[48;1HE[2LE[1;60rE[48;1Hblah di
doh dutE[60;1HE[KE[49;7HE[?12lE[?25hE[?25lE[7mdoh duE[mtE[7m E[?12lE[?25hE[?25lE[48;1Hblah dE[miE[7m E[49;7HtE[48;7HE[?12lE[?25hE[?25lE[mBLAH DIE[48;8HE[KE[49;1HDOH DUTE[49;8HE[KE[48;7HE[?12lE[?25hE[49;7HE[50;7HE[?25lE[60;1H:E[?12lE[?25h" Uppercase part of two linesE[?25lE[50;7HE[?12lE[?25hE[?25lE[1mE[34m~                                                                                               E[49;1HE[?12lE[?25hE[?25lE[m
the youtußeuu endE[50;18HE[KE[50;1HE[?12lE[?25hE[?25l
the youtußeuu endE[51;18HE[KE[51;1HE[?12lE[?25hE[?25l333the youtußeuu end33E[?12lE[?25hE[50;3HE[?25l222the youtußeuu end22E[?12lE[?25h2the yoE[?25lE[?12lE[?25hE[?25lE[7mutußeuu end 
333the yoE[?12lE[?25hE[?25lutE[?12lE[?25hE[?25lE[mE[50;10HUTUSSEUU END
333THE YOUTUE[50;10HE[?12lE[?25hE[49;7HE[50;10HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^the/,$w >> test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H8 lines, 136 characters appendedE[50;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test40.in" 63 lines, 1536 charactersE[1;1HTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! XxxE[15C" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestAE[23C" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:wE[30C" will append a line to the file
:r XtestAE[23C" should not read anything
:E[31C" now we have:
:E[31C" 1     start of Xxx
:E[31C" 2E[13Ctest40
:E[31C" 3     end of Xxx
:E[31C" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestBE[22C" will read Xxx below line 2 instead
:E[31C" 1     start of Xxx
:E[31C" 2E[13Ctest40
:E[31C" 3     start of Xxx
:E[31C" 4E[13Ctest40
:E[31C" 5     end of Xxx
:E[31C" 6     end of Xxx
:E[31C" 7     write
:au FileWriteCmd XtestC '[,']copy $
4GA1E[34m^[E[m
:4,5w XtestCE[20C" will copy lines 4 and 5 to the end
:r XtestCE[23C" should not read anything
:E[31C" 1     start of Xxx
:E[31C" 2E[13Ctest40
:E[31C" 3     start of Xxx
:E[31C" 4E[13Ctest401
:E[31C" 5     end of Xxx
:E[31C" 6     end of Xxx
:E[31C" 7     write
:E[31C" 8E[13Ctest401
:E[31C" 9     end of Xxx
:au FILEAppendCmd XtestD '[,']w! test.out
:w >>XtestDE[21C" will write all lines to test.out
:$r XtestDE[22C" should not read anything
:$w >>test.outE[18C" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestEE[22C" split window with test.out
5GoasdfE[34m^[^W^WE[m:"
:au BufWriteCmd XtestE w! test.out
:wallE[27C" will write other window to test.out
:E[31C" 1     start of Xxx
:E[31C" 2E[13Ctest40
:E[31C" 3     start of Xxx
:E[31C" 4E[13Ctest401
:E[31C" 5     end of Xxx
:E[31C" 6     asdf
:E[31C" 7     end of Xxx
:E[31C" 8     write
:E[31C" 9E[13Ctest401
:E[31C" 10    end of Xxx
:E[31C" 11    end of Xxx
:qa!
ENDTESTE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for "*Cmd" autocommandsE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 55 lines, 1455 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start/,$w! XxxE[34m^I^IE[m" write lines below to XxxE[?25l"Xxx" E[60;7HE[KE[60;7H[New File] 3 lines, 32 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadCmd XtestA 0r Xxx|$delE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestAE[34m^I^I^IE[m" will read text of Xxd insteadE[?25l"Xxx" E[60;7HE[KE[60;7H3 lines, 32 charactersE[1;1Hstart of Xxx
        test40
end of XxxE[3;11HE[KE[4;1HE[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hau BufWriteCmd XtestA call append(line("$"), "write")E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[34m^I^I^I^IE[m" will append a line to the fileE[?25lE[4;1HwriteE[4;6HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hr XtestAE[34m^I^I^IE[m" should not read anythingE[?25lE[1mE[37mE[41mE484: Can't open file XtestAE[mE[60;29HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" now we have:E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 1E[34m^IE[mstart of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 2E[34m^I^IE[mtest40E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 3E[34m^IE[mend of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 4E[34m^IE[mwriteE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FileReadCmd XtestB '[r XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h2r XtestBE[34m^I^I^IE[m" will read Xxx below line 2 insteadE[?25l"Xxx" E[60;7HE[KE[60;7H3 lines, 32 charactersE[3;59rE[3;1HE[3LE[1;60rE[3;1Hstart of XxxE[4;9Htest40
end of XxxE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 1E[34m^IE[mstart of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 2E[34m^I^IE[mtest40E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 3E[34m^IE[mstart of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 4E[34m^I^IE[mtest40E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 5E[34m^IE[mend of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 6E[34m^IE[mend of XxxE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 7E[34m^IE[mwriteE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FileWriteCmd XtestC '[,']copy $E[?25lE[3;1HE[?12lE[?25hE[4;9HE[?25ltest401E[?12lE[?25hE[5;10HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h4,5w XtestCE[34m^I^I^IE[m" will copy lines 4 and 5 to the endE[?25lE[8;1H        test401E[8;16HE[KE[9;1Hend of XxxE[9;11HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hr XtestCE[34m^I^I^IE[m" should not read anythingE[?25lE[1mE[37mE[41mE484: Can't open file XtestCE[mE[60;29HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 1E[34m^IE[mstart of XxxE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 2E[34m^I^IE[mtest40E[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 3E[34m^IE[mstart of XxxE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 4E[34m^I^IE[mtest401E[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 5E[34m^IE[mend of XxxE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 6E[34m^IE[mend of XxxE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 7E[34m^IE[mwriteE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 8E[34m^I^IE[mtest401E[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 9E[34m^IE[mend of XxxE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau FILEAppendCmd XtestD '[,']w! test.outE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>XtestDE[34m^I^I^IE[m" will write all lines to test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 9 lines, 91 characters writtenE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r XtestDE[34m^I^I^IE[m" should not read anythingE[?25lE[1mE[37mE[41mE484: Can't open file XtestDE[mE[60;30HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$w >>test.outE[34m^I^I^IE[m" append "end of Xxx" to test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufReadCmd XtestE 0r test.out|$delE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsp XtestEE[34m^I^I^IE[m" split window with test.outE[?25l"test.out" E[60;12HE[KE[60;12H10 lines, 102 charactersE[10;1Hend of XxxE[10;11HE[KE[30;1HE[1mE[7mXtestE                                                                                          E[mE[31;1Hend of XxxE[31;11HE[KE[32;1Hend of XxxE[32;11HE[KE[33;1HwriteE[33;6HE[KE[34;1H        test401E[34;16HE[KE[35;1Hend of XxxE[35;11HE[KE[59;1HE[7mXtestA                                                                                          E[10;1HE[?12lE[?25hE[5;1HE[?25lE[6;29rE[mE[6;1HE[LE[1;60rE[6;1HasdfE[30;8HE[1mE[7m[+]E[mE[60;1HE[KE[6;4HE[?12lE[?25hE[30;1HE[7mXtestE [+]E[mE[1mE[7m E[mE[7m                                                                                      E[mE[59;1HE[1mE[7mXtestA                                                                                          E[35;1HE[?25lE[60;1HE[m:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufWriteCmd XtestE w! test.outE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwallE[34m^I^I^I^IE[m" will write other window to test.outE[?25l"test.out" E[60;12HE[KE[60;12H11 lines, 107 characters writtenE[30;8HE[7m   E[35;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 1E[34m^IE[mstart of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 2E[34m^I^IE[mtest40E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 3E[34m^IE[mstart of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 4E[34m^I^IE[mtest401E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 5E[34m^IE[mend of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 6E[34m^IE[masdfE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 7E[34m^IE[mend of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 8E[34m^IE[mwriteE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 9E[34m^I^IE[mtest401E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 10E[34m^IE[mend of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[34m^I^I^I^IE[m" 11E[34m^IE[mend of XxxE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test41.in" 24 lines, 421 charactersE[1;1HTest 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 endE[34m^[E[mkY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for writing and reading a file of over 100 KbyteE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[9;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 13 lines, 196 characters writtenE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[10;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[23;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%dE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lThis is the start
This is the leaderE[2;19HE[KE[3;1HThis is the middleE[3;19HE[KE[4;1HThis is the trailerE[4;20HE[KE[5;1HThis is the endE[5;16HE[KE[5;15HE[?12lE[?25hE[4;15HE[?25lE[60;1H3000 more linesE[60;16HE[KE[5;13Htrailer
This is the trailerE[6;20HE[KE[7;1HThis is the trailerE[7;20HE[KE[8;1HThis is the trailerE[8;20HE[KE[9;1HThis is the trailerE[9;20HE[KE[10;1HThis is the trailerE[10;20HE[KE[11;1HThis is the trailerE[11;20HE[KE[12;1HThis is the trailerE[12;20HE[KE[13;1HThis is the trailerE[13;20HE[KE[14;1HThis is the trailerE[14;20HE[KE[15;1HThis is the trailerE[15;20HE[KE[16;1HThis is the trailerE[16;20HE[KE[17;1HThis is the trailerE[17;20HE[KE[18;1HThis is the trailerE[18;20HE[KE[19;1HThis is the trailerE[19;20HE[KE[20;1HThis is the trailerE[20;20HE[KE[21;1HThis is the trailerE[21;20HE[KE[22;1HThis is the trailerE[22;20HE[KE[23;1HThis is the trailerE[23;20HE[KE[24;1HThis is the trailerE[24;20HE[KE[25;1HThis is the trailerE[25;20HE[KE[26;1HThis is the trailerE[26;20HE[KE[27;1HThis is the trailerE[27;20HE[KE[28;1HThis is the trailerE[28;20HE[KE[29;1HThis is the trailerE[29;20HE[KE[30;1HThis is the trailerE[30;20HE[KE[31;1HThis is the trailerE[31;20HE[KE[32;1HThis is the trailerE[32;20HE[KE[33;1HThis is the trailerE[33;20HE[KE[34;1HThis is the trailerE[34;20HE[KE[35;1HThis is the trailerE[35;20HE[KE[36;1HThis is the trailerE[36;20HE[KE[37;1HThis is the trailerE[37;20HE[KE[38;1HThis is the trailerE[38;20HE[KE[39;1HThis is the trailerE[39;20HE[KE[40;1HThis is the trailerE[40;20HE[KE[41;1HThis is the trailerE[41;20HE[KE[42;1HThis is the trailerE[42;20HE[KE[43;1HThis is the trailerE[43;20HE[KE[44;1HThis is the trailerE[44;20HE[KE[45;1HThis is the trailerE[45;20HE[KE[46;1HThis is the trailerE[46;20HE[KE[47;1HThis is the trailerE[47;20HE[KE[48;1HThis is the trailerE[48;20HE[KE[49;1HThis is the trailerE[49;20HE[KE[50;1HThis is the trailerE[50;20HE[KE[51;1HThis is the trailerE[51;20HE[KE[52;1HThis is the trailerE[52;20HE[KE[53;1HThis is the trailerE[53;20HE[KE[54;1HThis is the trailerE[54;20HE[KE[55;1HThis is the trailerE[55;20HE[KE[56;1HThis is the trailerE[56;20HE[KE[57;1HThis is the trailerE[57;20HE[KE[58;1HThis is the trailerE[58;20HE[KE[59;1HThis is the trailerE[59;20HE[KE[5;1HE[?12lE[?25hE[2;1HE[?25lE[3;13HleaderE[4;13HleaderE[4;19HE[KE[5;13HleaderE[5;19HE[KE[6;13HleaderE[6;19HE[KE[7;13HleaderE[7;19HE[KE[8;13HleaderE[8;19HE[KE[9;13HleaderE[9;19HE[KE[10;13HleaderE[10;19HE[KE[11;13HleaderE[11;19HE[KE[12;13HleaderE[12;19HE[KE[13;13HleaderE[13;19HE[KE[14;13HleaderE[14;19HE[KE[15;13HleaderE[15;19HE[KE[16;13HleaderE[16;19HE[KE[17;13HleaderE[17;19HE[KE[18;13HleaderE[18;19HE[KE[19;13HleaderE[19;19HE[KE[20;13HleaderE[20;19HE[KE[21;13HleaderE[21;19HE[KE[22;13HleaderE[22;19HE[KE[23;13HleaderE[23;19HE[KE[24;13HleaderE[24;19HE[KE[25;13HleaderE[25;19HE[KE[26;13HleaderE[26;19HE[KE[27;13HleaderE[27;19HE[KE[28;13HleaderE[28;19HE[KE[29;13HleaderE[29;19HE[KE[30;13HleaderE[30;19HE[KE[31;13HleaderE[31;19HE[KE[32;13HleaderE[32;19HE[KE[33;13HleaderE[33;19HE[KE[34;13HleaderE[34;19HE[KE[35;13HleaderE[35;19HE[KE[36;13HleaderE[36;19HE[KE[37;13HleaderE[37;19HE[KE[38;13HleaderE[38;19HE[KE[39;13HleaderE[39;19HE[KE[40;13HleaderE[40;19HE[KE[41;13HleaderE[41;19HE[KE[42;13HleaderE[42;19HE[KE[43;13HleaderE[43;19HE[KE[44;13HleaderE[44;19HE[KE[45;13HleaderE[45;19HE[KE[46;13HleaderE[46;19HE[KE[47;13HleaderE[47;19HE[KE[48;13HleaderE[48;19HE[KE[49;13HleaderE[49;19HE[KE[50;13HleaderE[50;19HE[KE[51;13HleaderE[51;19HE[KE[52;13HleaderE[52;19HE[KE[53;13HleaderE[53;19HE[KE[54;13HleaderE[54;19HE[KE[55;13HleaderE[55;19HE[KE[56;13HleaderE[56;19HE[KE[57;13HleaderE[57;19HE[KE[58;13HleaderE[58;19HE[KE[59;13HleaderE[59;19HE[KE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! XtestE[?25l"Xtest" E[60;9HE[KE[60;9H[New File] 6005 lines, 117092 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%dE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestE[?25l"Xtest" E[60;9HE[KE[60;9H6005 lines, 117092 charactersE[1;1HThis is the start
This is the leaderE[2;19HE[KE[3;1HThis is the leaderE[3;19HE[KE[4;1HThis is the leaderE[4;19HE[KE[5;1HThis is the leaderE[5;19HE[KE[6;1HThis is the leaderE[6;19HE[KE[7;1HThis is the leaderE[7;19HE[KE[8;1HThis is the leaderE[8;19HE[KE[9;1HThis is the leaderE[9;19HE[KE[10;1HThis is the leaderE[10;19HE[KE[11;1HThis is the leaderE[11;19HE[KE[12;1HThis is the leaderE[12;19HE[KE[13;1HThis is the leaderE[13;19HE[KE[14;1HThis is the leaderE[14;19HE[KE[15;1HThis is the leaderE[15;19HE[KE[16;1HThis is the leaderE[16;19HE[KE[17;1HThis is the leaderE[17;19HE[KE[18;1HThis is the leaderE[18;19HE[KE[19;1HThis is the leaderE[19;19HE[KE[20;1HThis is the leaderE[20;19HE[KE[21;1HThis is the leaderE[21;19HE[KE[22;1HThis is the leaderE[22;19HE[KE[23;1HThis is the leaderE[23;19HE[KE[24;1HThis is the leaderE[24;19HE[KE[25;1HThis is the leaderE[25;19HE[KE[26;1HThis is the leaderE[26;19HE[KE[27;1HThis is the leaderE[27;19HE[KE[28;1HThis is the leaderE[28;19HE[KE[29;1HThis is the leaderE[29;19HE[KE[30;1HThis is the leaderE[30;19HE[KE[31;1HThis is the leaderE[31;19HE[KE[32;1HThis is the leaderE[32;19HE[KE[33;1HThis is the leaderE[33;19HE[KE[34;1HThis is the leaderE[34;19HE[KE[35;1HThis is the leaderE[35;19HE[KE[36;1HThis is the leaderE[36;19HE[KE[37;1HThis is the leaderE[37;19HE[KE[38;1HThis is the leaderE[38;19HE[KE[39;1HThis is the leaderE[39;19HE[KE[40;1HThis is the leaderE[40;19HE[KE[41;1HThis is the leaderE[41;19HE[KE[42;1HThis is the leaderE[42;19HE[KE[43;1HThis is the leaderE[43;19HE[KE[44;1HThis is the leaderE[44;19HE[KE[45;1HThis is the leaderE[45;19HE[KE[46;1HThis is the leaderE[46;19HE[KE[47;1HThis is the leaderE[47;19HE[KE[48;1HThis is the leaderE[48;19HE[KE[49;1HThis is the leaderE[49;19HE[KE[50;1HThis is the leaderE[50;19HE[KE[51;1HThis is the leaderE[51;19HE[KE[52;1HThis is the leaderE[52;19HE[KE[53;1HThis is the leaderE[53;19HE[KE[54;1HThis is the leaderE[54;19HE[KE[55;1HThis is the leaderE[55;19HE[KE[56;1HThis is the leaderE[56;19HE[KE[57;1HThis is the leaderE[57;19HE[KE[58;1HThis is the leaderE[58;19HE[KE[59;1HThis is the leaderE[59;19HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 18 characters writtenE[1;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HThis 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 trailerE[30;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 19 characters appendedE[30;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HThis 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E[?12lE[?25hE[?25l
:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 16 characters appendedE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test42.in" 130 lines, 2368 charactersE[1;1HTest 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=unixE[11C" 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! Xtest4E[22C" Ignore change from setting 'ff'
oE[34m^V^@^[E[m:set noeol
:w
:set ffs& nobinaryE[14C" Allow default test42.in format
:e #
:set ff=unixE[20C" 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! Xtest6E[22C" ! for when setting 'ff' is a change
oE[34m^V^@^V^@^V^@^[E[m: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-8E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for writing and reading a file starting with a BOME[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 111 lines, 2116 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H:" --- 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&E[15C" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
þþlatin-1
utf-8
ï»¿utf-8
utf-8-err
ï»¿utf-8E[34m~@E[merr
ucs-2
þÿE[34m^@E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[m
ucs-2le
ÿþuE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[m
ucs-4
E[34m^@^@E[mþÿE[34m^@^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[m
ucs-4le
ÿþE[34m^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[44;1HE[?12lE[?25h
E[?25lE[60;1HE[m:so! XdotestE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset encoding=utf-8E[?25lE[27mE[mE[HE[2JE[1;1H:" --- 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&E[15C" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
E[34m<fe><fe>E[mlatin-1
utf-8
E[34m<feff>E[mutf-8
utf-8-err
E[34m<feff>E[mutf-8E[34m<80>E[merr
ucs-2
E[34m<fe><ff>^@E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[m
ucs-2le
E[34m<ff><fe>E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[m
ucs-4
E[34m^@^@<fe><ff>^@^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[m
ucs-4le
E[34m<ff><fe>^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[45;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hset fileencodings=ucs-bom,latin-1E[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ff=unix ffs=unix           " This changes the file for DOS and MACE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Write the test filesE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^latin-1$/+1w! Xtest0E[?25l"Xtest0" E[60;10HE[KE[60;10H[New File] 1 line, 10 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^utf-8$/+1w! Xtest1E[?25l"Xtest1" E[60;10HE[KE[60;10H[New File] 1 line, 9 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^utf-8-err$/+1w! Xtest2E[?25l"Xtest2" E[60;10HE[KE[60;10H[New File] 1 line, 13 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^ucs-2$/+1w! Xtest3E[?25l"Xtest3" E[60;10HE[KE[60;10H[New File] 1 line, 14 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^ucs-2le$/+1w! Xtest4E[?25l"Xtest4" E[60;10HE[KE[60;10H[New File] 1 line, 17 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Need to add a NUL byte after the NL byteE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest4                      " Ignore change from setting 'ff'E[?25l"Xtest4" E[60;10HE[KE[60;10H1 line, 17 charactersE[1;1HE[34m<ff><fe>E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[m
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25h
E[?25lE[mE[34m^@E[mE[2;3HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noeolE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtest4" [Incomplete last line] 2 lines, 18 characters writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ffs& nobinary              " Allow default test42.in formatE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he #E[?25l"test42.in" [converted] 130 lines, 2385 charactersE[1;1H:" --- Check ucs-2leE[1;21HE[KE[2;1H:e! Xtest4
:redir >>test.outE[3;18HE[KE[4;1H:set fileencoding bomb?E[4;24HE[KE[5;1H:redir ENDE[5;11HE[KE[6;1H:set fenc=latin-1E[6;18HE[KE[7;1H:w >>test.outE[7;14HE[KE[8;1H:set fenc=ucs-2leE[8;18HE[KE[9;1H:w! Xtest4xE[9;12HE[KE[10;1H:"E[10;3HE[KE[11;1H:" --- Check ucs-4E[11;19HE[KE[12;1H:e! Xtest5E[12;11HE[KE[13;1H:redir >>test.outE[13;18HE[KE[14;1H:set fileencoding bomb?E[14;24HE[KE[15;1H:redir ENDE[15;11HE[KE[16;1H:set fenc=latin-1E[16;18HE[KE[17;1H:w >>test.outE[17;14HE[KE[18;1H:set fenc=ucs-4E[18;16HE[KE[19;1H:w! Xtest5xE[19;12HE[KE[20;1H:"E[20;3HE[KE[21;1H:" --- Check ucs-4leE[21;21HE[KE[22;1H:e! Xtest6E[22;11HE[KE[23;1H:redir >>test.outE[23;18HE[KE[24;1H:set fileencoding bomb?E[24;24HE[KE[25;1H:redir ENDE[25;11HE[KE[26;1H:set fenc=latin-1E[26;18HE[KE[27;1H:w >>test.outE[27;14HE[KE[28;1H:set fenc=ucs-4leE[28;18HE[KE[29;1H:w! Xtest6xE[29;12HE[KE[30;1H:"E[30;3HE[KE[31;1H:" --- Check the files written with BOME[31;40HE[KE[32;1H:set binE[32;9HE[KE[33;1H:e! test.outE[33;13HE[KE[34;1H:$r Xtest0xE[34;12HE[KE[35;1H:$r Xtest1xE[35;12HE[KE[36;1H:$r Xtest2xE[36;12HE[KE[37;1H:$r Xtest3xE[37;12HE[KE[38;1H:$r Xtest4xE[38;12HE[KE[39;1H:$r Xtest5xE[39;12HE[KE[40;1H:$r Xtest6xE[40;12HE[KE[41;1H:set nobin ff&               " Write the file in default formatE[41;64HE[KE[42;1H:w! test.outE[42;13HE[KE[43;1H:qa!E[43;5HE[KE[44;1HENDTESTE[44;8HE[KE[45;1HE[KE[46;1Hlatin-1E[46;8HE[KE[47;1HÃ¾Ã¾latin-1E[47;10HE[KE[48;1Hutf-8E[48;6HE[KE[49;1HÃ¯Â»Â¿utf-8E[49;9HE[KE[50;1Hutf-8-errE[50;10HE[KE[51;1HÃ¯Â»Â¿utf-8E[34m<80>E[merrE[51;16HE[KE[52;1Hucs-2E[52;6HE[KE[53;1HÃ¾Ã¿E[34m^@E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mE[53;20HE[KE[54;1Hucs-2leE[54;8HE[KE[55;1HÃ¿Ã¾uE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[mE[55;24HE[KE[56;1Hucs-4E[56;6HE[KE[57;1HE[34m^@^@E[mÃ¾Ã¿E[34m^@^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mE[57;48HE[KE[58;1Hucs-4leE[58;8HE[KE[59;1HÃ¿Ã¾E[34m^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[mE[59;56HE[KE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ff=unix                    " Format for files to writeE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^ucs-4$/+1w! Xtest5E[?25l"Xtest5" E[60;10HE[KE[60;10H[converted][New File] 1 line, 30 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^ucs-4le$/+1w! Xtest6E[?25l"Xtest6" E[60;10HE[KE[60;10H[converted][New File] 1 line, 35 characters writtenE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Need to add three NUL bytes after the NL byteE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest6                      " ! for when setting 'ff' is a changeE[?25l"Xtest6" E[60;10HE[KE[60;10H1 line, 33 charactersE[1;1HE[34m<ff><fe>^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[m
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25h
~   E[?25lE[mE[34m^@^@^@E[mE[2;7HE[KE[2;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noeolE[?25lE[2;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtest6" [Incomplete last line] 2 lines, 36 characters writtenE[2;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobinE[?25lE[2;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he #E[?25l"test42.in" [converted] 130 lines, 2385 charactersE[1;1H:" --- Check ucs-2leE[1;21HE[KE[2;1H:e! Xtest4
:redir >>test.outE[3;18HE[KE[4;1H:set fileencoding bomb?E[4;24HE[KE[5;1H:redir ENDE[5;11HE[KE[6;1H:set fenc=latin-1E[6;18HE[KE[7;1H:w >>test.outE[7;14HE[KE[8;1H:set fenc=ucs-2leE[8;18HE[KE[9;1H:w! Xtest4xE[9;12HE[KE[10;1H:"E[10;3HE[KE[11;1H:" --- Check ucs-4E[11;19HE[KE[12;1H:e! Xtest5E[12;11HE[KE[13;1H:redir >>test.outE[13;18HE[KE[14;1H:set fileencoding bomb?E[14;24HE[KE[15;1H:redir ENDE[15;11HE[KE[16;1H:set fenc=latin-1E[16;18HE[KE[17;1H:w >>test.outE[17;14HE[KE[18;1H:set fenc=ucs-4E[18;16HE[KE[19;1H:w! Xtest5xE[19;12HE[KE[20;1H:"E[20;3HE[KE[21;1H:" --- Check ucs-4leE[21;21HE[KE[22;1H:e! Xtest6E[22;11HE[KE[23;1H:redir >>test.outE[23;18HE[KE[24;1H:set fileencoding bomb?E[24;24HE[KE[25;1H:redir ENDE[25;11HE[KE[26;1H:set fenc=latin-1E[26;18HE[KE[27;1H:w >>test.outE[27;14HE[KE[28;1H:set fenc=ucs-4leE[28;18HE[KE[29;1H:w! Xtest6xE[29;12HE[KE[30;1H:"E[30;3HE[KE[31;1H:" --- Check the files written with BOME[31;40HE[KE[32;1H:set binE[32;9HE[KE[33;1H:e! test.outE[33;13HE[KE[34;1H:$r Xtest0xE[34;12HE[KE[35;1H:$r Xtest1xE[35;12HE[KE[36;1H:$r Xtest2xE[36;12HE[KE[37;1H:$r Xtest3xE[37;12HE[KE[38;1H:$r Xtest4xE[38;12HE[KE[39;1H:$r Xtest5xE[39;12HE[KE[40;1H:$r Xtest6xE[40;12HE[KE[41;1H:set nobin ff&               " Write the file in default formatE[41;64HE[KE[42;1H:w! test.outE[42;13HE[KE[43;1H:qa!E[43;5HE[KE[44;1HENDTESTE[44;8HE[KE[45;1HE[KE[46;1Hlatin-1E[46;8HE[KE[47;1HÃ¾Ã¾latin-1E[47;10HE[KE[48;1Hutf-8E[48;6HE[KE[49;1HÃ¯Â»Â¿utf-8E[49;9HE[KE[50;1Hutf-8-errE[50;10HE[KE[51;1HÃ¯Â»Â¿utf-8E[34m<80>E[merrE[51;16HE[KE[52;1Hucs-2E[52;6HE[KE[53;1HÃ¾Ã¿E[34m^@E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mE[53;20HE[KE[54;1Hucs-2leE[54;8HE[KE[55;1HÃ¿Ã¾uE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[mE[55;24HE[KE[56;1Hucs-4E[56;6HE[KE[57;1HE[34m^@^@E[mÃ¾Ã¿E[34m^@^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mE[57;48HE[KE[58;1Hucs-4leE[58;8HE[KE[59;1HÃ¿Ã¾E[34m^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[mE[59;56HE[KE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that editing a latin-1 file doesn't see a BOME[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest0E[?25l"Xtest0" E[60;10HE[KE[60;10H[converted] 1 line, 12 charactersE[1;1HÃ¾Ã¾latin-1E[1;10HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir! >test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=latin1
nobomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1HÃ¾Ã¾latin-1
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 12 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset bomb fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest0xE[?25l"Xtest0x" E[60;11HE[KE[60;11H[converted][New File] 1 line, 12 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check utf-8E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest1E[?25l"Xtest1" E[60;10HE[KE[60;10H1 line, 9 charactersE[1;1Hutf-8E[1;6HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=utf-8
  bomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hutf-8
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 6 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=utf-8E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest1xE[?25l"Xtest1x" E[60;11HE[KE[60;11H[New File] 1 line, 9 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check utf-8 with an error (will fall back to latin-1)E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest2E[?25l"Xtest2" E[60;10HE[KE[60;10H[converted] 1 line, 17 charactersE[1;1HÃ¯Â»Â¿utf-8E[34m<80>E[merrE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=latin1
nobomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1HÃ¯Â»Â¿utf-8E[34m<80>E[merr
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 17 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=utf-8E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest2xE[?25l"Xtest2x" E[60;11HE[KE[60;11H[New File] 1 line, 17 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check ucs-2E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest3E[?25l"Xtest3" E[60;10HE[KE[60;10H[converted] 1 line, 8 charactersE[1;1Hucs-2E[1;6HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=utf-16
  bomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hucs-2
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 6 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=ucs-2E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest3xE[?25l"Xtest3x" E[60;11HE[KE[60;11H[converted][New File] 1 line, 8 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check ucs-2leE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest4E[?25l"Xtest4" E[60;10HE[KE[60;10H[converted] 1 line, 10 charactersE[1;6HleE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=utf-16le
  bomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hucs-2le
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 8 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=ucs-2leE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest4xE[?25l"Xtest4x" E[60;11HE[KE[60;11H[converted][New File] 1 line, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check ucs-4E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest5E[?25l"Xtest5" E[60;10HE[KE[60;10H[converted] 1 line, 10 charactersE[1;5H4E[1;6HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=ucs-4
  bomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hucs-4
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 6 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=ucs-4E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest5xE[?25l"Xtest5x" E[60;11HE[KE[60;11H[converted][New File] 1 line, 10 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check ucs-4leE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! Xtest6E[?25l"Xtest6" E[60;10HE[KE[60;10H[converted] 1 line, 12 charactersE[1;6HleE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir >>test.outE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileencoding bomb?E[?25lE[60;1HE[KE[60;1H  fileencoding=ucs-4le
  bomb
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hucs-4le
E[1mE[34m~                                                                                               E[mE[60;3HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=latin-1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H[converted] 1 line, 8 characters appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=ucs-4leE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xtest6xE[?25l"Xtest6x" E[60;11HE[KE[60;11H[converted][New File] 1 line, 12 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check the files written with BOME[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! test.outE[?25l"test.out" E[60;12HE[KE[60;12H35 lines, 275 charactersE[1;1HE[KE[2;1HE[KE[3;1H  fileencoding=latin1E[3;22HE[KE[4;1HnobombE[4;7HE[KE[5;1HE[34m<fe><fe>E[mlatin-1E[5;16HE[KE[6;1HE[KE[7;1HE[KE[8;1H  fileencoding=utf-8E[8;21HE[KE[9;1H  bombE[9;7HE[KE[10;1Hutf-8E[10;6HE[KE[11;1HE[KE[12;1HE[KE[13;1H  fileencoding=latin1E[13;22HE[KE[14;1HnobombE[14;7HE[KE[15;1HE[34m<feff>E[mutf-8E[34m<80>E[merrE[15;19HE[KE[16;1HE[KE[17;1HE[KE[18;1H  fileencoding=utf-16E[18;22HE[KE[19;1H  bombE[19;7HE[KE[20;1Hucs-2E[20;6HE[KE[21;1HE[KE[22;1HE[KE[23;1H  fileencoding=utf-16leE[23;24HE[KE[24;1H  bombE[24;7HE[KE[25;1Hucs-2leE[25;8HE[KE[26;1HE[KE[27;1HE[KE[28;1H  fileencoding=ucs-4E[28;21HE[KE[29;1H  bombE[29;7HE[KE[30;1Hucs-4E[30;6HE[KE[31;1HE[KE[32;1HE[KE[33;1H  fileencoding=ucs-4leE[33;23HE[KE[34;1H  bombE[34;7HE[KE[35;1Hucs-4leE[35;8HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest0xE[?25l"Xtest0x" E[60;11HE[KE[60;11H1 line, 10 charactersE[36;1HE[34m<fe><fe>E[mlatin-1E[36;16HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest1xE[?25l"Xtest1x" E[60;11HE[KE[60;11H1 line, 9 charactersE[37;1HE[34m<feff>E[mutf-8E[37;12HE[KE[37;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest2xE[?25l"Xtest2x" E[60;11HE[KE[60;11H1 line, 17 charactersE[38;1HÃ¯Â»Â¿utf-8E[34m<80>E[merrE[38;16HE[KE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest3xE[?25l"Xtest3x" E[60;11HE[KE[60;11H1 line, 14 charactersE[39;1HE[34m<fe><ff>^@E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mE[39;26HE[KE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest4xE[?25l"Xtest4x" E[60;11HE[KE[60;11H[Incomplete last line] 2 lines, 18 charactersE[40;1HE[34m<ff><fe>E[muE[34m^@E[mcE[34m^@E[msE[34m^@E[m-E[34m^@E[m2E[34m^@E[mlE[34m^@E[meE[34m^@E[mE[40;30HE[KE[41;1HE[34m^@E[mE[41;3HE[KE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest5xE[?25l"Xtest5x" E[60;11HE[KE[60;11H1 line, 28 charactersE[42;1HE[34m^@^@<fe><ff>^@^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mE[42;54HE[KE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$r Xtest6xE[?25l"Xtest6x" E[60;11HE[KE[60;11H[Incomplete last line] 2 lines, 36 charactersE[43;1HE[34m<ff><fe>^@^@E[muE[34m^@^@^@E[mcE[34m^@^@^@E[msE[34m^@^@^@E[m-E[34m^@^@^@E[m4E[34m^@^@^@E[mlE[34m^@^@^@E[meE[34m^@^@^@E[mE[43;62HE[KE[44;1HE[34m^@^@^@E[mE[44;7HE[KE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobin ff&               " Write the file in default formatE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H44 lines, 409 characters writtenE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test43.in" 34 lines, 473 charactersE[1;1HTests 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

E[1mE[34m~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for regexp with various magic settings.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 19 lines, 268 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[23;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^1E[?25lE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25ha*b\{2}c\+/eE[?25lE[25;17HE[?12lE[?25hE[?25lE[25;17HE[KE[25;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\Md\*e\{2}f\+/eE[?25lE[26;17HE[?12lE[?25hE[?25lE[26;17HE[KE[26;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nomagicE[?25lE[26;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hg\*h\{2}i\+/eE[?25lE[27;17HE[?12lE[?25hE[?25lE[27;17HE[KE[27;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\mj*k\{2}l\+/eE[?25lE[28;17HE[?12lE[?25hE[?25lE[28;17HE[KE[28;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\vm*n{2}o+/eE[?25lE[29;17HE[?12lE[?25hE[?25lE[29;17HE[KE[29;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\V^aa$E[?25lE[30;5HE[?12lE[?25hE[?25laa$ xE[30;10HE[KE[30;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magicE[?25lE[30;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\v(a)(b)\2\1\1/eE[?25lE[31;14HE[?12lE[?25hE[?25lE[31;14HE[KE[31;13HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\V[ab]\(\[xy]\)\1E[?25lE[32;7HE[?12lE[?25hE[?25lab]xE[32;12HE[KE[32;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset undolevels=100E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H?E[?12lE[?25hbar?E[?25lE[60;5HE[KE[60;1HE[33;6HE[KE[34;1HE[1mE[34m~                                                                                               E[33;5HE[?12lE[?25hE[?25lE[mE[60;1H1 more line; before #2  0 seconds agoE[33;6HbarE[34;1HE[KE[33;6HE[?12lE[?25hE[?25lE[34;59rE[34;1HE[LE[1;60rE[34;1H9 fooE[60;1HE[KE[34;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?^1?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 11L, 137C writtenE[34;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test44.in" 66 lines, 2543 charactersE[1;1HTests 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
/à¸¡à¹E[34m~HE[m
x:" find word by change of word class
/ãE[34m~AE[m¡\<ãE[34m~BE[m«ãE[34m~CE[m¨\>ãE[34m~AE[m¯
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=]]* [[==E[31;1HK=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]*  E[32;1H[[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[==E[34;1Hk=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]*  E[35;1H[[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
x:" Test backwards search from a multi-byte char
/x
x?.
x:let @w=':%s#comb[i]nations#ÅE[34m~SE[mÌE[34m~DE[má¹£ÌE[34m~AE[mmÌ¥ÌE[34m~DE[mÎ±ÌE[34m~DE[mÌE[34m~FE[mÌE[34m~AE[m#g'
:@w
:?^1?,$w! test.out
:e! test.out
G:put =matchstr(\"×E[34m~PE[m×E[34m~QE[m×E[34m~RE[m×E[34m~SE[m\", \".\", 0, 2) " ×E[34m~QE[m
:put =matchstr(\"×E[34m~PE[m×E[34m~QE[m×E[34m~RE[m×E[34m~SE[m\", \"..\", 0, 2) " ×E[34m~QE[m×E[34m~RE[m
:put =matchstr(\"×E[34m~PE[m×E[34m~QE[m×E[34m~RE[m×E[34m~SE[m\", \".\", 0, 0) " ×E[34m~PE[m
:put =matchstr(\"×E[34m~PE[m×E[34m~QE[m×E[34m~RE[m×E[34m~SE[m\", \".\", 4, -1) " ×E[34m~RE[m
: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 à¸«à¸¡à¹E[34m~HE[mx à¸­à¸¡xE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for regexp with multi-byte encoding and various magic settings.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 40 lines, 1352 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[49;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfoE[?25lE[27mE[mE[HE[2JE[1;1HTests 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=]]* [[==E[31;1HK=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]*  E[32;1H[[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[==E[34;1Hk=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]*  E[35;1H[[=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 ¿¿xE[50;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^1E[?25lE[51;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25ha*b\{2}c\+/eE[?25lE[51;17HE[?12lE[?25hE[?25lE[51;17HE[KE[51;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\Md\*e\{2}f\+/eE[?25lE[52;17HE[?12lE[?25hE[?25lE[52;17HE[KE[52;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nomagicE[?25lE[52;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hg\*h\{2}i\+/eE[?25lE[53;17HE[?12lE[?25hE[?25lE[53;17HE[KE[53;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\mj*k\{2}l\+/eE[?25lE[54;17HE[?12lE[?25hE[?25lE[54;17HE[KE[54;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\vm*n{2}o+/eE[?25lE[55;17HE[?12lE[?25hE[?25lE[55;17HE[KE[55;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\V^aa$E[?25lE[56;5HE[?12lE[?25hE[?25laa$ xE[56;10HE[KE[56;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magicE[?25lE[56;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\v(a)(b)\2\1\1/eE[?25lE[57;14HE[?12lE[?25hE[?25lE[57;14HE[KE[57;13HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\V[ab]\(\[xy]\)\1E[?25lE[58;7HE[?12lE[?25hE[?25lab]xE[58;12HE[KE[58;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Now search for multi-byte without composing charE[?25lE[58;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h¿E[?25lE[59;8HE[?12lE[?25hE[?25lxE[59;9HE[KE[59;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Now search for multi-byte with composing charE[?25lE[59;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h¿¿E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Ha ¿¿x ¿¿xE[60;1HE[KE[59;8HE[?12lE[?25hE[?25lxE[59;9HE[KE[59;8HE[?12lE[?25hE[?25l
:E[?12lE[?25h" find word by change of word classE[?25lE[59;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h¿?\<¿?¿?\>¿?E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hb ¿?¿?¿?¿?E[60;1HE[KE[59;3HE[?12lE[?25hE[?25l¿?¿?¿?E[59;9HE[KE[59;3HE[?12lE[?25hE[?25l
:E[?12lE[?25h" Test \%u, [\u] and friendsE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\%u20acE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hc x ¬¿xE[60;1HE[KE[59;6HE[?12lE[?25hE[?25lxE[59;7HE[KE[59;6HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\u4f7f\u5929]\+E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hd ¿?¿?xE[60;1HE[KE[59;3HE[?12lE[?25hE[?25l¿?x E[59;7HE[KE[59;3HE[?12lE[?25hE[?25l
/E[?12lE[?25h\%U12345678E[?25lE[1;59rE[59;1H
E[1;60rE[59;1He ¿yE[60;1HE[KE[59;3HE[?12lE[?25hE[?25lyE[59;4HE[KE[59;3HE[?12lE[?25hE[?25l
/E[?12lE[?25h[\U1234abcd\u1234\uabcd]E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hf ¿zE[60;1HE[KE[59;3HE[?12lE[?25hE[?25lzE[59;4HE[KE[59;3HE[?12lE[?25hE[?25l
/E[?12lE[?25h\%d21879bE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hg a¿?bbE[60;1HE[KE[59;4HE[?12lE[?25hE[?25lbbE[59;6HE[KE[59;4HE[?12lE[?25hE[?25l
/E[?12lE[?25h [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=
E[59;96HKE[60;1H=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* 
E[59;96H[E[60;1H[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/eE[?25lE[58;1HE[1mE[37mE[41mE868: Error building NFA with equivalence class!E[mE[58;49HE[KE[59;1HE[KE[60;1HE[KE[59;1HE[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[2LE[?25lE[1;1H/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$E[4;9HE[KE[5;2H:set magicE[5;12HE[KE[6;1H/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/¿E[9;3HE[KE[10;2H:" Now search for multi-byte with composing char
/¿E[11;3HE[KE[12;1Hx:" find word by change of word class
/¿?\<¿?¿?\>¿?E[13;14HE[KE[14;1Hx:" Test \%u, [\u] and friends
/\%u20acE[15;10HE[KE[16;1Hx/[\u4f7f\u5929]\+
x/\%U12345678E[17;15HE[KE[18;1Hx/[\U1234abcd\u1234\uabcd]
x/\%d21879bE[19;12HE[KE[20;3H [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[==E[21;1HK=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]*  E[22;1H[[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/eE[23;7HaE[8CbE[8CcE[8CdE[8CeE[8CfE[8CgE[8ChE[8CiE[8CjE[7C==E[24;1HkE[8ClE[8CmE[8CnE[8CoE[8CpE[8CqE[8CrE[8CsE[8CtE[8Cu=]]*  E[25;1H[[=vE[8CwE[8CxE[8CyE[8Cz
x:" Test backwards search from a multi-byte charE[26;49HE[KE[27;1H/xE[27;3HE[KE[28;1Hx?.E[28;4HE[KE[29;3Hlet @w=':%s#comb[i]nations#¿¿m¿#g'E[29;37HE[KE[30;1H:@w
:?^1?,$w! test.out
:e! test.outE[32;13HE[KE[33;1HG:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿
:put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿
:put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿
:put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿
:w!E[37;4HE[KE[38;2Hqa!E[38;6HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1H1 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$ xE[46;10HE[KE[47;1H7 (a)(b) abbaE[47;14HE[KE[48;1H8 axx ab]xxE[48;12HE[KE[49;1H9 ¿¿x ¿xE[49;9HE[KE[50;1Ha ¿¿x ¿xE[50;10HE[KE[51;1Hb ¿?¿?¿?E[51;9HE[KE[52;1Hc x ¬xE[52;7HE[KE[53;1Hd ¿?E[53;7HE[KE[54;1He y E[54;5HE[KE[55;1Hf zE[55;5HE[KE[56;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ J¿ K¿¿¿¿ L¿¿¿¿¿ E[58;1H¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ ZZE[59;1H¿¿¿¿¿¿E[60;1HE[KE[59;6HE[?12lE[?25hE[?25lE[59;6HE[KE[59;5HE[?12lE[?25hE[?25l
/E[?12lE[?25h [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=
E[59;96HkE[60;1H=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* 
E[59;96H[E[60;1H[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/eE[?25lE[58;1HE[1mE[37mE[41mE868: Error building NFA with equivalence class!E[mE[58;49HE[KE[59;1HE[KE[60;1HE[KE[59;1HE[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[2LE[?25lE[1;1Hx/\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
/¿E[6;3HE[KE[7;2H:" Now search for multi-byte with composing char
/¿E[8;3HE[KE[9;1Hx:" find word by change of word class
/¿?\<¿?¿?\>¿?E[10;14HE[KE[11;1Hx:" Test \%u, [\u] and friends
/\%u20acE[12;10HE[KE[13;1Hx/[\u4f7f\u5929]\+
x/\%U12345678E[14;15HE[KE[15;1Hx/[\U1234abcd\u1234\uabcd]
x/\%d21879bE[16;12HE[KE[17;3H [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[==E[18;1HK=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]*  E[19;1H[[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/eE[20;7HaE[8CbE[8CcE[8CdE[8CeE[8CfE[8CgE[8ChE[8CiE[8CjE[7C==E[21;1HkE[8ClE[8CmE[8CnE[8CoE[8CpE[8CqE[8CrE[8CsE[8CtE[8Cu=]]*  E[22;1H[[=vE[8CwE[8CxE[8CyE[8Cz
x:" Test backwards search from a multi-byte charE[23;49HE[KE[24;1H/xE[24;3HE[KE[25;1Hx?.E[25;4HE[KE[26;3Hlet @w=':%s#comb[i]nations#¿¿m¿#g'E[26;37HE[KE[27;1H:@w
:?^1?,$w! test.out
:e! test.outE[29;13HE[KE[30;1HG:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿
:put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿
:put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿
:put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿
:w!E[34;4HE[KE[35;2Hqa!E[35;6HE[KE[36;1HENDTESTE[36;8HE[KE[37;1HE[KE[38;1H1 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$ xE[43;10HE[KE[44;1H7 (a)(b) abbaE[44;14HE[KE[45;1H8 axx ab]xxE[45;12HE[KE[46;1H9 ¿¿x ¿xE[46;9HE[KE[47;1Ha ¿¿x ¿xE[47;10HE[KE[48;1Hb ¿?¿?¿?E[48;9HE[KE[49;1Hc x ¬xE[49;7HE[KE[50;1Hd ¿?E[50;7HE[KE[51;1He y E[51;5HE[KE[52;1Hf zE[52;5HE[KE[53;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ J¿ K¿¿¿¿ L¿¿¿¿¿ E[55;1H¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ ZZE[56;1H¿¿¿¿¿
i aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ j¿¿ k¿¿¿¿ l¿¿¿¿ E[58;1H¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúûü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿ E[59;1H¿¿¿ z¿¿¿¿¿¿E[60;1HE[KE[59;11HE[?12lE[?25hE[?25lE[59;11HE[KE[59;10HE[?12lE[?25hE[?25l
:E[?12lE[?25h" Test backwards search from a multi-byte charE[?25lE[59;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hxE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hj 0123¿xE[60;1HE[KE[59;8HE[?12lE[?25hE[?25lE[59;8HE[KE[59;7HE[?12lE[?25hE[?25l
?E[?12lE[?25h.E[?25lE[59;6HE[?12lE[?25hE[?25l¿E[59;7HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @w=':%s#comb[i]nations#¿¿¿¿mmm¿¿¿E[1C#g'E[?25lE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h@wE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hk ¿¿m¿E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h?^1?,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 20L, 1011C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! test.outE[?25l"test.out" E[60;12HE[KE[60;12H20L, 1011CE[1;1H1 a aa abb abbccE[1;17HE[KE[2;1H2 d dd dee deeffE[2;17HE[KE[3;1H3 g gg ghh ghhiiE[3;17HE[KE[4;1H4 j jj jkk jkkll
5 m mm mnn mnnooE[5;17HE[KE[6;1H6 x aa$ x
7 (a)(b) abbaE[7;15HE[KE[8;1H8 axx ab]xxE[8;12HE[KE[9;1H9 ¿¿x ¿xE[9;10HE[KE[10;1Ha ¿¿x ¿x
b ¿?¿?¿?E[11;9HE[KE[12;1Hc x ¬xE[12;7HE[KE[13;1Hd ¿?xE[13;6HE[KE[14;1He yE[14;4HE[KE[15;1Hf zE[15;4HE[KE[16;1Hg abbE[16;7HE[KE[17;1Hh AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ J¿ K¿¿¿¿ L¿¿¿¿¿ E[18;1H¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ ZZE[19;1H¿¿¿¿¿E[19;7HE[KE[20;1Hi aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ j¿¿ k¿¿¿¿ l¿¿¿¿ E[21;1H¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúûü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿ E[22;1H¿¿¿ z¿¿¿¿¿
j 012¿
k ¿¿m¿E[24;7HE[KE[25;1HE[1mE[34m~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[24;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿E[?25lE[25;1H¿E[25;2HE[KE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿E[?25lE[26;1H¿¿E[26;3HE[KE[26;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿E[?25lE[27;1H¿E[27;2HE[KE[27;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿E[?25lE[28;1H¿E[28;2HE[KE[28;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw!E[?25l"test.out" 24L, 1025C writtenE[28;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test45.in" 80 lines, 1824 charactersE[1;1HTests 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{{ E[34m^[E[mr{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel("."))
:" test folding with indent
:set fdm=indent sw=2
/^2 b
i  E[34m^[E[mjI    E[34m^[E[m: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  E[34m^[E[mAcommentendE[34m^[E[m:set fdl=1
3j:call append("$", getline("."))
:set fdl=0
zOE[34m^LE[mj: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("."))E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for folding. vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 63 lines, 1691 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[8ME[1;60rE[52;1H/ii$
:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
:delfun Flvl
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" We also need the +syntax feature here.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has("syntax")E[?25l
:  E[?12lE[?25h   e! test.ok
E[?25l:  E[?12lE[?25h   w! test.out
E[?25l:  E[?12lE[?25h   qa!
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:endif
:" basic test if a fold can be created, opened, moving to the end and closed
/^1
zf2j:call append("$", "manual " . getline(foldclosed(".")))E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h" basic test if a fold can be created, opened, moving to the end and closedE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^1E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1 aaE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[34mE[47m+--  3 lines: 1 aa------------------------------------------------------------------------------E[59;1HE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hcall append("$", "manual " . getline(foldclosed(".")))E[?25lE[59;1HE[?12lE[?25hE[?25l1 aaE[59;5HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldclosed("."))E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H2 bb
3 ccE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hcall append("$", getline("."))E[?25lE[59;1HE[?12lE[?25hE[?25lE[57;1HE[34mE[47m+--  3 lines: 1 aa------------------------------------------------------------------------------E[mE[58;1H4 dd {{{
5 ee {{{ }}}E[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", getline(foldclosed(".")))E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test folding with markers.E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fdm=marker fdl=1 fdc=3E[?25lE[1;1HE[34mE[47m   E[mzf2j:call append("$", "manual " . getline(foldclosed(".")))
E[34mE[47m   E[mzo:call append("$", foldclosed("."))
E[34mE[47m   E[m]z:call append("$", getline("."))
E[34mE[47m   E[mzc:call append("$", getline(foldclosed(".")))
E[34mE[47m   E[m:" test folding with markers.
E[34mE[47m   E[m:set fdm=marker fdl=1 fdc=3
E[34mE[47m   E[m/^5
E[34mE[47m   E[m:call append("$", "marker " . foldlevel("."))
E[34mE[47m   E[m[z:call append("$", foldlevel("."))
E[34mE[47m   E[mjo{{ E[34m^[E[mr{jj:call append("$", foldlevel("."))
E[34mE[47m   E[mkYpj:call append("$", foldlevel("."))
E[34mE[47m   E[m:" test folding with indent
E[34mE[47m   E[m:set fdm=indent sw=2
E[34mE[47m   E[m/^2 b
E[34mE[47m   E[mi  E[34m^[E[mjI    E[34m^[E[m:call append("$", "indent " . foldlevel("."))
E[34mE[47m   E[mk:call append("$", foldlevel("."))
E[34mE[47m   E[m:" test syntax folding
E[34mE[47m   E[m:set fdm=syntax fdl=0
E[34mE[47m   E[m:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
E[34mE[47m   E[m:syn region Fd1 start="ee" end="ff" fold contained
E[34mE[47m   E[m:syn region Fd2 start="gg" end="hh" fold contained
E[34mE[47m   E[m:syn region Fd3 start="commentstart" end="commentend" fold contained
E[34mE[47m   E[mGzk:call append("$", "folding " . getline("."))
E[34mE[47m   E[mk:call append("$", getline("."))
E[34mE[47m   E[mjAcommentstart  E[34m^[E[mAcommentendE[34m^[E[m:set fdl=1
E[34mE[47m   E[m3j:call append("$", getline("."))
E[34mE[47m   E[m:set fdl=0
E[34mE[47m   E[mzOE[34m^LE[mj:call append("$", getline("."))
E[34mE[47m   E[m:" test expression folding
E[34mE[47m   E[m:fun Flvl()
E[34mE[47m   E[m  let l = getline(v:lnum)
E[34mE[47m   E[m  if l =~ "bb$"
E[34mE[47m   E[m    return 2
E[34mE[47m   E[m  elseif l =~ "gg$"
E[34mE[47m   E[m    return "s1"
E[34mE[47m   E[m  elseif l =~ "ii$"
E[34mE[47m   E[m    return ">2"
E[34mE[47m   E[m  elseif l =~ "kk$"
E[34mE[47m   E[m    return "0"
E[34mE[47m   E[m  endif
E[34mE[47m   E[m  return "="
E[34mE[47m   E[mendfun
E[34mE[47m   E[m:set fdm=expr fde=Flvl()
E[34mE[47m   E[m/bb$
E[34mE[47m   E[m:call append("$", "expr " . foldlevel("."))
E[34mE[47m   E[m/hh$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m/ii$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m/kk$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m:/^last/+1,$w! test.out
E[34mE[47m   E[m:delfun Flvl
E[34mE[47m   E[m:qa!
E[34mE[47m   E[mENDTEST
E[34mE[47m   
   E[m1 aaE[57;8HE[KE[58;1HE[34mE[47m   E[m2 bbE[58;8HE[KE[59;1HE[34mE[47m   E[m3 ccE[59;8HE[KE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^5E[?25lE[1;4H]z:call append("$", getline("."))E[1;38HE[KE[2;5HcE[18Cgetline(foldclosed(".")))E[3;4H:" test folding with markers.E[3;33HE[KE[4;4H:set fdm=marker fdl=1 fdc=3E[4;31HE[KE[5;4H/^5E[5;7HE[KE[6;5Hcall append("$", "marker " . foldlevel("."))E[7;4H[z:call append("$", foldlevel("."))E[8;4Hjo{{ E[34m^[E[mr{jj:call append("$", foldlevel(".")E[8;48HE[KE[9;4HkYpj:call append("$", foldlevel("."))E[10;4H:" test folding with indentE[10;31HE[KE[11;4H:set fdm=indent sw=2E[11;24HE[KE[12;4H/^2 bE[12;9HE[KE[13;4Hi  E[34m^[E[mjI    E[34m^[E[m:call append("$", "indent " . foldlevel("."))E[14;4Hk:call append("$", foldlevel("."))E[15;4H:" test syntax foldingE[15;26HE[KE[16;4H:set fdm=syntax fdl=0E[16;25HE[KE[17;5Hsyn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3E[18;6Hyn region Fd1 start="ee" end="ff" fold containedE[19;16HFd2E[8CggE[7ChhE[14CedE[19;54HE[KE[20;18H3E[8Ccommentstart" end="commentend" fold containedE[21;4HGzk:call append("$", "folding " . getline("."))E[21;51HE[KE[22;4Hk:call append("$", getline("."))E[22;36HE[KE[23;4HjAcommentstart  E[34m^[E[mAcommentendE[34m^[E[m:set fdl=1E[23;45HE[KE[24;4H3j:call append("$", getline("."))E[25;4H:set fdl=0E[25;14HE[KE[26;4HzOE[34m^LE[mj:call append("$", getline("."))E[27;5H" test expression foldingE[28;4H:fun Flvl()E[28;15HE[KE[29;4H  let l = getline(v:lnum)E[29;29HE[KE[30;4H  if l =~ "bb$"E[31;6H  return 2E[31;16HE[KE[32;6Helseif l =~ "gg$"E[33;15H"s1"E[34;19HiiE[35;16H>2E[36;19HkkE[37;16H0"E[37;18HE[KE[38;7HndifE[38;11HE[KE[39;6Hreturn "=E[39;16HE[KE[40;4HendfunE[40;10HE[KE[41;4H:set fdm=expr fde=Flvl()E[42;4H/bb$E[42;8HE[KE[43;5Hcall append("$", "expr " . foldlevel("."))E[44;5HhhE[45;22Hfoldlevel("."))E[45;37HE[KE[46;5HiiE[48;5HkkE[50;4H:/^last/+1,$w! test.outE[51;5Hdelfun FlvlE[51;16HE[KE[52;5Hqa!E[52;8HE[KE[53;4HENDTESTE[53;12HE[KE[54;4HE[KE[55;4H1 aaE[55;8HE[KE[56;4H2 bbE[57;4H3 cc
E[34mE[47m-E[mE[2C4 dd {{{
E[34mE[47m|-E[mE[1C5 ee {{{ }}}E[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", "marker " . foldlevel("."))E[?25lE[59;4HE[?12lE[?25hE[58;4HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[58;4HE[?12lE[?25hE[59;4HE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[34mE[47m|  E[m{{E[60;1HE[KE[59;6HE[?12lE[?25hE[?25lE[59;2HE[34mE[47m-E[mE[3C{E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[34mE[47m|| E[m6 ff }}}E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[34mE[47m|  E[m7 ggE[?12lE[?25hE[?25l
:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[59;6HE[?12lE[?25hE[58;6HE[?25lE[59;4H6 ff }}}E[59;4HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[34mE[47m   E[m7 ggE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test folding with indentE[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fdm=indent sw=2E[?25lE[25;1HE[34mE[47m-
|
|-
|
|-
|
|-
|
|-
|
|E[54;1H 
  
  
  
 
   E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^2 bE[?25lE[31msearch hit BOTTOM, continuing at TOPE[52;4HE[?12lE[?25hE[?25lE[mE[34mE[47m-E[mE[2C  2 bbE[?12lE[?25hE[53;5HE[?25lE[34mE[47m|-E[mE[1C    3 ccE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", "indent " . foldlevel("."))E[?25lE[53;7HE[?12lE[?25hE[52;7HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[52;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test syntax foldingE[?25lE[52;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fdm=syntax fdl=0E[?25lE[25;1HE[34mE[47m 
 
  
 
  
 
  
 
  
 
 E[52;1H 
  E[52;7HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsyn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3E[?25lE[54;1HE[34mE[47m+  +--  8 lines: 4 dd --------------------------------------------------------------------------E[mE[55;4Ha jjE[55;9HE[KE[56;4Hb kkE[57;4HlastE[57;9HE[KE[58;4Hmanual 1 aaE[59;4H-1E[59;6HE[KE[52;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsyn region Fd1 start="ee" end="ff" fold containedE[?25lE[52;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsyn region Fd2 start="gg" end="hh" fold containedE[?25lE[52;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsyn region Fd3 start="commentstart" end="commentend" fold containedE[?25lE[52;7HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[8ME[1;60rE[52;1HE[34mE[47m   E[m3 cc
E[34mE[47m   E[m1 aa
E[34mE[47m   E[mmarker 2
E[34mE[47m   E[m1
E[34mE[47m   E[m1
E[34mE[47m   E[m0
E[34mE[47m   E[mindent 2
E[34mE[47m   E[m1E[60;1HE[KE[59;4HE[?12lE[?25hE[46;4HE[?25lE[60;1H:E[?12lE[?25hcall append("$", "folding " . getline("."))E[?25lE[46;4HE[?12lE[?25hE[45;4HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", getline("."))E[?25lE[45;4HE[?12lE[?25hE[46;4HE[?25lE[34mE[47m--E[mE[1C4 dd {{{commentstart  E[46;26HE[KE[47;1HE[34mE[47m||E[mE[1C5 ee {{{ }}}
E[34mE[47m||E[mE[1C{{{E[48;7HE[KE[49;1HE[34mE[47m||E[mE[1C6 ff }}}
E[34mE[47m||E[mE[1C6 ff }}}E[50;13HE[KE[51;1HE[34mE[47m||E[mE[1C7 gg
E[34mE[47m||E[mE[1C8 hh
E[34mE[47m||E[mE[1C9 ii
E[34mE[47m||E[mE[1Ca jjE[54;8HE[KE[55;1HE[34mE[47m||E[mE[1Cb kk
E[34mE[47m||E[mE[1Clast
E[34mE[47m||E[mE[1Cmanual 1 aa
E[34mE[47m||E[mE[1C-1E[58;6HE[KE[59;1HE[34mE[47m||E[mE[1C3 ccE[46;25HE[?12lE[?25hE[?25lE[46;2HE[34mE[47m E[mE[23CcommentendE[47;2HE[34mE[47m-E[50;2H 
|-

| 
  
  
  
  
  
  E[46;35HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset fdl=1E[?25lE[47;2HE[34mE[47m+ +---  3 lines: 5 ee -------------------------------------------------------------------------E[48;2H E[mE[1C6 ff }}}E[49;2HE[34mE[47m+ +---  2 lines: 7 gg--------------------------------------------------------------------------E[mE[50;4H9 iiE[50;9HE[KE[51;1HE[34mE[47m  E[mE[1Ca jj
E[34mE[47m  E[mE[1Cb kk
E[34mE[47m E[mE[2ClastE[54;4Hmanual 1 aaE[55;4H-1E[55;6HE[KE[56;4H3 ccE[57;4H1 aaE[57;8HE[KE[58;4Hmarker 2E[59;4H1E[59;6HE[KE[46;35HE[?12lE[?25hE[49;4HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", getline("."))E[?25lE[49;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fdl=0E[?25lE[46;1HE[34mE[47m+  +--  8 lines: 4 dd commentstart  commentend--------------------------------------------------E[47;1H  E[mE[1Ca jjE[47;8HE[KE[48;1HE[34mE[47m E[mE[2Cb kkE[48;9HE[KE[49;1HE[34mE[47m  E[mE[1ClastE[49;8HE[KE[50;1HE[34mE[47m E[mE[2Cmanual 1 aaE[51;4H-1E[51;6HE[KE[52;4H3 ccE[53;4H1 aaE[54;6Hrker 2E[54;13HE[KE[55;4H1E[55;5HE[KE[56;4H1E[56;6HE[KE[57;4H0E[57;6HE[KE[58;4HindentE[46;4HE[?12lE[?25hE[?25lE[34mE[47m-E[mE[2C4 dd {{{commentstart  commentendE[46;36HE[KE[47;1HE[34mE[47m|-E[mE[1C5 ee {{{ }}}
E[34mE[47m||E[mE[1C{{{E[48;7HE[KE[49;1HE[34mE[47m||E[mE[1C6 ff }}}
E[34mE[47m|E[mE[2C6 ff }}}E[50;13HE[KE[51;1HE[34mE[47m|-E[mE[1C7 gg
E[34mE[47m||E[mE[1C8 hh
E[34mE[47m|E[mE[2C9 iiE[54;4Ha jjE[54;8HE[KE[55;4Hb kkE[56;4HlastE[57;4Hmanual 1 aaE[58;4H-1E[58;6HE[KE[59;4H3 ccE[51;7HE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1HE[34mE[47m   E[mi  E[34m^[E[mjI    E[34m^[E[m:call append("$", "indent " . foldlevel("."))
E[34mE[47m   E[mk:call append("$", foldlevel("."))
E[34mE[47m   E[m:" test syntax folding
E[34mE[47m   E[m:set fdm=syntax fdl=0
E[34mE[47m   E[m:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
E[34mE[47m   E[m:syn region Fd1 start="ee" end="ff" fold contained
E[34mE[47m   E[m:syn region Fd2 start="gg" end="hh" fold contained
E[34mE[47m   E[m:syn region Fd3 start="commentstart" end="commentend" fold contained
E[34mE[47m   E[mGzk:call append("$", "folding " . getline("."))
E[34mE[47m   E[mk:call append("$", getline("."))
E[34mE[47m   E[mjAcommentstart  E[34m^[E[mAcommentendE[34m^[E[m:set fdl=1
E[34mE[47m   E[m3j:call append("$", getline("."))
E[34mE[47m   E[m:set fdl=0
E[34mE[47m   E[mzOE[34m^LE[mj:call append("$", getline("."))
E[34mE[47m   E[m:" test expression folding
E[34mE[47m   E[m:fun Flvl()
E[34mE[47m   E[m  let l = getline(v:lnum)
E[34mE[47m   E[m  if l =~ "bb$"
E[34mE[47m   E[m    return 2
E[34mE[47m   E[m  elseif l =~ "gg$"
E[34mE[47m   E[m    return "s1"
E[34mE[47m   E[m  elseif l =~ "ii$"
E[34mE[47m   E[m    return ">2"
E[34mE[47m   E[m  elseif l =~ "kk$"
E[34mE[47m   E[m    return "0"
E[34mE[47m   E[m  endif
E[34mE[47m   E[m  return "="
E[34mE[47m   E[mendfun
E[34mE[47m   E[m:set fdm=expr fde=Flvl()
E[34mE[47m   E[m/bb$
E[34mE[47m   E[m:call append("$", "expr " . foldlevel("."))
E[34mE[47m   E[m/hh$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m/ii$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m/kk$
E[34mE[47m   E[m:call append("$", foldlevel("."))
E[34mE[47m   E[m:/^last/+1,$w! test.out
E[34mE[47m   E[m:delfun Flvl
E[34mE[47m   E[m:qa!
E[34mE[47m   E[mENDTEST
E[34mE[47m   
   E[m1 aa
E[34mE[47m   E[m  2 bb
E[34mE[47m   E[m    3 cc
E[34mE[47m-  E[m4 dd {{{commentstart  commentend
E[34mE[47m|- E[m5 ee {{{ }}}
E[34mE[47m|| E[m{{{
E[34mE[47m|| E[m6 ff }}}
E[34mE[47m|  E[m6 ff }}}
E[34mE[47m|- E[m7 gg
E[34mE[47m|| E[m8 hh
E[34mE[47m|  E[m9 ii
E[34mE[47m   E[ma jj
E[34mE[47m   E[mb kk
E[34mE[47m   E[mlast
E[34mE[47m   E[mmanual 1 aa
E[34mE[47m   E[m-1
E[34mE[47m   E[m3 ccE[51;7HE[?12lE[?25hE[52;4HE[?25lE[60;1H:E[?12lE[?25hcall append("$", getline("."))E[?25lE[52;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test expression foldingE[?25lE[52;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfun Flvl()E[?25l
:  E[?12lE[?25h  let l = getline(v:lnum)
E[?25l:  E[?12lE[?25h  if l =~ "bb$"
E[?25l:    E[?12lE[?25h    return 2
E[?25l:    E[?12lE[?25h  elseif l =~ "gg$"
E[?25l:    E[?12lE[?25h    return "s1"
E[?25l:    E[?12lE[?25h  elseif l =~ "ii$"
E[?25l:    E[?12lE[?25h    return ">2"
E[?25l:    E[?12lE[?25h  elseif l =~ "kk$"
E[?25l:    E[?12lE[?25h    return "0"
E[?25l:    E[?12lE[?25h  endif
E[?25l:  E[?12lE[?25h  return "="
E[?25l:  E[?12lE[?25hendfunE[1;1HE[12LE[?25lE[1;1HE[34mE[47m   E[mi  E[34m^[E[mjI    E[34m^[E[m:call append("$", "indent " . foldlevel("."))
E[34mE[47m   E[mk:call append("$", foldlevel("."))
E[34mE[47m   E[m:" test syntax folding
E[34mE[47m   E[m:set fdm=syntax fdl=0
E[34mE[47m   E[m:syn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3
E[34mE[47m   E[m:syn region Fd1 start="ee" end="ff" fold contained
E[34mE[47m   E[m:syn region Fd2 start="gg" end="hh" fold contained
E[34mE[47m   E[m:syn region Fd3 start="commentstart" end="commentend" fold contained
E[34mE[47m   E[mGzk:call append("$", "folding " . getline("."))
E[34mE[47m   E[mk:call append("$", getline("."))
E[34mE[47m   E[mjAcommentstart  E[34m^[E[mAcommentendE[34m^[E[m:set fdl=1
E[34mE[47m   E[m3j:call append("$", getline("."))E[60;1HE[KE[52;4HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fdm=expr fde=Flvl()E[?25lE[44;1HE[34mE[47m+  +-- 11 lines: 2 bb---------------------------------------------------------------------------E[mE[45;4Hb kkE[45;8HE[KE[46;1HE[34mE[47m E[mE[2ClastE[46;9HE[KE[47;1HE[34mE[47m  E[mE[1Cmanual 1 aaE[47;15HE[KE[48;1HE[34mE[47m  E[mE[1C-1E[48;6HE[KE[49;1HE[34mE[47m  E[mE[1C3 ccE[49;9HE[KE[50;1HE[34mE[47m E[mE[2C1 aaE[50;9HE[KE[51;1HE[34mE[47m  E[mE[1Cmarker 2
E[34mE[47m  E[mE[1C1E[52;6HE[KE[53;1HE[34mE[47m E[mE[2C1E[53;6HE[KE[54;4H0E[54;6HE[KE[55;4Hindent 2E[56;4H1E[56;5HE[KE[57;1HE[34mE[47m+  +--  4 lines: folding 9 ii-------------------------------------------------------------------E[mE[58;4HE[1mE[34m~                                                                                            E[59;4H~                                                                                            E[44;4HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25hbb$E[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[44;1HE[34mE[47m--E[mE[1C  2 bbE[44;10HE[KE[45;1HE[34mE[47m||E[mE[1C    3 cc
E[34mE[47m||E[mE[1C4 dd {{{commentstart  commentend
E[34mE[47m||E[mE[1C5 ee {{{ }}}
E[34mE[47m||E[mE[1C{{{
E[34mE[47m||E[mE[1C6 ff }}}
E[34mE[47m||E[mE[1C6 ff }}}
E[34mE[47m||E[mE[1C7 ggE[51;8HE[KE[52;1HE[34mE[47m|E[mE[2C8 hh
E[34mE[47m|+ +---  2 lines: 9 ii--------------------------------------------------------------------------E[mE[54;4Hb kkE[55;4HlastE[55;8HE[KE[56;4Hmanual 1 aa
E[34mE[47m E[mE[2C-1E[57;6HE[KE[58;4H3 ccE[58;8HE[KE[59;4H1 aaE[59;8HE[KE[44;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", "expr " . foldlevel("."))E[?25lE[44;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hhh$E[?25lE[52;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[52;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hii$E[?25lE[53;2HE[34mE[47m-E[mE[1C9 iiE[53;8HE[KE[54;1HE[34mE[47m||E[mE[1Ca jjE[55;4Hb kkE[56;4HlastE[56;8HE[KE[57;4Hmanual 1 aaE[58;4H-1E[58;6HE[KE[59;4H3 ccE[53;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[53;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hkk$E[?25lE[55;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", foldlevel("."))E[?25lE[55;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^last/+1,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 18 lines, 96 characters writtenE[55;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfun FlvlE[?25lE[55;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test46.in" 27 lines, 431 charactersE[1;1HTests 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
E[1mE[34m~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for multi-line regexps with ":s". vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 8 lines, 292 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[12;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test if replacing a line break works with a back referenceE[?25lE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^1/,/^2/s/\n\(.\)/ \1/E[?25l4 substitutions on 1 lineE[14;59rE[14;1HE[4ME[1;60rE[14;1H1 aa bb cc 2 dd eeE[56;1HE[1mE[34m~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[60;1H4 substitutions on 1 lineE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test if inserting a line break works with a back referenceE[?25lE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^3/,/^4/s/\(.\)$/\r\1/E[?25l3 substitutions on 3 linesE[18;59rE[18;1HE[3LE[1;60rE[15;4HE[KE[16;1HfE[16;2HE[KE[17;1HgE[17;3HE[KE[18;1Hh
4 i
jE[60;1HE[KE[60;1H3 substitutions on 3 linesE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test if replacing a line break with another line break worksE[?25lE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^5/,/^6/s/\(\_d\{3}\)/x\1x/E[?25l3 substitutions on 2 linesE[60;27HE[KE[21;4Hx8
8xb cx9
9xd
6 ex7
7x7fE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^1/,$w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 13 lines, 70 characters writtenE[25;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test47.in" 62 lines, 1351 charactersE[1;1HTests 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
ddGpkkrXoxxxE[34m^[E[m:w! Xtest2
:file Nop
ggoyyyE[34m^[E[mjjjozzzzE[34m^[E[m
:vert diffsplit Xtest
:vert diffsplit Xtest2
:" jump to second window for a moment to have filler line appear at start of
:" first window
E[34m^W^WE[mggE[34m^WE[mpgg: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()
E[34m^W^WE[mgg:let two = winline()
j:let two = two . "-" . winline()
j:let two = two . "-" . winline()
j:let two = two . "-" . winline()
j:let two = two . "-" . winline()
E[34m^W^WE[mgg: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()
E[34m^W^WE[m: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 bbE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for vertical splits and filler lines in diff modeE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 52 lines, 1250 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[56;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Disable the title to avoid xterm keeping the wrong one.E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset notitle noiconE[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^1E[?25lE[58;1HE[?12lE[?25hE[?25l

5 lines yankedE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[59;1HE[7mtest47.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1H5 more linesE[2;1H1 aaE[2;5HE[KE[3;1H2 bbE[3;5HE[KE[4;1H3 ccE[4;5HE[KE[5;1H4 ddE[5;5HE[KE[6;1H5 eeE[6;5HE[KE[30;11HE[1mE[7m[+]E[2;1HE[?12lE[?25hE[1;1HE[?25lE[1;29rE[mE[29;1H
E[1;60rE[29;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw! XtestE[?25l"Xtest" E[60;9HE[KE[60;9H[New File] 5 lines, 25 characters writtenE[30;1HE[1mE[7mXtesta         E[1;1HE[?12lE[?25hE[?25lE[1;29rE[mE[29;1H
E[1;60rE[29;1HE[1mE[34m~                                                                                               E[mE[30;7HE[1mE[7m[+]E[mE[60;1HE[KE[1;1HE[?12lE[?25h


E[?25l
1 aaE[5;5HE[KE[5;1HE[?12lE[?25hE[4;1HE[3;1HE[?25lXE[?12lE[?25hE[?25lE[4;29rE[4;1HE[LE[1;60rE[4;1HxxxE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw! Xtest2E[?25l"Xtest2" E[60;10HE[KE[60;10H[New File] 6 lines, 29 characters writtenE[30;7HE[1mE[7m    E[4;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hfile NopE[?25l"Nop" [Not edited] line 4 of 6 --66%-- col 3E[30;1HE[1mE[7mNops   E[4;3HE[?12lE[?25hE[1;1HE[?25lE[2;29rE[mE[2;1HE[LE[1;60rE[2;1HyyyE[30;5HE[1mE[7m[+]E[mE[60;1HE[KE[2;3HE[?12lE[?25h
3 
X 
xxE[?25lE[6;29rE[6;1HE[LE[1;60rE[6;1HzzzzE[?12lE[?25h
5 eE[?25lE[60;1H:E[?12lE[?25hvert diffsplit XtestE[?25l"Xtest" E[60;9HE[KE[60;9H5 lines, 25 charactersE[1;1HE[34mE[47m  E[mE[44m1 aa                                          E[mE[7m|E[m
E[34mE[47m  E[m2 bbE[42CE[7m|E[m
E[34mE[47m  E[mE[1mE[34mE[46m----------------------------------------------E[mE[7m|E[m
E[34mE[47m  E[m3 ccE[42CE[7m|E[m
E[34mE[47m  E[mE[1mE[41m4E[mE[45m dd                                          E[mE[7m|E[m
E[34mE[47m  E[mE[1mE[34mE[46m----------------------------------------------E[mE[7m|E[m
E[34mE[47m  E[mE[1mE[34mE[46m----------------------------------------------E[mE[7m|E[m
E[34mE[47m  E[m5 eeE[42CE[7m|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[13;49H|E[14;49H|E[15;49H|E[16;49H|E[17;49H|E[18;49H|E[19;49H|E[20;49H|E[21;49H|E[22;49H|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[mE[9;1HE[34mE[47m  E[mE[1mE[34mE[46m----------------------------------------------E[m
E[34mE[47m  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  E[mE[10;3HE[1mE[34m~E[11;3H~E[12;3H~E[13;3H~E[14;3H~E[15;3H~E[16;3H~E[17;3H~E[18;3H~E[19;3H~E[20;3H~E[21;3H~E[22;3H~E[23;3H~E[24;3H~E[25;3H~E[26;3H~E[27;3H~E[28;3H~E[29;3H~E[m
E[1mE[7mXtest+   E[mE[1;50HE[34mE[47m  E[mE[1mE[34mE[46m---------------------------------------------E[mE[2;50HE[34mE[47m  E[m2 bbE[3;50HE[34mE[47m  E[mE[44myyy                                          E[mE[4;50HE[34mE[47m  E[m3 ccE[5;50HE[34mE[47m  E[mE[1mE[41mXE[mE[45m dd                                         E[mE[6;50HE[34mE[47m  E[mE[44mxxx                                          E[mE[7;50HE[34mE[47m  E[mE[44mzzzz                                         E[mE[8;50HE[34mE[47m  E[m5 eeE[9;50HE[34mE[47m  E[mE[44m1 aa                                         E[mE[10;50HE[34mE[47m  E[11;50H  E[12;50H  E[13;50H  E[14;50H  E[15;50H  E[16;50H  E[17;50H  E[18;50H  E[19;50H  E[20;50H  E[21;50H  E[22;50H  E[23;50H  E[24;50H  E[25;50H  E[26;50H  E[27;50H  E[28;50H  E[29;50H  E[mE[10;52HE[1mE[34m~E[11;52H~E[12;52H~E[13;52H~E[14;52H~E[15;52H~E[16;52H~E[17;52H~E[18;52H~E[19;52H~E[20;52H~E[21;52H~E[22;52H~E[23;52H~E[24;52H~E[25;52H~E[26;52H~E[27;52H~E[28;52H~E[29;52H~E[mE[30;50HE[7mNop [+]                                        E[1;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hvert diffsplit Xtest2E[?25l"Xtest2" E[60;10HE[KE[60;10H6 lines, 29 charactersE[27mE[mE[HE[2JE[1;1HE[34mE[47m  E[mE[1mE[34mE[46m------------------------------E[mE[7m|E[m
E[34mE[47m  E[m2 bbE[26CE[7m|E[m
E[34mE[47m  E[mE[1mE[34mE[46m------------------------------E[mE[7m|E[m
E[34mE[47m  E[m3 ccE[26CE[7m|E[m
E[34mE[47m  E[mE[1mE[41mXE[mE[45m dd                          E[mE[7m|E[m
E[34mE[47m  E[mE[45mxxx                           E[mE[7m|E[m
E[34mE[47m  E[mE[1mE[34mE[46m------------------------------E[mE[7m|E[m
E[34mE[47m  E[m5 eeE[26CE[7m|E[m
E[34mE[47m  E[mE[44m1 aa                          E[mE[7m|E[10;33H|E[11;33H|E[12;33H|E[13;33H|E[14;33H|E[15;33H|E[16;33H|E[17;33H|E[18;33H|E[19;33H|E[20;33H|E[21;33H|E[22;33H|E[23;33H|E[24;33H|E[25;33H|E[26;33H|E[27;33H|E[28;33H|E[29;33H|E[mE[10;1HE[34mE[47m  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  E[mE[10;3HE[1mE[34m~                             E[11;3H~                             E[12;3H~                             E[13;3H~                             E[14;3H~                             E[15;3H~                             E[16;3H~                             E[17;3H~                             E[18;3H~                             E[19;3H~                             E[20;3H~                             E[21;3H~                             E[22;3H~                             E[23;3H~                             E[24;3H~                             E[25;3H~                             E[26;3H~                             E[27;3H~                             E[28;3H~                             E[29;3H~                             E[m
E[1mE[7mXtest2                           E[mE[1;34HE[34mE[47m  E[mE[44m1 aa                         E[mE[7m|E[mE[2;34HE[34mE[47m  E[m2 bbE[25CE[7m|E[mE[3;34HE[34mE[47m  E[mE[1mE[34mE[46m-----------------------------E[mE[7m|E[mE[4;34HE[34mE[47m  E[m3 ccE[25CE[7m|E[mE[5;34HE[34mE[47m  E[mE[1mE[41m4E[mE[45m dd                         E[mE[7m|E[mE[6;34HE[34mE[47m  E[mE[1mE[34mE[46m-----------------------------E[mE[7m|E[mE[7;34HE[34mE[47m  E[mE[1mE[34mE[46m-----------------------------E[mE[7m|E[mE[8;34HE[34mE[47m  E[m5 eeE[25CE[7m|E[9;65H|E[10;65H|E[11;65H|E[12;65H|E[13;65H|E[14;65H|E[15;65H|E[16;65H|E[17;65H|E[18;65H|E[19;65H|E[20;65H|E[21;65H|E[22;65H|E[23;65H|E[24;65H|E[25;65H|E[26;65H|E[27;65H|E[28;65H|E[29;65H|E[mE[9;34HE[34mE[47m  E[mE[1mE[34mE[46m-----------------------------E[mE[10;34HE[34mE[47m  E[11;34H  E[12;34H  E[13;34H  E[14;34H  E[15;34H  E[16;34H  E[17;34H  E[18;34H  E[19;34H  E[20;34H  E[21;34H  E[22;34H  E[23;34H  E[24;34H  E[25;34H  E[26;34H  E[27;34H  E[28;34H  E[29;34H  E[mE[10;36HE[1mE[34m~                            E[11;36H~                            E[12;36H~                            E[13;36H~                            E[14;36H~                            E[15;36H~                            E[16;36H~                            E[17;36H~                            E[18;36H~                            E[19;36H~                            E[20;36H~                            E[21;36H~                            E[22;36H~                            E[23;36H~                            E[24;36H~                            E[25;36H~                            E[26;36H~                            E[27;36H~                            E[28;36H~                            E[29;36H~                            E[mE[30;34HE[7mXtest                           E[mE[1;66HE[34mE[47m  E[mE[1mE[34mE[46m-----------------------------E[mE[2;66HE[34mE[47m  E[m2 bbE[3;66HE[34mE[47m  E[mE[44myyy                          E[mE[4;66HE[34mE[47m  E[m3 ccE[5;66HE[34mE[47m  E[mE[1mE[41mXE[mE[45m dd                         E[mE[6;66HE[34mE[47m  E[mE[45mxxx                          E[mE[7;66HE[34mE[47m  E[mE[44mzzzz                         E[mE[8;66HE[34mE[47m  E[m5 eeE[9;66HE[34mE[47m  E[mE[44m1 aa                         E[mE[10;66HE[34mE[47m  E[11;66H  E[12;66H  E[13;66H  E[14;66H  E[15;66H  E[16;66H  E[17;66H  E[18;66H  E[19;66H  E[20;66H  E[21;66H  E[22;66H  E[23;66H  E[24;66H  E[25;66H  E[26;66H  E[27;66H  E[28;66H  E[29;66H  E[mE[10;68HE[1mE[34m~                            E[11;68H~                            E[12;68H~                            E[13;68H~                            E[14;68H~                            E[15;68H~                            E[16;68H~                            E[17;68H~                            E[18;68H~                            E[19;68H~                            E[20;68H~                            E[21;68H~                            E[22;68H~                            E[23;68H~                            E[24;68H~                            E[25;68H~                            E[26;68H~                            E[27;68H~                            E[28;68H~                            E[29;68H~                            E[mE[30;66HE[7mNop [+]                        E[mE[31;1Hj:let three = three . "-" . winline()
j:let three = three . "-" . winline()
j:let three = three . "-" . winline()
j:let three = three . "-" . winline()
E[34m^W^WE[m: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
E[7mtest47.in                                                                                       E[2;3HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h" jump to second window for a moment to have filler line appear at start ofE[?25lE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" first windowE[?25lE[2;3HE[?12lE[?25hE[?25lE[30;1HE[7mXtest2E[mE[1mE[7m E[mE[7m                           E[mE[1mE[7mXtest                           E[1;36HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[30;1HXtest2                           E[mE[7mXtestE[mE[1mE[7m E[mE[7m                           E[2;3HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = winline()E[?25lE[2;3HE[?12lE[?25hE[?25lE[4;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = one . "-" . winline()E[?25lE[4;3HE[?12lE[?25hE[?25lE[5;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = one . "-" . winline()E[?25lE[5;3HE[?12lE[?25hE[?25lE[6;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = one . "-" . winline()E[?25lE[6;3HE[?12lE[?25hE[?25lE[8;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = one . "-" . winline()E[?25lE[8;3HE[?12lE[?25hE[?25lE[9;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet one = one . "-" . winline()E[?25lE[9;3HE[?12lE[?25hE[?25lE[30;1HE[7mXtest2E[mE[1mE[7m E[mE[7m                           E[mE[1mE[7mXtest                           E[8;36HE[?12lE[?25hE[?25lE[1;36HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet two = winline()E[?25lE[1;36HE[?12lE[?25hE[?25lE[2;36HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet two = two . "-" . winline()E[?25lE[2;36HE[?12lE[?25hE[?25lE[4;36HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet two = two . "-" . winline()E[?25lE[4;36HE[?12lE[?25hE[?25lE[5;36HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet two = two . "-" . winline()E[?25lE[5;36HE[?12lE[?25hE[?25lE[8;36HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet two = two . "-" . winline()E[?25lE[8;36HE[?12lE[?25hE[?25lE[30;34HE[7mXtestE[mE[1mE[7m E[mE[7m                           E[mE[1mE[7mNop [+]                        E[8;68HE[?12lE[?25hE[?25lE[2;68HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = winline()E[?25lE[2;68HE[?12lE[?25hE[?25lE[3;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[3;68HE[?12lE[?25hE[?25lE[4;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[4;68HE[?12lE[?25hE[?25lE[5;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[5;68HE[?12lE[?25hE[?25lE[6;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[6;68HE[?12lE[?25hE[?25lE[7;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[7;68HE[?12lE[?25hE[?25lE[8;68HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet three = three . "-" . winline()E[?25lE[8;68HE[?12lE[?25hE[30;66HE[7mNop [+]E[mE[1mE[7m E[mE[7m                        E[mE[59;1HE[1mE[7mtest47.in                                                                                       E[58;1HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", one)E[?25lE[59;11HE[1mE[7m[+]E[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", two)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append("$", three)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-2,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 3 lines, 36 characters writtenE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test that diffing shows correct filler linesE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdiffoff!E[?25lE[1;1HE[1mE[34mE[46m--E[m
2 bb  
3 cc                            
X dd  
xxx                             
5 ee                            
1 aa                            
E[1mE[34m~                               
~                               
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   
~   E[mE[1;34H1 aa                           E[2;34H2 bb  E[3;34H3 cc                           E[4;34H4 dd  E[5;34H5 ee                           E[6;34HE[1mE[34m~                              E[7;34H~                              E[8;34H~                              E[9;34H~                              E[10;34H~   E[11;34H~   E[12;34H~   E[13;34H~   E[14;34H~   E[15;34H~   E[16;34H~   E[17;34H~   E[18;34H~   E[19;34H~   E[20;34H~   E[21;34H~   E[22;34H~   E[23;34H~   E[24;34H~   E[25;34H~   E[26;34H~   E[27;34H~   E[28;34H~   E[29;34H~   E[mE[1;66H2 bbE[1;70HE[KE[2;66HyyyE[2;70HE[KE[3;66H3 ccE[3;70HE[KE[4;66HX ddE[4;70HE[KE[5;66HxxxE[5;69HE[KE[6;66HzzzzE[6;70HE[KE[7;66H5 eeE[7;70HE[KE[8;66H1 aaE[8;70HE[KE[9;66HE[1mE[34m~                              E[10;66H~   E[11;66H~   E[12;66H~   E[13;66H~   E[14;66H~   E[15;66H~   E[16;66H~   E[17;66H~   E[18;66H~   E[19;66H~   E[20;66H~   E[21;66H~   E[22;66H~   E[23;66H~   E[24;66H~   E[25;66H~   E[26;66H~   E[27;66H~   E[28;66H~   E[29;66H~   E[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwindo :bw!E[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25henewE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =range(4,10)E[?25l7 more linesE[60;13HE[KE[2;1H4E[2;2HE[KE[3;1H5E[3;2HE[KE[4;1H6E[4;2HE[KE[5;1H7E[5;2HE[KE[6;1H8E[6;2HE[KE[7;1H9E[7;2HE[KE[8;1H10E[8;3HE[KE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h1d _E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hvnewE[?25lE[1;1H E[47CE[7m|E[2;49H|E[3;49H|E[4;49H|E[5;49H|E[6;49H|E[7;49H|E[8;49H|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[13;49H|E[14;49H|E[15;49H|E[16;49H|E[17;49H|E[18;49H|E[19;49H|E[20;49H|E[21;49H|E[22;49H|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[30;49H|E[31;49H|E[32;49H|E[33;49H|E[34;49H|E[35;49H|E[36;49H|E[37;49H|E[38;49H|E[39;49H|E[40;49H|E[41;49H|E[42;49H|E[43;49H|E[44;49H|E[45;49H|E[46;49H|E[47;49H|E[48;49H|E[49;49H|E[50;49H|E[51;49H|E[52;49H|E[53;49H|E[54;49H|E[55;49H|E[56;49H|E[57;49H|E[58;49H|E[mE[2;1HE[1mE[34m~                                               
~                                               
~                                               
~                                               
~                                               
~                                               E[mE[59;1HE[1mE[7m[No Name]                                        E[mE[1;50H4E[2;50H5E[3;50H6E[4;50H7E[5;50H8E[6;50H9E[7;50H10E[8;50HE[1mE[34m~E[9;50H~E[10;50H~E[11;50H~E[12;50H~E[13;50H~E[14;50H~E[15;50H~E[16;50H~E[17;50H~E[18;50H~E[19;50H~E[20;50H~E[21;50H~E[22;50H~E[23;50H~E[24;50H~E[25;50H~E[26;50H~E[27;50H~E[28;50H~E[29;50H~E[30;50H~E[31;50H~E[32;50H~E[33;50H~E[34;50H~E[35;50H~E[36;50H~E[37;50H~E[38;50H~E[39;50H~E[40;50H~E[41;50H~E[42;50H~E[43;50H~E[44;50H~E[45;50H~E[46;50H~E[47;50H~E[48;50H~E[49;50H~E[50;50H~E[51;50H~E[52;50H~E[53;50H~E[54;50H~E[55;50H~E[56;50H~E[57;50H~E[58;50H~E[mE[59;50HE[7m[No Name] [+]                                  E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =range(1,10)E[?25l10 more linesE[60;14HE[KE[2;1H1                                               
2                                               
3                                               
4                                               
5                                               
6                                               
7                                               
8                                               
9                                               
10                                              E[59;11HE[1mE[7m[+]E[11;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1d _E[?25lE[1;1H1                                               
2                                               
3                                               
4                                               
5                                               
6                                               
7                                               
8                                               
9                                               
10                                              
E[1mE[34m~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               E[m
                                                E[1mE[34m~                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hwindo :diffthisE[?25lE[1;1HE[34mE[47m  E[mE[44m1                                             E[m
E[34mE[47m  E[mE[44m2                                             E[m
E[34mE[47m  E[mE[44m3                                             E[m
E[34mE[47m  E[m4
E[34mE[47m  E[m5
E[34mE[47m  E[m6
E[34mE[47m  E[m7
E[34mE[47m  E[m8
E[34mE[47m  E[m9
E[34mE[47m- E[m10
E[34mE[47m  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  E[mE[11;3HE[1mE[34m~E[12;3H~E[13;3H~E[14;3H~E[15;3H~E[16;3H~E[17;3H~E[18;3H~E[19;3H~E[20;3H~E[21;3H~E[22;3H~E[23;3H~E[24;3H~E[25;3H~E[26;3H~E[27;3H~E[28;3H~E[29;3H~E[30;3H~E[31;3H~E[32;3H~E[33;3H~E[34;3H~E[35;3H~E[36;3H~E[37;3H~E[38;3H~E[39;3H~E[40;3H~E[41;3H~E[42;3H~E[43;3H~E[44;3H~E[45;3H~E[46;3H~E[47;3H~E[48;3H~E[49;3H~E[50;3H~E[51;3H~E[52;3H~E[53;3H~E[54;3H~E[55;3H~E[56;3H~E[57;3H~E[58;3H~E[m
E[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                    E[mE[1;50HE[34mE[47m  E[mE[1mE[34mE[46m---------------------------------------------E[mE[2;50HE[34mE[47m  E[mE[1mE[34mE[46m---------------------------------------------E[mE[3;50HE[34mE[47m  E[mE[1mE[34mE[46m---------------------------------------------E[mE[4;50HE[34mE[47m  E[m4E[5;50HE[34mE[47m  E[m5E[6;50HE[34mE[47m  E[m6E[7;50HE[34mE[47m  E[m7E[8;50HE[34mE[47m  E[m8E[8;53HE[KE[9;50HE[34mE[47m  E[m9E[9;53HE[KE[10;50HE[34mE[47m- E[m10E[10;54HE[KE[11;50HE[34mE[47m  E[12;50H  E[13;50H  E[14;50H  E[15;50H  E[16;50H  E[17;50H  E[18;50H  E[19;50H  E[20;50H  E[21;50H  E[22;50H  E[23;50H  E[24;50H  E[25;50H  E[26;50H  E[27;50H  E[28;50H  E[29;50H  E[30;50H  E[31;50H  E[32;50H  E[33;50H  E[34;50H  E[35;50H  E[36;50H  E[37;50H  E[38;50H  E[39;50H  E[40;50H  E[41;50H  E[42;50H  E[43;50H  E[44;50H  E[45;50H  E[46;50H  E[47;50H  E[48;50H  E[49;50H  E[50;50H  E[51;50H  E[52;50H  E[53;50H  E[54;50H  E[55;50H  E[56;50H  E[57;50H  E[58;50H  E[mE[11;52HE[1mE[34m~E[12;52H~E[13;52H~E[14;52H~E[15;52H~E[16;52H~E[17;52H~E[18;52H~E[19;52H~E[20;52H~E[21;52H~E[22;52H~E[23;52H~E[24;52H~E[25;52H~E[26;52H~E[27;52H~E[28;52H~E[29;52H~E[30;52H~E[31;52H~E[32;52H~E[33;52H~E[34;52H~E[35;52H~E[36;52H~E[37;52H~E[38;52H~E[39;52H~E[40;52H~E[41;52H~E[42;52H~E[43;52H~E[44;52H~E[45;52H~E[46;52H~E[47;52H~E[48;52H~E[49;52H~E[50;52H~E[51;52H~E[52;52H~E[53;52H~E[54;52H~E[55;52H~E[56;52H~E[57;52H~E[58;52H~E[mE[59;50HE[1mE[7m[No Name] [+]                                  E[4;52HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd hE[?25lE[59;1HE[1mE[7m[No Name] [+]                                    E[mE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                  E[1;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet w0=line('w0')E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25henewE[?25lE[1mE[37mE[41mE37: No write since last change (add ! to override)E[1;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =w0E[?25lE[2;3HE[44m1E[3;3H2E[4;3H3                                             E[mE[5;3H4E[6;3H5E[7;3H6E[8;3H7E[9;3H8
E[34mE[47m E[mE[1C9 
E[34mE[47m-E[mE[1C10                                            E[4;52HE[1mE[34mE[46m---------------------------------------------E[mE[5;52H4E[6;52H5E[7;52H6E[8;52H7E[9;52H8E[10;50HE[34mE[47m E[mE[1C9E[10;53HE[KE[11;50HE[34mE[47m-E[mE[1C10E[11;54HE[KE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >> test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 2 characters appendedE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet! one two three w0E[?25lE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test48.in" 78 lines, 1542 charactersE[1;1HThis 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
CE[34m^N^[E[m
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
CE[34m^ME[mare belong to vimE[34m^[E[m
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7E[34m^[E[m
:"
:"   Make sure 'i' works
$4li<-- should be 3 ' 'E[34m^[E[m
:"
:"   Make sure 'C' works
$4lC<-- should be 3 ' 'E[34m^[E[m
:"
:"   Make sure 'a' works
$4la<-- should be 4 ' 'E[34m^[E[m
:"
:"   Make sure 'A' works
$4lA<-- should be 0 ' 'E[34m^[E[m
:"
:"   Make sure 'D' works
$4lDi<-- 'D' should be intactE[34m^[E[m
:"
:"   Test for yank bug reported by Mark Waggoner.
:set ve=block
^2wE[34m^VE[m3jyGp
:"
:" Test "r" beyond the end of the line
:set ve=all
/^"r"
$5lrxa<-- should be 'x'E[34m^[E[m
:"
:"   Test to make sure 'x' can delete control characters
:set display=uhex
^xxxxxxi[This line should contain only the text between the brackets.]E[34m^[E[m
:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^OE[34m^[E[m3liE[34m^E^[E[m4liE[34m^E^[E[m4liE[34m^EE[m   <-- should show the name of a noted text editorE[34m^[E[m
^oE[34m^[E[m4liE[34m^Y^[E[m4liE[34m^Y^[E[m4liE[34m^YE[m   <-- and its version numberE[34m^[E[m-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-pE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HThis is a test of 'virtualedit'.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 57 lines, 1331 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hfoo, barE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noswfE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ve=allE[?25lE[59;1HE[?12lE[?25hE[58;1HE[?25l

61 fewer linesE[1;1Hfoo, barE[1;9HE[KE[2;1Hkeyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'E[6;6HE[KE[7;1H'a'E[7;7HE[KE[8;1H'A'
'D'E[9;4HE[KE[10;1Hthis is a test
this is a testE[11;16HE[KE[12;1Hthis is a testE[12;15HE[KE[13;1H"r"E[13;4HE[KE[14;1HaE[1CE[34mVE[mbE[34m^ME[msdE[14;9HE[KE[15;1Habcv6efi.him0klE[16;1HE[KE[17;1HE[KE[18;1HE[1mE[34m~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    Repeating CTRL-N fixes it. (Mary Ellen Foster)E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hwE[?25lE[2;12HE[?12lE[?25hE[?25l$E[60;1HE[32mScanning tags.E[mThe only matchE[2;16HE[60;1HE[KE[2;12HwordE[?12lE[?25hE[3;15HE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[3;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Using "C" then then <CR> moves the last remaining character to the nextE[?25lE[3;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    line.  (Mary Ellen Foster)E[?25lE[3;15HE[?12lE[?25hE[4;15HE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hareE[?25lE[31msearch hit BOTTOM, continuing at TOPE[3;15HE[?12lE[?25hE[?25lE[mE[15C$E[3;15HE[KE[4;1Hare belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'E[10;4HE[KE[13;1Hthis is a test
"r"E[14;4HE[KE[15;2HE[34m^VE[mbE[34m^ME[msdE[15;9HE[KE[16;1Habcv6efi.him0klE[18;1HE[KE[4;17HE[?12lE[?25hE[5;17HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[5;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   When past the end of a line that ends in a single character "b" skipsE[?25lE[5;17HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    that word.E[?25lE[5;17HE[?12lE[?25hE[10CE[15CE[5;11HE[?25l$7E[?12lE[?25hE[6;11HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[6;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Make sure 'i' worksE[?25lE[6;11HE[?12lE[?25h'i'   E[?25l<-- should be 3 ' 'E[?12lE[?25hE[7;25HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[7;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Make sure 'C' worksE[?25lE[7;25HE[?12lE[?25h'C'   E[?25l$<-- should be 3 ' 'E[?12lE[?25hE[8;25HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[8;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Make sure 'a' worksE[?25lE[8;25HE[?12lE[?25h'a'   E[?25l <-- should be 4 ' 'E[?12lE[?25hE[9;26HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[9;26HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Make sure 'A' worksE[?25lE[9;26HE[?12lE[?25h'A'   E[?25l<-- should be 0 ' 'E[?12lE[?25hE[10;22HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[10;22HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Make sure 'D' worksE[?25lE[10;22HE[?12lE[?25h'D'   E[?25l<-- 'D' should be intactE[?12lE[?25hE[11;30HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[11;30HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Test for yank bug reported by Mark Waggoner.E[?25lE[11;30HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ve=blockE[?25lE[11;14HE[?12lE[?25hE[8CE[?25lE[?12lE[?25hE[?25lE[7maE[12;9HaE[13;9HaE[14;9HE[?12lE[?25hE[?25lE[mE[11;9HaE[12;9HaE[13;9HaE[60;1Hblock of 4 lines yankedE[11;9HE[?12lE[?25hE[18;1HE[?25lE[60;1H3 more linesE[60;13HE[KE[18;1Ha
aE[19;2HE[KE[20;1HaE[20;2HE[KE[21;1H E[21;2HE[KE[18;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test "r" beyond the end of the lineE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ve=allE[?25lE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^"r"E[?25lE[31msearch hit BOTTOM, continuing at TOPE[14;1HE[?12lE[?25hE[m"r"    E[?25lxE[?12lE[?25hE[?25lx<-- should be 'x'E[?12lE[?25hE[15;25HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[15;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Test to make sure 'x' can delete control charactersE[?25lE[15;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset display=uhexE[?25lE[15;2HE[34m<16>E[mbE[34m<0d>E[msdE[16CE[?12lE[?25hE[?25lE[34m<16>E[mbE[34m<0d>E[msdE[15;12HE[KE[15;1HE[?12lE[?25hE[?25lbE[34m<0d>E[msdE[15;8HE[KE[15;1HE[?12lE[?25hE[?25lE[34m<0d>E[msdE[15;7HE[KE[15;1HE[?12lE[?25hE[?25lsdE[15;3HE[KE[15;1HE[?12lE[?25hE[?25ldE[15;2HE[KE[15;1HE[?12lE[?25hE[?25lE[15;1HE[KE[15;1HE[?12lE[?25hE[?25l[This line should contain only the text between the brackets.]E[?12lE[?25hE[16;62HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset display=E[?25lE[16;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[16;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Test for ^Y/^E due to bad w_virtcol value, reported byE[?25lE[16;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"   Roy <royl@netropolis.net>.E[?25lE[16;62HE[?12lE[?25hE[?25lE[16;59rE[16;1HE[LE[1;60rE[60;1HE[KE[16;1HE[?12lE[?25h   E[?25lvE[?12lE[?25hv   E[?25liE[?12lE[?25hi   E[?25lm   <-- should show the name of a noted text editorE[?12lE[?25hE[17;62HE[?25lE[18;59rE[18;1HE[LE[1;60rE[18;1HE[?12lE[?25h    E[?25l6E[?12lE[?25h6   E[?25l.E[?12lE[?25h.   E[?25l0   <-- and its version numberE[?12lE[?25hE[17;1HE[?25lE[17;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[17;5HE[?12lE[?25h
E[m    E[?25lE[60;1H:E[?12lE[?25h"E[?25lE[18;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test for yanking and pasting using the small delete registerE[?25lE[18;5HE[?12lE[?25hE[1;1HE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^fooE[?25lE[31msearch hit BOTTOM, continuing at TOPE[1;1HE[?12lE[?25hE[?25lE[m, barE[1;6HE[KE[1;1HE[?12lE[?25h, E[?25lE[?12lE[?25hE[?25lE[7mbaE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[mfooE[?12lE[?25h
keywE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 22 lines, 449 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test49.in" 30 lines, 632 charactersE[1;1HThis 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:
E[1mE[34m~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HThis is a test of the script language.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 21 lines, 401 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[28;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[29;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[29;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hse nocp nomore viminfo+=nviminfoE[?25lE[29;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlang mess CE[?25lE[29;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso test49.vimE[?25lE[1mE[37mE[41mError detected while processing function G:E[m
E[33mline   16:E[m
E[1mE[37mE[41mE171: Missing :endif:     endwhileE[m
*** Test   1: OK (34695)
   function F()
1      Xpath 1E[37C" X: 1
2      let first = 1
3      XloopINIT 2 8
4      while 1
5E[10CXloop 1E[33C" X: 2      + 0 * 16
6E[10Cif first
7E[14CXloop 2E[29C" X: 4      + 0 * 32
8E[14Clet first = 0
9E[14CXloopNEXT
10E[13Cbreak
11E[9Celse
12E[13CXloop 4E[29C" X: 0      + 0 * 64
13E[13Creturn
14E[9Cendif
15     endwhile
   endfunctionE[44;1H"/tmp/vFOxG0K/0"E[45;1HE[KE[46;1HE[KE[47;1HE[KE[48;1HE[KE[49;1HE[KE[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[44;18H[noeol] 18L, 528C
15 substitutions on 15 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/0" E[46;18HE[KE[46;18H15L, 476C written"test49.in" E[46;13HE[KE[46;13H30L, 632C
   function G()
1      Xpath 256E[35C" X: 256    + 0 * 2048
2      let first = 1
3      XloopINIT 512 8
4      while 1
5E[10CXloop 1E[33C" X: 512    + 0 * 4096
6E[10Cif first
7E[14CXloop 2E[29C" X: 1024   + 0 * 8192
8E[14Clet first = 0
9E[14CXloopNEXT
10E[13Cbreak
11E[9Celse
12E[13CXloop 4E[29C" X: 0      + 0 * 16384
13E[13Creturn
14E[9Cendif
15E[9Cif 1    " unmatched :if
16     endwhile
   endfunctionE[43;1H"/tmp/vFOxG0K/1"E[44;1HE[KE[45;1HE[KE[46;1HE[KE[47;1HE[KE[48;1HE[KE[49;1HE[KE[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[43;18H[noeol] 19L, 588C
16 substitutions on 16 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/1" E[45;18HE[KE[45;18H16L, 534C written"test49.in" E[45;13HE[KE[45;13H30L, 632C
E[1mE[37mE[41mError detected while processing /tmp/vFOxG0K/1:E[m
E[33mline   16:E[m
E[1mE[37mE[41mE171: Missing :endif:      endwhileE[m
*** Test   2: OK (34695)
*** Test   3: OK (1384648195)
*** Test   4: OK (32883)
   function F()
1      if 1
2E[10CXpath 1E[33C" X: 1
3E[10Clet loops = 3
4E[10CXloopINIT 2 16
5E[10Cwhile loops > 0E[25C"    3:  2:     1:
6E[14CXloop 1E[29C" X: 2 + 2*16 + 0*16*16
7E[14Cif (loops == 2)
8E[18CXloop 2E[25C" X:     4*16
9E[18Creturn
10E[17CXloop 4E[25C" X:     0
11E[13Cendif
12E[13CXloop 8E[29C" X: 16
13E[13Clet loops = loops - 1
14E[13CXloopNEXT
15E[9Cendwhile
16E[9CXpath 8192E[30C" X: 0
17     else
18E[9CXpath 16384E[29C" X: 0
19     endif
   endfunctionE[40;1H"/tmp/vFOxG0K/2"E[41;1HE[KE[42;1HE[KE[43;1HE[KE[44;1HE[KE[45;1HE[KE[46;1HE[KE[47;1HE[KE[48;1HE[KE[49;1HE[KE[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[40;18H[noeol] 22L, 784C
19 substitutions on 19 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/2" E[42;18HE[KE[42;18H19L, 724C written"test49.in" E[42;13HE[KE[42;13H30L, 632C
*** Test   5: OK (32883)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"/tmp/vFOxG0K/3" E[43;18HE[KE[43;18H[New] 53L, 1582C writtenE[43;18HE[KE[43;18H14L, 358C appendedE[43;18HE[KE[43;18H26L, 824C appendedE[43;18HE[KE[43;18H34L, 986C appended
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/4E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[44;1HE[KE[44;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/4" E[44;18HE[KE[44;18H130L, 2431C appendedE[44;18HE[KE[44;18H131L, 2453C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/5E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[46;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBeginE[47;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/5"' -S /tmp/vFOxG0K/4E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[46;1H"/tmp/vFOxG0K/5" E[46;18HE[KE[47;2HE[KE[46;18H21L, 130C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[46;13HE[KE[46;13H30L, 632C
*** Test   6: OK (603978947)
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline  976:E[m
E[1mE[37mE[41mE492: Not an editor command: ^IasdfE[m
E[33mline  988:E[m
E[1mE[37mE[41mE492: Not an editor command: ^IasdfE[m
E[33mline  996:E[m
E[1mE[37mE[41mE492: Not an editor command: asdfE[m
E[33mline  999:E[m
E[1mE[37mE[41mE492: Not an editor command: asdf | Xpath 32768^I^I^I^I" X: 0E[m
*** Test   7: OK (90563)
E[1mE[37mE[41mError detected while processing function F:E[m
E[33mline    5:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdfE[m
E[33mline    7:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdf | Xpath 8^I^I^I" X: 0E[m
E[33mline   19:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdfE[m
E[33mline   21:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdf | Xpath 2048^I^I^I" X: 0E[m
E[33mline   29:E[m
E[1mE[37mE[41mE121: Undefined variable: novarE[m
E[1mE[37mE[41mE15: Invalid expression: novar^I^I" returns (default return value 0)E[m
E[1mE[37mE[41mError detected while processing function G:E[m
E[33mline    5:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdf^I^I" returns -1E[m
E[1mE[37mE[41mError detected while processing function H:E[m
E[33mline    5:E[m
E[1mE[37mE[41mE492: Not an editor command: ^I    asdf^I^I" returns -1E[m
*** Test   8: OK (562493431)
E[1mE[37mE[41mError detected while processing function F..G..H..I:E[m
E[33mline    2:E[m
E[1mE[37mE[41mE492: Not an editor command:     asdf^I^I" errorE[m
*** Test   9: OK (363)
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 1201:E[m
E[1mE[37mE[41mE15: Invalid expression: | strlen("\"") | Xpath 512^I^I" X: 0E[m
E[1mE[37mE[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 512^I^I" X: 0E[m
E[33mline 1211:E[m
E[1mE[37mE[41mE15: Invalid expression: | strlen("\"") | Xpath 8192^I^I" X: 0E[m
E[1mE[37mE[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 8192^I^I" X: 0E[m
E[33mline 1220:E[m
E[1mE[37mE[41mE15: Invalid expression: | strlen("\"") | Xpath 131072^I^I" X: 0E[m
E[1mE[37mE[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 131072^I^I" X: 0E[m
*** Test  10: OK (559615)
E[33mline 1252:E[m
E[1mE[37mE[41mE492: Not an editor command:     asdf^I^I" errorE[m
*** Test  11: OK (2049)
1
E[33mline 1330:E[m
E[1mE[37mE[41mE492: Not an editor command:     asdf^I^I" errorE[m
E[33mline 1338:E[m
E[1mE[37mE[41mE492: Not an editor command:     asdf^I^I" errorE[m
*** Test  12: OK (352256)
E[33mline 1357:E[m
E[1mE[37mE[41mE121: Undefined variable: asdfE[m
E[1mE[37mE[41mE15: Invalid expression: asdfE[m
E[33mline 1368:E[m
E[1mE[37mE[41mE121: Undefined variable: asdfE[m
E[1mE[37mE[41mE15: Invalid expression: asdf | Xpath 32 | endwhile | Xpath 64^I" X: 0E[m
*** Test  13: OK (145)
E[1mE[37mE[41mError detected while processing function F:E[m
E[33mline    8:E[m
E[1mE[37mE[41mE121: Undefined variable: g:boolvarE[m
E[1mE[37mE[41mE15: Invalid expression: g:boolvar^I" possibly undefinedE[m
*** Test  14: OK (42413)
E[1mE[37mE[41mE121: Undefined variable: g:boolvarE[m
E[1mE[37mE[41mE15: Invalid expression: g:boolvar | Xloop 8 | else | Xloop 16 | endif    " X: 8E[m
*** Test  15: OK (42413)
E[33mline    5:E[m
E[1mE[37mE[41mE583: multiple :else:     else^I^IE[m
E[1mE[37mE[41mError detected while processing function G:E[m
E[33mline    5:E[m
E[1mE[37mE[41mE584: :elseif after :else:     elseif 1^I^I" aborts functionE[m
E[1mE[37mE[41mError detected while processing function H:E[m
E[33mline    7:E[m
E[1mE[37mE[41mE583: multiple :else:     else^I^IE[m
E[1mE[37mE[41mError detected while processing function I:E[m
E[33mline    7:E[m
E[1mE[37mE[41mE584: :elseif after :else:     elseif 1^I^I" aborts functionE[m
*** Test  16: OK (8722)
E[1mE[37mE[41mError detected while processing function F:E[m
E[33mline   18:E[m
E[1mE[37mE[41mE171: Missing :endif:     endwhile^IE[m
E[1mE[37mE[41mE171: Missing :endif:     endwhile^IE[m
E[33mline   34:E[m
E[1mE[37mE[41mE171: Missing :endif:     endwhile^IE[m
E[1mE[37mE[41mE171: Missing :endif:     endwhile^IE[m
E[1mE[37mE[41mE171: Missing :endif:     endwhile^IE[m
E[33mline   47:E[m
E[1mE[37mE[41mE580: :endif without :if: ^Iendif^IE[m
E[1mE[37mE[41mE580: :endif without :if: ^Iendif^IE[m
E[1mE[37mE[41mE580: :endif without :if: ^Iendif^IE[m
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 1626:E[m
E[1mE[37mE[41mE171: Missing :endif: endwhile E[m
*** Test  17: OK (285127993)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/6E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/6" E[60;18HE[KE[60;18H16L, 304C appendedE[60;18HE[KE[60;18H17L, 326C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/7E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/7"' -c 'breakadd file 8 /tmp/vFOxG0K/6' -S /tmp
E[59;96H/E[60;1HvFOxG0K/6E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/7" E[58;18HE[KE[59;1HE[KE[60;1HE[KE[58;18H3L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/8E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/8" E[59;18HE[KE[59;18H6L, 127C appendedE[59;18HE[KE[59;18H7L, 149C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/9E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/9"' -c 'breakadd file 4 /tmp/vFOxG0K/8' -S /tmp
E[59;96H/E[60;1HvFOxG0K/8E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/9" E[58;18HE[KE[59;1HE[KE[60;1HE[KE[58;18H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/10E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/10" E[59;19HE[KE[59;19H21L, 486C appendedE[59;19HE[KE[59;19H22L, 508C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/11E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/11"' -c 'breakadd func 7 F' -S /tmp/vFOxG0K/10E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/11" E[59;19HE[KE[60;1HE[KE[59;19H3L, 18C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/12E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/12" E[60;19HE[KE[60;19H13L, 364C appendedE[60;19HE[KE[60;19H14L, 386C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/13E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/13"' -c 'breakadd func 3 G' -S /tmp/vFOxG0K/12E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/13" E[59;19HE[KE[60;1HE[KE[59;19H1L, 9C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  18: OK (67224583)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/14E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/14" E[60;19HE[KE[60;19H12L, 201C appendedE[60;19HE[KE[60;19H13L, 223C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/15E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/15"' -S /tmp/vFOxG0K/14E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/15" E[59;19HE[KE[60;2HE[KE[59;19H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/16E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/16" E[60;19HE[KE[60;19H12L, 205C appendedE[60;19HE[KE[60;19H13L, 227C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/17E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/17"' -S /tmp/vFOxG0K/16E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/17" E[59;19HE[KE[60;2HE[KE[59;19H2L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/18E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/18" E[60;19HE[KE[60;19H6L, 122C appendedE[60;19HE[KE[60;19H7L, 144C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/19E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/19"' -S /tmp/vFOxG0K/18E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/19" E[59;19HE[KE[60;2HE[KE[59;19H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/20E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/20" E[60;19HE[KE[60;19H8L, 176C appendedE[60;19HE[KE[60;19H9L, 198C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/21E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/21"' -S /tmp/vFOxG0K/20E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/21" E[59;19HE[KE[60;2HE[KE[59;19H1L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/22E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/22" E[60;19HE[KE[60;19H10L, 215C appendedE[60;19HE[KE[60;19H11L, 237C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/23E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/23"' -S /tmp/vFOxG0K/22E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/23" E[59;19HE[KE[60;2HE[KE[59;19H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/24E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/24" E[60;19HE[KE[60;19H7L, 149C appendedE[60;19HE[KE[60;19H8L, 171CE[60;19HE[KE[60;19H8L, 170C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/25E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/25"' -S /tmp/vFOxG0K/24E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/25" E[59;19HE[KE[60;2HE[KE[59;19H1L, 9C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  19: OK (69275973)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/26E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/26" E[60;19HE[KE[60;19H9L, 135C appendedE[60;19HE[KE[60;19H10L, 157C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/27E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/27"' -S /tmp/vFOxG0K/26E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/27" E[59;19HE[KE[60;2HE[KE[59;19H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/28E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/28" E[60;19HE[KE[60;19H10L, 155C appendedE[60;19HE[KE[60;19H11L, 177C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/29E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/29"' -S /tmp/vFOxG0K/28E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/29" E[59;19HE[KE[60;2HE[KE[59;19H3L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/30E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/30" E[60;19HE[KE[60;19H12L, 204C appendedE[60;19HE[KE[60;19H13L, 226C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/31E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/31"' -S /tmp/vFOxG0K/30E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/31" E[59;19HE[KE[60;2HE[KE[59;19H4L, 18C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/32E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/32" E[60;19HE[KE[60;19H12L, 214C appendedE[60;19HE[KE[60;19H13L, 236C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/33E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/33"' -S /tmp/vFOxG0K/32E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/33" E[59;19HE[KE[60;2HE[KE[59;19H4L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/34E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/34" E[60;19HE[KE[60;19H12L, 211C appendedE[60;19HE[KE[60;19H13L, 233C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/35E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/35"' -S /tmp/vFOxG0K/34E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/35" E[59;19HE[KE[60;2HE[KE[59;19H3L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/36E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/36" E[60;19HE[KE[60;19H14L, 263C appendedE[60;19HE[KE[60;19H15L, 285C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/37E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/37"' -S /tmp/vFOxG0K/36E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/37" E[59;19HE[KE[60;2HE[KE[59;19H4L, 34C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/38E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/38" E[60;19HE[KE[60;19H14L, 277C appendedE[60;19HE[KE[60;19H15L, 299C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/39E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/39"' -S /tmp/vFOxG0K/38E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/39" E[59;19HE[KE[60;2HE[KE[59;19H4L, 40C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  20: OK (1874575085)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/40E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/40" E[60;19HE[KE[60;19H58L, 1022C appendedE[60;19HE[KE[60;19H59L, 1044C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/41E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/41"' -S /tmp/vFOxG0K/40E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/41" E[59;19HE[KE[60;2HE[KE[59;19H9L, 56C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  21: OK (147932225)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/42E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/42" E[60;19HE[KE[60;19H23L, 418C appendedE[60;19HE[KE[60;19H24L, 440C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/43E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/43"' -S /tmp/vFOxG0K/42E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/43" E[59;19HE[KE[60;2HE[KE[59;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/44E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/44" E[60;19HE[KE[60;19H23L, 437C appendedE[60;19HE[KE[60;19H24L, 459C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/45E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/45"' -c 'breakadd func 2 Interrupt' -S /tmp/vFO
E[59;96HxE[60;1HG0K/44E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/45" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H1L, 3C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/46E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/46" E[59;19HE[KE[59;19H21L, 386C appendedE[59;19HE[KE[59;19H22L, 408C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/47E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/47"' -S /tmp/vFOxG0K/46E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/47" E[59;19HE[KE[60;2HE[KE[59;19H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  22: OK (4161)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/48E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/48" E[60;19HE[KE[60;19H25L, 432C appendedE[60;19HE[KE[60;19H26L, 454C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/49E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/49"' -S /tmp/vFOxG0K/48E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/49" E[59;19HE[KE[60;2HE[KE[59;19H3L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  23: OK (49)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/50E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/50" E[60;19HE[KE[60;19H16L, 392C appendedE[60;19HE[KE[60;19H17L, 414C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/51E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/51"' -S /tmp/vFOxG0K/50E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/51" E[59;19HE[KE[60;2HE[KE[59;19H3L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  24: OK (41)
*** Test  25: OK (260177811)
*** Test  26: OK (1681500476)
*** Test  27: OK (1996459)
   function F()
1      try
2E[10CXpath 1E[33C" X: 1
3E[10Ctry
4E[14CXpath 2E[29C" X: 2
5E[14Creturn
6E[14CXpath 4E[29C" X: 0
7E[10Cfinally
8E[14CXpath 8E[29C" X: 8
9E[10Cendtry
10E[9CXpath 16E[32C" X: 0
11     finally
12E[9CXpath 32E[32C" X: 32
13     endtry
14     Xpath 64E[36C" X: 0
   endfunctionE[45;1H"/tmp/vFOxG0K/52"E[46;1HE[KE[47;1HE[KE[48;1HE[KE[49;1HE[KE[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[45;19H[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/52" E[47;20HE[KE[47;19H14L, 502C written"test49.in" E[47;13HE[KE[47;13H30L, 632C
   function G()
1      try
2E[10CXpath 128E[31C" X: 128
3E[10Creturn
4E[10CXpath 256E[31C" X: 0
5      finally
6E[10CXpath 512E[31C" X: 512
7E[10Ccall F()
8E[10CXpath 1024E[30C" X: 1024
9      endtry
10     Xpath 2048E[34C" X: 0
   endfunctionE[48;1H"/tmp/vFOxG0K/53"E[49;1HE[KE[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;4HE[KE[48;19H[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/53" E[50;20HE[KE[50;19H10L, 378C written"test49.in" E[50;13HE[KE[50;13H30L, 632C
   function H()
1      try
2E[10CXpath 4096E[30C" X: 4096
3E[10Ccall G()
4E[10CXpath 8192E[30C" X: 8192
5      finally
6E[10CXpath 16384E[29C" X: 16384
7E[10Creturn
8E[10CXpath 32768E[29C" X: 0
9      endtry
10     Xpath 65536E[33C" X: 0
   endfunctionE[49;1H"/tmp/vFOxG0K/54"E[50;1HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[49;19H[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/54" E[51;20HE[KE[51;19H10L, 381C written"test49.in" E[51;13HE[KE[51;13H30L, 632C
*** Test  28: OK (1996459)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/55E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[53;1HE[KE[53;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/55" E[53;19HE[KE[53;19H39L, 721C appendedE[53;19HE[KE[53;19H40L, 743C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/56E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[55;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBeginE[56;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/56"' -S /tmp/vFOxG0K/55E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[55;1H"/tmp/vFOxG0K/56" E[55;19HE[KE[56;2HE[KE[55;19H6L, 21C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[55;13HE[KE[55;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/57E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[56;1HE[KE[56;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/57" E[56;19HE[KE[56;19H23L, 509C appendedE[56;19HE[KE[56;19H24L, 531C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/58E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBeginE[59;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/58"' -S /tmp/vFOxG0K/57E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/58" E[58;19HE[KE[59;2HE[KE[58;19H4L, 34C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  29: OK (170428555)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/59E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/59" E[60;19HE[KE[60;19H60L, 1101C appendedE[60;19HE[KE[60;19H61L, 1123C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/60E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let
E[59;96HEE[60;1HxtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/60"' -c 'breakadd func 3 F' -c 'breaka
E[59;96HdE[60;1Hd file 19 /tmp/vFOxG0K/59' -c 'breakadd file 31 /tmp/vFOxG0K/59' -S /tmp/vFOxG0K/59E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/60" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H16L, 89C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  30: OK (190905173)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/61E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/61" E[60;19HE[KE[60;19H60L, 1122C appendedE[60;19HE[KE[60;19H61L, 1144C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/62E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/62"' -S /tmp/vFOxG0K/61E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/62" E[59;19HE[KE[60;2HE[KE[59;19H16L, 89C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 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/vFOxG0K/3' >/tmp/vFOxG0K/63E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/63" E[60;19HE[KE[60;19H63L, 1288C appendedE[60;19HE[KE[60;19H64L, 1310C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/64E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo'
-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/64"' -c 'breakadd func 16 C'
E[59;96H-E[60;1HS /tmp/vFOxG0K/63E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/64" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H17L, 127C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  34: OK (2146584868)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/65E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/65" E[60;19HE[KE[60;19H63L, 1285C appendedE[60;19HE[KE[60;19H64L, 1307C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/66E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo'
-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/66"' -c 'breakadd func 16 B'
E[59;96H-E[60;1HS /tmp/vFOxG0K/65E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/66" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H17L, 127C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  35: OK (2146584868)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/67E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/67" E[60;19HE[KE[60;19H66L, 1430C appendedE[60;19HE[KE[60;19H67L, 1452C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/68E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c
'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/68"' -c 'breakadd func 16 R' -S
E[59;96H/E[60;1Htmp/vFOxG0K/67E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/68" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H9L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  36: OK (1071644672)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/69E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/69" E[60;19HE[KE[60;19H73L, 1488C appendedE[60;19HE[KE[60;19H74L, 1510C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/70E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/70"' -c 'breakadd func 16 F' -S /tmp/vFOxG0K/69E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/70" E[59;19HE[KE[60;2HE[KE[59;19H9L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  37: OK (1071644672)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/71E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/71" E[60;19HE[KE[60;19H82L, 1519C appendedE[60;19HE[KE[60;19H83L, 1541C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/72E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo'
-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/72"' -c 'breakadd func 16 E'
E[59;96H-E[60;1HS /tmp/vFOxG0K/71E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/72" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  38: OK (357908480)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/73E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/73" E[60;19HE[KE[60;19H83L, 1538C appendedE[60;19HE[KE[60;19H84L, 1560C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/74E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|s
E[59;96HeE[60;1Ht viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/74"' -c
E[59;96H'E[60;1Hbreakadd func 16 I' -c 'breakadd func 22 I' -S /tmp/vFOxG0K/73E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/74" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  39: OK (357908480)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/75E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/75" E[60;19HE[KE[60;19H82L, 1519C appendedE[60;19HE[KE[60;19H83L, 1541C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/76E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo'
-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/76"' -c 'breakadd func 16 T'
E[59;96H-E[60;1HS /tmp/vFOxG0K/75E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/76" E[58;19HE[KE[59;1HE[KE[60;1HE[KE[58;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 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
2E[10CXpath 1E[33C" X: 1
3E[10Cthrow "arrgh"
4E[10CXpath 2E[33C" X: 0
5      catch /arrgh/
6E[10CXpath 4E[33C" X: 4
7      endtry
8      Xpath 8E[37C" X: 8
   endfunctionE[51;1H"/tmp/vFOxG0K/77"E[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[51;19H[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/77" E[53;20HE[KE[53;19H8L, 295C written"test49.in" E[53;13HE[KE[53;13H30L, 632C
   function T1()
1      XloopNEXT
2      try
3E[10CXloop 1E[33C" X: 16 + 16*16
4E[10Cthrow "arrgh"
5E[10CXloop 2E[33C" X: 0
6      finally
7E[10CXloop 4E[33C" X: 64 + 64*16
8      endtry
9      Xloop 8E[37C" X: 0
   endfunctionE[50;1H"/tmp/vFOxG0K/78"E[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[50;19H[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/78" E[52;20HE[KE[52;19H9L, 323C written"test49.in" E[52;13HE[KE[52;13H30L, 632C
   function T2()
1      try
2E[10CXpath 4096E[30C" X: 4096
3E[10Ccall T1()
4E[10CXpath 8192E[30C" X: 0
5      finally
6E[10CXpath 16384E[29C" X: 16384
7      endtry
8      Xpath 32768E[33C" X: 0
   endfunctionE[51;1H"/tmp/vFOxG0K/79"E[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[51;19H[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/79" E[53;20HE[KE[53;19H8L, 305C written"test49.in" E[53;13HE[KE[53;13H30L, 632C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/81E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[56;1HE[KE[56;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/81" E[56;19HE[KE[56;19H2L, 41C appendedE[56;19HE[KE[56;19H3L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/82E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -cE[59;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vE[60;1HFOxG0K/82"' -S /tmp/vFOxG0K/81E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/82" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H8L, 182C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/83E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/83" E[59;19HE[KE[59;19H7L, 115C appendedE[59;19HE[KE[59;19H8L, 137C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/84E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/84"' -S /tmp/vFOxG0K/83E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/84" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H8L, 181C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/85E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/85" E[59;19HE[KE[59;19H12L, 180C appendedE[59;19HE[KE[59;19H13L, 202C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/86E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/86"' -S /tmp/vFOxG0K/85E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/86" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H2L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H10L, 209C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/87E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/87" E[59;19HE[KE[59;19H8L, 139C appendedE[59;19HE[KE[59;19H9L, 161C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/88E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/88"' -S /tmp/vFOxG0K/87E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/88" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H2L, 11C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H10L, 217C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/89E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/89" E[59;19HE[KE[59;19H5L, 87C appendedE[59;19HE[KE[59;19H6L, 109C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/90E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80
E[59;96H'E[60;2H-c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/t
E[59;96HmE[60;1Hp/vFOxG0K/90"' -c 'breakadd file 4 /tmp/vFOxG0K/89' -S /tmp/vFOxG0K/89E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/90" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H1L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H[noeol] 9L, 202C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/91E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/91" E[59;19HE[KE[59;19H7L, 189C appendedE[59;19HE[KE[59;19H8L, 211C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/92E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/92"' -S /tmp/vFOxG0K/91E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/92" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H9L, 252C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/93E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/93" E[59;19HE[KE[59;19H7L, 199C appendedE[59;19HE[KE[59;19H8L, 221CE[59;19HE[KE[59;19H8L, 220C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/94E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/80' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/94"' -S /tmp/vFOxG0K/93E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/94" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H1L, 10C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/80" E[58;19HE[KE[58;19H9L, 214C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  52: OK (1247112011)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/96E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/96" E[60;19HE[KE[60;19H1L, 10C appendedE[60;19HE[KE[60;19H2L, 32CE[60;19HE[KE[60;19H2L, 31C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/97E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/97"' -S /tmp/vFOxG0K/96E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/97" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 154C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/98E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/98" E[59;19HE[KE[59;19H3L, 39C appendedE[59;19HE[KE[59;19H4L, 61C
3 substitutions on 3 lines"/tmp/vFOxG0K/98" E[60;20HE[KE[60;19H4L, 58C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/99E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/99"' -S /tmp/vFOxG0K/98E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/99" E[58;19HE[KE[59;2HE[KE[60;1HE[KE[58;19H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 158C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/100E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/100" E[59;20HE[KE[59;20H4L, 45C appendedE[59;20HE[KE[59;20H5L, 67C
4 substitutions on 4 lines"/tmp/vFOxG0K/100"E[60;20HE[KE[60;20H5L, 63C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/101E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/101"' -S /tmp/vFOxG0K/100E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/101" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 159C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/102E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/102" E[59;20HE[KE[59;20H3L, 33C appendedE[59;20HE[KE[59;20H4L, 55C
3 substitutions on 3 lines"/tmp/vFOxG0K/102"E[60;20HE[KE[60;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/103E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/103"' -S /tmp/vFOxG0K/102E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/103" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 159C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/104E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/104" E[59;20HE[KE[59;20H5L, 65C appendedE[59;20HE[KE[59;20H6L, 87C
5 substitutions on 5 lines"/tmp/vFOxG0K/104"E[60;20HE[KE[60;20H6L, 82C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/105E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/105"' -S /tmp/vFOxG0K/104E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/105" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 159C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/106E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/106" E[59;20HE[KE[59;20H1L, 9C appendedE[59;20HE[KE[59;20H2L, 31CE[59;20HE[KE[59;20H2L, 30C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/107E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/107"' -S /tmp/vFOxG0K/106E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/107" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 153C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/108E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/108" E[59;20HE[KE[59;20H3L, 38C appendedE[59;20HE[KE[59;20H4L, 60C
3 substitutions on 3 lines"/tmp/vFOxG0K/108"E[60;20HE[KE[60;20H4L, 57C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/109E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/109"' -S /tmp/vFOxG0K/108E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/109" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 157C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/110E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/110" E[59;20HE[KE[59;20H4L, 44C appendedE[59;20HE[KE[59;20H5L, 66C
4 substitutions on 4 lines"/tmp/vFOxG0K/110"E[60;20HE[KE[60;20H5L, 62C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/111E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/111"' -S /tmp/vFOxG0K/110E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/111" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 157C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/112E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/112" E[59;20HE[KE[59;20H3L, 32C appendedE[59;20HE[KE[59;20H4L, 54C
3 substitutions on 3 lines"/tmp/vFOxG0K/112"E[60;20HE[KE[60;20H4L, 51C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/113E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/113"' -S /tmp/vFOxG0K/112E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/113" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 157C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/114E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/114" E[59;20HE[KE[59;20H5L, 64C appendedE[59;20HE[KE[59;20H6L, 86C
5 substitutions on 5 lines"/tmp/vFOxG0K/114"E[60;20HE[KE[60;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/115E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/115"' -S /tmp/vFOxG0K/114E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/115" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 157C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/116E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/116" E[59;20HE[KE[59;20H1L, 11C appendedE[59;20HE[KE[59;20H2L, 33CE[59;20HE[KE[59;20H2L, 32C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/117E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/117"' -S /tmp/vFOxG0K/116E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/117" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 157C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/118E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/118" E[59;20HE[KE[59;20H3L, 40C appendedE[59;20HE[KE[59;20H4L, 62C
3 substitutions on 3 lines"/tmp/vFOxG0K/118"E[60;20HE[KE[60;20H4L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/119E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/119"' -S /tmp/vFOxG0K/118E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/119" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 161C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/120E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/120" E[59;20HE[KE[59;20H4L, 46C appendedE[59;20HE[KE[59;20H5L, 68C
4 substitutions on 4 lines"/tmp/vFOxG0K/120"E[60;20HE[KE[60;20H5L, 64C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/121E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/121"' -S /tmp/vFOxG0K/120E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/121" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 161C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/122E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/122" E[59;20HE[KE[59;20H3L, 34C appendedE[59;20HE[KE[59;20H4L, 56C
3 substitutions on 3 lines"/tmp/vFOxG0K/122"E[60;20HE[KE[60;20H4L, 53C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/123E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/123"' -S /tmp/vFOxG0K/122E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/123" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 161C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/124E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/124" E[59;20HE[KE[59;20H5L, 66C appendedE[59;20HE[KE[59;20H6L, 88C
5 substitutions on 5 lines"/tmp/vFOxG0K/124"E[60;20HE[KE[60;20H6L, 83C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/125E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/125"' -S /tmp/vFOxG0K/124E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/125" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 161C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/126E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/126" E[59;20HE[KE[59;20H4L, 37C appendedE[59;20HE[KE[59;20H5L, 59C
4 substitutions on 4 lines"/tmp/vFOxG0K/126"E[60;20HE[KE[60;20H5L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/127E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/127"' -S /tmp/vFOxG0K/126E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/127" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 150C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/128E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/128" E[59;20HE[KE[59;20H4L, 41C appendedE[59;20HE[KE[59;20H5L, 63C
4 substitutions on 4 lines"/tmp/vFOxG0K/128"E[60;20HE[KE[60;20H5L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/129E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/95' -
E[59;96HcE[60;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/
E[59;96HvE[60;1HFOxG0K/129"' -S /tmp/vFOxG0K/128E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/129" E[58;21HE[KE[59;2HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/95" E[58;19HE[KE[58;19H6L, 159C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  53: OK (131071)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/131E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/131" E[60;20HE[KE[60;20H1L, 13C appendedE[60;20HE[KE[60;20H2L, 35CE[60;20HE[KE[60;20H2L, 34C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/132E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/132"' -S /tmp/vFOxG0K/131E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/132" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 164C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/133E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/133" E[59;20HE[KE[59;20H3L, 36C appendedE[59;20HE[KE[59;20H4L, 58C
3 substitutions on 3 lines"/tmp/vFOxG0K/133"E[60;20HE[KE[60;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/134E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/134"' -S /tmp/vFOxG0K/133E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/134" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 168C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/135E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/135" E[59;20HE[KE[59;20H3L, 38C appendedE[59;20HE[KE[59;20H4L, 60C
3 substitutions on 3 lines"/tmp/vFOxG0K/135"E[60;20HE[KE[60;20H4L, 57C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/136E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/136"' -S /tmp/vFOxG0K/135E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/136" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 154C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/137E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/137" E[59;20HE[KE[59;20H4L, 48C appendedE[59;20HE[KE[59;20H5L, 70C
4 substitutions on 4 lines"/tmp/vFOxG0K/137"E[60;20HE[KE[60;20H5L, 66C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/138E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/138"' -S /tmp/vFOxG0K/137E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/138" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 168C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/139E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/139" E[59;20HE[KE[59;20H4L, 53C appendedE[59;20HE[KE[59;20H5L, 75C
4 substitutions on 4 lines"/tmp/vFOxG0K/139"E[60;20HE[KE[60;20H5L, 71C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/140E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/140"' -S /tmp/vFOxG0K/139E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/140" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 155C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/141E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/141" E[59;20HE[KE[59;20H5L, 62C appendedE[59;20HE[KE[59;20H6L, 84C
5 substitutions on 5 lines"/tmp/vFOxG0K/141"E[60;20HE[KE[60;20H6L, 79C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/142E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/142"' -S /tmp/vFOxG0K/141E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/142" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 155C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/143E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/143" E[59;20HE[KE[59;20H5L, 64C appendedE[59;20HE[KE[59;20H6L, 86C
5 substitutions on 5 lines"/tmp/vFOxG0K/143"E[60;20HE[KE[60;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/144E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/144"' -S /tmp/vFOxG0K/143E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/144" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 154C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/145E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/145" E[59;20HE[KE[59;20H3L, 36C appendedE[59;20HE[KE[59;20H4L, 58C
3 substitutions on 3 lines"/tmp/vFOxG0K/145"E[60;20HE[KE[60;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/146E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/146"' -S /tmp/vFOxG0K/145E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/146" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 168C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/147E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/147" E[59;20HE[KE[59;20H5L, 67C appendedE[59;20HE[KE[59;20H6L, 89C
5 substitutions on 5 lines"/tmp/vFOxG0K/147"E[60;20HE[KE[60;20H6L, 84C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/148E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/148"' -S /tmp/vFOxG0K/147E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/148" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 167C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/149E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/149" E[59;20HE[KE[59;20H5L, 68C appendedE[59;20HE[KE[59;20H6L, 90C
5 substitutions on 5 lines"/tmp/vFOxG0K/149"E[60;20HE[KE[60;20H6L, 85C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/150E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/150"' -S /tmp/vFOxG0K/149E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/150" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 168C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/151E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/151" E[59;20HE[KE[59;20H7L, 95C appendedE[59;20HE[KE[59;20H8L, 117C
7 substitutions on 7 lines"/tmp/vFOxG0K/151"E[60;20HE[KE[60;20H8L, 110C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/152E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/130'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/152"' -S /tmp/vFOxG0K/151E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/152" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/130" E[58;20HE[KE[58;20H6L, 167C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  54: OK (2047)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/154E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/154" E[60;20HE[KE[60;20H1L, 13C appendedE[60;20HE[KE[60;20H2L, 35CE[60;20HE[KE[60;20H2L, 34C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/155E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/155"' -S /tmp/vFOxG0K/154E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/155" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 172C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/156E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/156" E[59;20HE[KE[59;20H3L, 36C appendedE[59;20HE[KE[59;20H4L, 58C
3 substitutions on 3 lines"/tmp/vFOxG0K/156"E[60;20HE[KE[60;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/157E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/157"' -S /tmp/vFOxG0K/156E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/157" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 176C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/158E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/158" E[59;20HE[KE[59;20H4L, 48C appendedE[59;20HE[KE[59;20H5L, 70C
4 substitutions on 4 lines"/tmp/vFOxG0K/158"E[60;20HE[KE[60;20H5L, 66C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/159E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/159"' -S /tmp/vFOxG0K/158E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/159" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 176C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/160E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/160" E[59;20HE[KE[59;20H3L, 36C appendedE[59;20HE[KE[59;20H4L, 58C
3 substitutions on 3 lines"/tmp/vFOxG0K/160"E[60;20HE[KE[60;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/161E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/161"' -S /tmp/vFOxG0K/160E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/161" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 176C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/162E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/162" E[59;20HE[KE[59;20H5L, 68C appendedE[59;20HE[KE[59;20H6L, 90C
5 substitutions on 5 lines"/tmp/vFOxG0K/162"E[60;20HE[KE[60;20H6L, 85C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/163E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/163"' -S /tmp/vFOxG0K/162E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/163" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 176C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/164E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/164" E[59;20HE[KE[59;20H1L, 10C appendedE[59;20HE[KE[59;20H2L, 32CE[59;20HE[KE[59;20H2L, 31C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/165E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/165"' -S /tmp/vFOxG0K/164E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/165" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 166C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/166E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/166" E[59;20HE[KE[59;20H3L, 33C appendedE[59;20HE[KE[59;20H4L, 55C
3 substitutions on 3 lines"/tmp/vFOxG0K/166"E[60;20HE[KE[60;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/167E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/167"' -S /tmp/vFOxG0K/166E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/167" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 170C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/168E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/168" E[59;20HE[KE[59;20H4L, 45C appendedE[59;20HE[KE[59;20H5L, 67C
4 substitutions on 4 lines"/tmp/vFOxG0K/168"E[60;20HE[KE[60;20H5L, 63C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/169E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/169"' -S /tmp/vFOxG0K/168E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/169" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 170C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/170E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/170" E[59;20HE[KE[59;20H3L, 33C appendedE[59;20HE[KE[59;20H4L, 55C
3 substitutions on 3 lines"/tmp/vFOxG0K/170"E[60;20HE[KE[60;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/171E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/171"' -S /tmp/vFOxG0K/170E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/171" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 170C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/172E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/172" E[59;20HE[KE[59;20H5L, 65C appendedE[59;20HE[KE[59;20H6L, 87C
5 substitutions on 5 lines"/tmp/vFOxG0K/172"E[60;20HE[KE[60;20H6L, 82C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/173E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/153'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/173"' -S /tmp/vFOxG0K/172E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/173" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/153" E[58;20HE[KE[58;20H6L, 170C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  55: OK (1023)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/175E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/175" E[60;20HE[KE[60;20H1L, 11C appendedE[60;20HE[KE[60;20H2L, 33CE[60;20HE[KE[60;20H2L, 32C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/176E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/176"' -S /tmp/vFOxG0K/175E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/176" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 158C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/177E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/177" E[59;20HE[KE[59;20H3L, 34C appendedE[59;20HE[KE[59;20H4L, 56C
3 substitutions on 3 lines"/tmp/vFOxG0K/177"E[60;20HE[KE[60;20H4L, 53C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/178E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/178"' -S /tmp/vFOxG0K/177E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/178" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 162C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/179E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/179" E[59;20HE[KE[59;20H3L, 40C appendedE[59;20HE[KE[59;20H4L, 62C
3 substitutions on 3 lines"/tmp/vFOxG0K/179"E[60;20HE[KE[60;20H4L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/180E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/180"' -S /tmp/vFOxG0K/179E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/180" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 162C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/181E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/181" E[59;20HE[KE[59;20H3L, 32C appendedE[59;20HE[KE[59;20H4L, 54C
3 substitutions on 3 lines"/tmp/vFOxG0K/181"E[60;20HE[KE[60;20H4L, 51C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/182E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/182"' -S /tmp/vFOxG0K/181E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/182" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 152C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/183E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/183" E[59;20HE[KE[59;20H3L, 35C appendedE[59;20HE[KE[59;20H4L, 57C
3 substitutions on 3 lines"/tmp/vFOxG0K/183"E[60;20HE[KE[60;20H4L, 54C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/184E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/184"' -S /tmp/vFOxG0K/183E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/184" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 155C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/185E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/185" E[59;20HE[KE[59;20H4L, 44C appendedE[59;20HE[KE[59;20H5L, 66C
4 substitutions on 4 lines"/tmp/vFOxG0K/185"E[60;20HE[KE[60;20H5L, 62C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/186E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/186"' -S /tmp/vFOxG0K/185E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/186" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 152C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/187E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/187" E[59;20HE[KE[59;20H4L, 47C appendedE[59;20HE[KE[59;20H5L, 69C
4 substitutions on 4 lines"/tmp/vFOxG0K/187"E[60;20HE[KE[60;20H5L, 65C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/188E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/188"' -S /tmp/vFOxG0K/187E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/188" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 155C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/189E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/189" E[59;20HE[KE[59;20H5L, 64C appendedE[59;20HE[KE[59;20H6L, 86C
5 substitutions on 5 lines"/tmp/vFOxG0K/189"E[60;20HE[KE[60;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/190E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/190"' -S /tmp/vFOxG0K/189E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/190" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 152C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/191E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/191" E[59;20HE[KE[59;20H5L, 67C appendedE[59;20HE[KE[59;20H6L, 89C
5 substitutions on 5 lines"/tmp/vFOxG0K/191"E[60;20HE[KE[60;20H6L, 84C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/192E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tmp/vFOxG0K/174'
E[59;96H-E[60;1Hc 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
E[59;96H/E[60;1HvFOxG0K/192"' -S /tmp/vFOxG0K/191E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/192" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/tmp/vFOxG0K/174" E[58;20HE[KE[58;20H6L, 155C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  56: OK (511)
   function FuncException()
1      let g:exception = v:exception
   endfunctionE[58;1H"/tmp/vFOxG0K/193" E[58;20HE[KE[59;1HE[KE[60;4HE[KE[58;20H[noeol] 4L, 80C
Pattern not found: ^\s*$"/tmp/vFOxG0K/193"E[59;20HE[KE[59;20H1L, 36C written"test49.in" E[59;13HE[KE[59;13H30L, 632C
   function FuncThrowpoint()
1      let g:throwpoint = v:throwpoint
   endfunctionE[58;1H"/tmp/vFOxG0K/194" E[58;20HE[KE[59;1HE[KE[60;4HE[KE[58;20H[noeol] 4L, 83C
Pattern not found: ^\s*$"/tmp/vFOxG0K/194"E[59;20HE[KE[59;20H1L, 38C written"test49.in" E[59;13HE[KE[59;13H30L, 632C
   function T(arg, line)
1      if a:line == 2
2E[10Cthrow a:argE[13C" in line 2
3      elseif a:line == 4
4E[10Cthrow a:argE[13C" in line 4
5      elseif a:line == 6
6E[10Cthrow a:argE[13C" in line 6
7      elseif a:line == 8
8E[10Cthrow a:argE[13C" in line 8
9      endif
   endfunctionE[50;1H"/tmp/vFOxG0K/195"E[50;20HE[KE[51;1HE[KE[52;1HE[KE[53;1HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;4HE[KE[50;20H[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/vFOxG0K/195"E[53;20HE[KE[53;20H9L, 292C written"test49.in" E[53;13HE[KE[53;13H30L, 632C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunctionE[54;1H"/tmp/vFOxG0K/196"E[54;20HE[KE[55;1HE[KE[56;4HE[KE[54;20H[noeol] 4L, 69C
Pattern not found: ^\s*$"/tmp/vFOxG0K/196"E[55;20HE[KE[55;20H1L, 30C written"test49.in" E[55;13HE[KE[55;13H30L, 632C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunctionE[56;1H"/tmp/vFOxG0K/197"E[56;20HE[KE[57;1HE[KE[58;4HE[KE[56;20H[noeol] 4L, 69C
Pattern not found: ^\s*$"/tmp/vFOxG0K/197"E[57;20HE[KE[57;20H1L, 30C written"test49.in" E[57;13HE[KE[57;13H30L, 632C
*** Test  57: OK (2147450880)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/198E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/198" E[59;20HE[KE[59;20H87L, 1700C appendedE[59;20HE[KE[59;20H88L, 1722C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/199E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/199"' -c 'breakadd func 4 T' -S /tmp/vFOxG0K/19
E[59;96H8E[60;1HE[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/199" E[58;20HE[KE[59;1HE[KE[58;20H8L, 36C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  58: OK (624945)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/200E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/200" E[60;20HE[KE[60;20H293L, 5789C appendedE[60;20HE[KE[60;20H294L, 5811C
3 substitutions on 3 lines"/tmp/vFOxG0K/200"E[60;20HE[KE[60;20H294L, 5808C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/201E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraV
E[59;96HiE[60;1HmBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/201"' -c 'breakadd file 115 /tmp/vFOxG0K/200
E[59;96H'E[60;2H-c 'breakadd file 225 /tmp/vFOxG0K/200' -S /tmp/vFOxG0K/200E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/201"E[58;20HE[KE[59;1HE[KE[60;2HE[KE[58;20H28L, 162C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 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/vFOxG0K/3' >/tmp/vFOxG0K/202E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/202" E[60;20HE[KE[60;20H33L, 765C appendedE[60;20HE[KE[60;20H34L, 787C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/203E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/203"' -c 'breakadd file 7 /tmp/vFOxG0K/202' -S
E[59;96H/E[60;1Htmp/vFOxG0K/202E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/203" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H3L, 27C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  60: OK (311511339)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/204E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/204" E[60;20HE[KE[60;20H115L, 2272C appendedE[60;20HE[KE[60;20H116L, 2294C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/205E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c
'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/205"' -c 'breakadd file 8 /tmp/v
E[59;96HFE[60;1HOxG0K/204' -c 'breakadd file 36 /tmp/vFOxG0K/204' -c 'breakadd file 40 /tmp/vFOxG0K/204' -c 'br
E[59;96HeE[60;1Hakadd file 69 /tmp/vFOxG0K/204' -c 'breakadd file 95 /tmp/vFOxG0K/204' -c 'breakadd file 97 /tm
E[59;96HpE[60;1H/vFOxG0K/204' -S /tmp/vFOxG0K/204E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[56;1H"/tmp/vFOxG0K/205" E[56;20HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[60;1HE[KE[56;20H14L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[56;13HE[KE[56;13H30L, 632C
*** Test  61: OK (374889517)
   function F()
1      while 1
2      " Missing :endwhile
   endfunctionE[57;1H"/tmp/vFOxG0K/206"E[58;1HE[KE[59;1HE[KE[60;4HE[KE[57;20H[noeol] 5L, 73C
Pattern not found: ^\s*$"/tmp/vFOxG0K/206"E[58;20HE[KE[58;20H2L, 40C written"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  62: OK (286331153)"/i/m/p/o/s/s/i/b/l/e" E[59;24HE[KE[60;1HE[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 6342:E[m
E[1mE[37mE[41m"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writingE[m
*** Test  63: OK (236978127)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/207E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/207" E[60;20HE[KE[60;20H149L, 2828C appendedE[60;20HE[KE[60;20H150L, 2850C
6 substitutions on 6 lines"/tmp/vFOxG0K/207"E[60;20HE[KE[60;20H150L, 2844C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/208E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/208"' -c 'breakadd file 63 /tmp/vFOxG0K/207' -S
/tmp/vFOxG0K/207E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/208" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H16L, 97C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  64: OK (1499645335)
*** Test  65: OK (70187)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/209E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/209" E[60;20HE[KE[60;20H78L, 1520C appendedE[60;20HE[KE[60;20H79L, 1542C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/210E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/210"' -c 'breakadd func 8 F' -S /tmp/vFOxG0K/20
E[59;96H9E[60;1HE[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/210" E[58;20HE[KE[59;1HE[KE[58;20H6L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 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/vFOxG0K/211" [New File]"test49.in" E[60;13HE[KE[60;13H30L, 632C"/tmp/vFOxG0K/212" [New File]"test49.in" E[60;13HE[KE[60;13H30L, 632C
*** Test  74: OK (224907669)
*** Test  75: OK (2000403408)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/213E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/213" E[60;20HE[KE[60;20H253L, 6369C appendedE[60;20HE[KE[60;20H254L, 6391C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/214E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvi
E[59;96HmE[60;1Hinfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/214"' -c 'breakadd func
2 INT' -S /tmp/vFOxG0K/213E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/214" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H28L, 167C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  76: OK (1610087935)
E[1mE[37mE[41mError detected while processing function ERR:E[m
E[33mline    2:E[m
E[1mE[37mE[41mE492: Not an editor command:     asdfE[m
E[1mE[37mE[41mE492: Not an editor command:     asdfE[m
E[1mE[37mE[41mE492: Not an editor command:     asdfE[m
*** Test  77: OK (1388671)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/215E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/215" E[60;20HE[KE[60;20H161L, 4543C appendedE[60;20HE[KE[60;20H162L, 4565C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/216E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/216"' -S /tmp/vFOxG0K/215E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/216" E[59;21HE[KE[60;2HE[KE[59;20H1L, 10C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C
*** Test  78: OK (134217728)
E[1mE[37mE[41mError detected while processing function NEXT:E[m
E[33mline    1:E[m
E[1mE[37mE[41mE121: Undefined variable: novarE[m
E[1mE[37mE[41mE15: Invalid expression: novar | Xloop 1E[m
E[1mE[37mE[41mE121: Undefined variable: novarE[m
E[1mE[37mE[41mE488: Trailing charactersE[m
E[1mE[37mE[41mE108: No such variable: "novar"E[m
E[1mE[37mE[41mE488: Trailing charactersE[m
E[1mE[37mE[41mE121: Undefined variable: novarE[m
E[1mE[37mE[41mE15: Invalid expression: novarE[m
E[1mE[37mE[41mE475: Invalid argument: {novar} | Xloop 1E[m
E[1mE[37mE[41mE121: Undefined variable: novarE[m
E[1mE[37mE[41mE15: Invalid expression:  novarE[m
E[1mE[37mE[41mE475: Invalid argument: { novar} | Xloop 1E[m
*** Test  79: OK (70288929)
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 8828:E[m
E[1mE[37mE[41mE584: :elseif after :else: elseif 1 ||| 2E[m
E[33mline 8838:E[m
E[1mE[37mE[41mE584: :elseif after :else: elseif 1 ||| 2E[m
E[33mline 8846:E[m
E[1mE[37mE[41mE582: :elseif without :if: elseif 1 ||| 2E[m
E[33mline 8854:E[m
E[1mE[37mE[41mE582: :elseif without :if:     elseif 1 ||| 2E[m
*** Test  80: OK (17895765)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/217E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/217" E[60;20HE[KE[60;20H15L, 272C appendedE[60;20HE[KE[60;20H16L, 294CE[60;20HE[KE[60;20H16L, 293C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/218E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/218"' -S /tmp/vFOxG0K/217E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/218" E[59;21HE[KE[60;2HE[KE[59;20H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/219E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/219" E[60;20HE[KE[60;20H12L, 227C appendedE[60;20HE[KE[60;20H13L, 249C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/220E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/220"' -c 'breakadd file 8 /tmp/vFOxG0K/219' -S
E[59;96H/E[60;1Htmp/vFOxG0K/219E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/220" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H2L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  81: OK (387)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/221E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/221" E[60;20HE[KE[60;20H20L, 417C appendedE[60;20HE[KE[60;20H21L, 439CE[60;20HE[KE[60;20H21L, 438C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/222E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/222"' -S /tmp/vFOxG0K/221E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/222" E[59;21HE[KE[60;2HE[KE[59;20H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/223E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/223" E[60;20HE[KE[60;20H24L, 480C appendedE[60;20HE[KE[60;20H25L, 502CE[60;20HE[KE[60;20H25L, 501C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/224E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/224"' -S /tmp/vFOxG0K/223E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/224" E[59;21HE[KE[60;2HE[KE[59;20H1L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/225E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/225" E[60;20HE[KE[60;20H17L, 390C appendedE[60;20HE[KE[60;20H18L, 412C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/226E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/226"' -c 'breakadd file 7 /tmp/vFOxG0K/225' -S
E[59;96H/E[60;1Htmp/vFOxG0K/225E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/226" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H1L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/227E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1HE[KE[59;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/227" E[59;20HE[KE[59;20H21L, 444C appendedE[59;20HE[KE[59;20H22L, 466C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/228E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/228"' -c 'breakadd func 6 I' -S /tmp/vFOxG0K/22
E[59;96H7E[60;1HE[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/228" E[58;20HE[KE[59;1HE[KE[58;20H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  82: OK (8454401)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/229E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/229" E[60;20HE[KE[60;20H17L, 307C appendedE[60;20HE[KE[60;20H18L, 329CE[60;20HE[KE[60;20H18L, 328C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/230E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegi
E[59;96HnE[60;2H= 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/230"' -S /tmp/vFOxG0K/229E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[59;1H"/tmp/vFOxG0K/230" E[59;21HE[KE[60;2HE[KE[59;20H3L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[59;13HE[KE[59;13H30L, 632C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/231E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/231" E[60;20HE[KE[60;20H14L, 266C appendedE[60;20HE[KE[60;20H15L, 288C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/232E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimB
E[59;96HeE[60;1Hgin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/232"' -c 'breakadd file 8 /tmp/vFOxG0K/231' -S
E[59;96H/E[60;1Htmp/vFOxG0K/231E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/232" E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H3L, 13C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  83: OK (2835)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/233E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/233" E[60;20HE[KE[60;20H154L, 3580C appendedE[60;20HE[KE[60;20H155L, 3602C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/234E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraV
E[59;96HiE[60;1HmBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/234"' -c 'breakadd func 1 INT' -S /tmp/vFOxG
E[59;96H0E[60;1HK/233E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/234"E[58;20HE[KE[59;1HE[KE[60;1HE[KE[58;20H18L, 118C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  84: OK (934782101)
TMP"/tmp/vFOxG0K/235" [noeol] 2L, 6CE[60;1HE[KE[60;1H/  "test49.in" 30L, 632C"/n/o/n/e/x/i/s/t/e/n/t"
"/tmp/vFOxG0K/237" 1L, 1C"test49.in" E[60;13HE[KE[60;13H30L, 632C
:!echo XYZ >/tmp/vFOxG0K/238E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1H"/tmp/vFOxG0K/239" [New File]"test49.in" E[60;13HE[KE[60;13H30L, 632C
*** Test  85: OK (198689)
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 9612:E[m
E[1mE[37mE[41mE123: Undefined function: FE[m
Make_amiga.mak(1 of 1): tango down
E[33mline 9616:E[m
E[1mE[37mE[41mE193: :endfunction not inside a functionE[m
E[1mE[37mE[41mError detected while processing function ExecAsScript..MakeScript:E[m
E[33mline    3:E[m
E[1mE[37mE[41mE123: Undefined function: FE[m"/tmp/vFOxG0K/240" E[1mE[37mE[41mcE[mE[60;20HE[KE[60;20H[noeol] 4L, 106C
E[31msearch hit BOTTOM, continuing at TOPE[mE[33mline   10:E[mE[60;11HE[KE[60;1H
E[1mE[37mE[41mE486: Pattern not found: .*F(.*)E[m
E[31msearch hit BOTTOM, continuing at TOPE[mE[33mline   11:E[mE[60;11HE[KE[60;1H
E[1mE[37mE[41mE486: Pattern not found: ^\d*\s*endfunction\>E[m
4 substitutions on 4 lines"/tmp/vFOxG0K/240"E[60;20HE[KE[60;20H3L, 106C written"test49.in" E[60;13HE[KE[60;13H30L, 632C
E[1mE[37mE[41mError detected while processing /tmp/vFOxG0K/240:E[m
E[33mline    1:E[m
E[1mE[37mE[41mE492: Not an editor command: Error detected while processing function ExecAsScript..MakeScript:E[m
E[33mline    2:E[m
E[1mE[37mE[41mE492: Not an editor command: line    3:E[m
E[33mline    3:E[m
E[1mE[37mE[41mE492: Not an editor command: E123: Undefined function: FE[m
E[1mE[37mE[41mError detected while processing /sources/vim74/src/testdir/test49.vim:E[m
E[33mline 9622:E[m
E[1mE[37mE[41mE130: Unknown function: FE[m
*** Test  86: OK (0)
5
*** Test  87: OK (0)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/vFOxG0K/3' >/tmp/vFOxG0K/241E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[60;1HE[KE[60;1H/^\s*if\s\+ExtraVim(.*)/+E[25C1"/tmp/vFOxG0K/241" E[60;20HE[KE[60;20H151L, 3929C appendedE[60;20HE[KE[60;20H152L, 3951C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/vFOxG0K/242E[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:!echo 'qE[34m^ME[mqE[34m^ME[mqE[34m^ME[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'let Ext
E[59;96HrE[60;1HaVimBegin = 1' -c 'let ExtraVimResult = "/tmp/vFOxG0K/242"' -c 'breakadd func 5 ThrowOnInterrup
E[59;96HtE[60;1H' -S /tmp/vFOxG0K/241E[?1lE>E[?12lE[?25hE[?1049l

shell returned 1

Press ENTER or type command to continueE[?1049hE[?1hE=E[?25lE[58;1H"/tmp/vFOxG0K/242" E[58;21HE[KE[59;1HE[KE[60;1HE[KE[58;20H16L, 281C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" E[58;13HE[KE[58;13H30L, 632C
*** Test  88: OK (50443995)
E[32mPress ENTER or type command to continueE[27mE[mE[HE[2JE[1;1HThis 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:
E[1mE[34m~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[30;1HE[?25lE[mE[60;1H98 more linesE[31;1H*** Test   1: OK (34695)E[31;25HE[KE[32;1H*** Test   2: OK (34695)E[32;25HE[KE[33;1H*** Test   3: OK (1384648195)E[33;30HE[KE[34;1H*** Test   4: OK (32883)E[34;25HE[KE[35;1H*** Test   5: OK (32883)E[35;25HE[KE[36;1H*** Test   6: OK (603978947)E[36;29HE[KE[37;1H*** Test   7: OK (90563)E[37;25HE[KE[38;1H*** Test   8: OK (562493431)E[38;29HE[KE[39;1H*** Test   9: OK (363)E[39;23HE[KE[40;1H*** Test  10: OK (559615)E[40;26HE[KE[41;1H*** Test  11: OK (2049)E[41;24HE[KE[42;1H*** Test  12: OK (352256)E[42;26HE[KE[43;1H*** Test  13: OK (145)E[43;23HE[KE[44;1H*** Test  14: OK (42413)E[44;25HE[KE[45;1H*** Test  15: OK (42413)E[45;25HE[KE[46;1H*** Test  16: OK (8722)E[46;24HE[KE[47;1H*** Test  17: OK (285127993)E[47;29HE[KE[48;1H*** Test  18: OK (67224583)E[48;28HE[KE[49;1H*** Test  19: OK (69275973)E[49;28HE[KE[50;1H*** Test  20: OK (1874575085)E[50;30HE[KE[51;1H*** Test  21: OK (147932225)E[51;29HE[KE[52;1H*** Test  22: OK (4161)E[52;24HE[KE[53;1H*** Test  23: OK (49)E[53;22HE[KE[54;1H*** Test  24: OK (41)E[54;22HE[KE[55;1H*** Test  25: OK (260177811)E[55;29HE[KE[56;1H*** Test  26: OK (1681500476)E[56;30HE[KE[57;1H*** Test  27: OK (1996459)E[57;27HE[KE[58;1H*** Test  28: OK (1996459)E[58;27HE[KE[59;1H*** Test  29: OK (170428555)E[59;29HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.-,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 99L, 2869C writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" make valgrind happyE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir => funclistE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsilent funcE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor line in split(funclist, "\n")E[?25l
:  E[?12lE[?25h:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
E[?25l:  E[?12lE[?25h:  if name != ''
E[?25l:    E[?12lE[?25h:    exe "delfunc " . name
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endforE[1;1HE[5LE[?25lE[1;1HThis 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"E[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfor v in keys(g:)E[?25l
:  E[?12lE[?25h:  silent! exe "unlet " . v
E[?25l:  E[?12lE[?25h:endforE[1;1HE[2LE[?25lE[1;1HThis is a test of the script language.E[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hunlet vE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test51.in" 36 lines, 808 charactersE[1;1HTests 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

E[1mE[34m~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for ":highlight". vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 31 lines, 746 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[35;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" basic test if ":highlight" doesn't crashE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlightE[?25l
SpecialKey     E[34mxxxE[m E[34mterm=E[mbold E[34mctermfg=E[m4 E[34mguifg=E[mBlue
NonTextE[8CE[1mE[34mxxxE[m E[34mterm=E[mbold E[34mcterm=E[mbold E[34mctermfg=E[m4 E[34mgui=E[mbold E[34mguifg=E[mBlue
Directory      E[34mxxxE[m E[34mterm=E[mbold E[34mctermfg=E[m4 E[34mguifg=E[mBlue
ErrorMsgE[7CE[1mE[37mE[41mxxxE[m E[34mterm=E[mstandout E[34mcterm=E[mbold E[34mctermfg=E[m7 E[34mctermbg=E[m1 E[34mguifg=E[mWhite E[34mguibg=E[mRed
IncSearch      E[7mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mreverse E[34mgui=E[mreverse
SearchE[9CE[30mE[43mxxxE[m E[34mterm=E[mreverse E[34mctermfg=E[m0 E[34mctermbg=E[m3 E[34mguibg=E[mYellow
MoreMsgE[8CE[32mxxxE[m E[34mterm=E[mbold E[34mctermfg=E[m2 E[34mgui=E[mbold E[34mguifg=E[mSeaGreen
ModeMsgE[8CE[1mxxxE[m E[34mterm=E[mbold E[34mcterm=E[mbold E[34mgui=E[mbold
LineNrE[9CE[33mxxxE[m E[34mterm=E[munderline E[34mctermfg=E[m3 E[34mguifg=E[mBrown
CursorLineNr   E[33mxxxE[m E[34mterm=E[mbold E[34mctermfg=E[m3 E[34mgui=E[mbold E[34mguifg=E[mBrown
QuestionE[7CE[32mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m2 E[34mgui=E[mbold E[34mguifg=E[mSeaGreen
StatusLine     E[1mE[7mxxxE[m E[34mterm=E[mbold,reverse E[34mcterm=E[mbold,reverse E[34mgui=E[mbold,reverse
StatusLineNC   E[7mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mreverse E[34mgui=E[mreverse
VertSplit      E[7mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mreverse E[34mgui=E[mreverse
TitleE[10CE[35mxxxE[m E[34mterm=E[mbold E[34mctermfg=E[m5 E[34mgui=E[mbold E[34mguifg=E[mMagenta
VisualE[9CE[7mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mreverse E[34mguibg=E[mLightGrey
VisualNOS      xxx cleared
WarningMsg     E[31mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m1 E[34mguifg=E[mRed
WildMenuE[7CE[30mE[43mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m0 E[34mctermbg=E[m3 E[34mguifg=E[mBlack E[34mguibg=E[mYellow
FoldedE[9CE[34mE[47mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m4 E[34mctermbg=E[m7 E[34mguifg=E[mDarkBlue E[34mguibg=E[mLightGrey
FoldColumn     E[34mE[47mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m4 E[34mctermbg=E[m7 E[34mguifg=E[mDarkBlue E[34mguibg=E[mGrey
DiffAddE[8CE[44mxxxE[m E[34mterm=E[mbold E[34mctermbg=E[m4 E[34mguibg=E[mLightBlue
DiffChange     E[45mxxxE[m E[34mterm=E[mbold E[34mctermbg=E[m5 E[34mguibg=E[mLightMagenta
DiffDelete     E[1mE[34mE[46mxxxE[m E[34mterm=E[mbold E[34mcterm=E[mbold E[34mctermfg=E[m4 E[34mctermbg=E[m6 E[34mgui=E[mbold E[34mguifg=E[mBlue E[34mguibg=E[mLightCyan
DiffTextE[7CE[1mE[41mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mbold E[34mctermbg=E[m1 E[34mgui=E[mbold E[34mguibg=E[mRed
SignColumn     E[34mE[47mxxxE[m E[34mterm=E[mstandout E[34mctermfg=E[m4 E[34mctermbg=E[m7 E[34mguifg=E[mDarkBlue E[34mguibg=E[mGrey
ConcealE[8Cxxx cleared
SpellBadE[7CE[41mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m1 E[34mgui=E[mundercurl E[34mguisp=E[mRed
SpellCapE[7CE[44mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m4 E[34mgui=E[mundercurl E[34mguisp=E[mBlue
SpellRare      E[45mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m5 E[34mgui=E[mundercurl E[34mguisp=E[mMagenta
SpellLocal     E[46mxxxE[m E[34mterm=E[munderline E[34mctermbg=E[m6 E[34mgui=E[mundercurl E[34mguisp=E[mDarkCyan
PmenuE[10CE[30mE[45mxxxE[m E[34mctermfg=E[m0 E[34mctermbg=E[m5 E[34mguibg=E[mLightMagenta
PmenuSelE[7CE[30mE[47mxxxE[m E[34mctermfg=E[m0 E[34mctermbg=E[m7 E[34mguibg=E[mGrey
PmenuSbar      E[47mxxxE[m E[34mctermbg=E[m7 E[34mguibg=E[mGrey
PmenuThumb     E[40mxxxE[m E[34mctermbg=E[m0 E[34mguibg=E[mBlack
TabLineE[8CE[4mE[30mE[47mxxxE[m E[34mterm=E[munderline E[34mcterm=E[munderline E[34mctermfg=E[m0 E[34mctermbg=E[m7 E[34mgui=E[munderline
E[19CE[34mguibg=E[mLightGrey
TabLineSel     E[1mxxxE[m E[34mterm=E[mbold E[34mcterm=E[mbold E[34mgui=E[mbold
TabLineFill    E[7mxxxE[m E[34mterm=E[mreverse E[34mcterm=E[mreverse E[34mgui=E[mreverse
CursorColumn   E[47mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m7 E[34mguibg=E[mGrey90
CursorLine     E[4mxxxE[m E[34mterm=E[munderline E[34mcterm=E[munderline E[34mguibg=E[mGrey90
ColorColumn    E[41mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m1 E[34mguibg=E[mLightRed
MatchParen     E[46mxxxE[m E[34mterm=E[mreverse E[34mctermbg=E[m6 E[34mguibg=E[mCyan
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi SearchE[?25l
SearchE[9CE[30mE[43mxxxE[m E[34mterm=E[mreverse E[34mctermfg=E[m0 E[34mctermbg=E[m3 E[34mguibg=E[mYellow
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" test setting colors.E[?25lE[1;1HE[46LE[1;1HTests 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

E[1mE[34m~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[mE[60;1HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" test clearing one color and all doesn't generate error or warningE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#00ff00 guibg=CyanE[?25lE[1mE[37mE[41mE418: Illegal value: guifg=#00ff00E[mE[60;35HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group2 term= cterm=E[?25lE[1mE[37mE[41mE418: Illegal value: cterm=E[36;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group3 term=underline cterm=boldE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir! >test.outE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhi NewGroupE[?25l
NewGroupE[7CE[7mE[34mE[47mxxxE[m E[34mterm=E[mbold E[34mcterm=E[mitalic E[34mctermfg=E[m4 E[34mctermbg=E[m7
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group2E[?25l
Group2E[9Cxxx cleared
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group3E[?25l
Group3E[9CE[1mxxxE[m E[34mterm=E[munderline E[34mcterm=E[mbold
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi clear NewGroupE[?25lE[1;1HE[6LE[1;1HTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vim
:" basic test if ":highlight" doesn't crash
:highlightE[60;1HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hhi NewGroupE[?25l
NewGroupE[7Cxxx cleared
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group2E[?25l
Group2E[9Cxxx cleared
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Group2 NONEE[?25lE[1;1HE[4LE[1;1HTests for ":highlight". vim: set ft=vim :

STARTTEST
:so small.vimE[60;1HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hhi Group2E[?25l
Group2E[9Cxxx cleared
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi clearE[?25lE[27mE[mE[HE[2JE[1;1HTests 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

E[1mE[34m~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[36;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hhi Group3E[?25l
Group3E[9Cxxx cleared
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hhi Crash term='asdfE[?25lE[1mE[37mE[41mE475: Invalid argument: term='asdfE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[3LE[1;1HTests for ":highlight". vim: set ft=vim :

STARTTESTE[60;1HE[KE[36;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" filter ctermfg and ctermbg, the numbers depend on the terminalE[?25lE[36;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he test.outE[?25l"test.out" 20 lines, 289 charactersE[1;1HE[KE[3;1HNewGroup       xxx term=bold cterm=italic ctermfg=4 ctermbg=7E[4;1HE[KE[5;1HGroup2         xxx clearedE[5;27HE[KE[6;1HE[KE[7;1HGroup3         xxx term=underline cterm=boldE[8;1HE[KE[9;1HE[KE[10;1HNewGroup       xxx clearedE[10;27HE[KE[11;1HE[KE[12;1HGroup2         xxx clearedE[12;27HE[KE[13;1HE[KE[14;1HE[KE[15;1HGroup2         xxx clearedE[16;1HE[KE[17;1HE[KE[18;1HGroup3         xxx clearedE[19;1HE[KE[20;1HE475: Invalid argument: term='asdf
E[1mE[34m~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h%s/ctermfg=\d*/ctermfg=2/E[?25lE[3;51H2E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%s/ctermbg=\d*/ctermbg=3/E[?25lE[3;61H3E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" filter out possibly translated error messageE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%s/E475: [^:]*:/E475:/E[?25lE[20;7Hterm='asdfE[20;17HE[KE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" fix the fileformatE[?25lE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ff&E[?25lE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwq!E[?25l"test.out" 20 lines, 271 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test52.in" 65 lines, 1645 charactersE[1;1HTests 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
:"E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for reading and writing files with conversion for Win32.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 57 lines, 1333 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" make this a dummy test for non-Win32 systemsE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has("win32") | e! test.ok | wq! test.out | endifE[?25l"test.ok" E[60;11HE[KE[60;11H18 lines, 1374 characters
"test.out" [New File] 18 lines, 1374 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test53.in" 78 lines, 1336 charactersE[1;1HTests 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
:"
/^<begin
jfXdit
0fXdit
fXdat
0fXdat
:"
:put =matchstr(\"abcd\", \".\", 0, 2) " b
:put =matchstr(\"abcd\", \"..\", 0, 2) " bc
:put =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)
:put =matchstr(\"abcd\", \".\", 0, -1) " a
:put =match(\"abcd\", \".\", 0, 5) " -1
:put =match(\"abcd\", \".\", 0, -1) " 0
/^foobar
gncsearchmatchE[34m^[E[m/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
$cgNmongooseE[34m^[E[m/i
cgnjE[34m^[E[m
:/^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" sdE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for string and html text objects. vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 42 lines, 644 characters writtenE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[8;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[50;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[51;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[51;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start:/E[?25lE[60;9HE[KE[60;1HE[52;1HE[?12lE[?25hE[?25lE[7CfoE[52;11HE[KE[52;8HE[?12lE[?25hE[53;8HE[?25lE[?12lE[?25hE[?25lE[7m'foo'E[?12lE[?25hE[?25l 'bar'E[?12lE[?25hE[?25lE[mxxxxxxxxxxxxE[?12lE[?25h
E[14CE[?25lblahE[54;13HE[KE[54;9HE[?12lE[?25hE[55;9HE[12CE[?25l"E[55;12HE[KE[55;11HE[?12lE[?25hE[56;11HE[9CE[?25lE[?12lE[?25hE[?25l'E[7m repE[?12lE[?25hE[?25lE[myyyyyE[?12lE[?25hE[57;11HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset quoteescape=+*-E[?25lE[57;11HE[?12lE[?25hE[?25l` b`laE[57;12HE[KE[57;6HE[?12lE[?25hE[58;6HE[29CE[?25lE[?12lE[?25hE[?25lE[7m" sdf"E[?12lE[?25hE[?25lE[m"E[5CE[7m E[58;27HE[?12lE[?25hE[?25l"E[?12lE[?25hE[?25lE[58;16H asdf" sdf E[58;15HE[?12lE[?25hE[?25lE[58;7Hah" sdf "E[mvoo "E[?12lE[?25hE[?25lzzzzzzzzzzzzzzzzzzzzzzzzzzzzvoo "E[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^<beginE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H<begin>E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-<b>asdf<i>Xasdf</i>asdf</b>-E[?12lE[?25hE[11CE[?25l</i>asdf</b>-E[59;25HE[KE[59;12HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-<b>asdX<i>a<i />sdf</i>asdf</b>-E[59;12HE[?12lE[?25hE[7CE[?25l</b>-E[59;10HE[KE[59;5HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-<b>asdf<i>Xasdf</i>asdf</b>--<b>E[?12lE[?25hE[7CE[?25lasdf</b>-E[59;18HE[KE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-<b>asdX<i>as<b />df</i>asdf</b>-E[59;9HE[?12lE[?25hE[7CE[?25l--E[59;3HE[KE[59;2HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H</begin><E[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;2HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =matchstr(\"abcd\", \".\", 0, 2) " bE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HbE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hput =matchstr(\"abcd\", \"..\", 0, 2) " bcE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HbcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hput =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hput =matchstr(\"abcd\", \".\", 0, -1) " aE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HaE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hput =match(\"abcd\", \".\", 0, 5) " -1E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hput =match(\"abcd\", \".\", 0, -1) " 0E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^foobarE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HSEARCH:
foobarE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[7mfoobaE[?12lE[?25hE[?25lE[msearchmatchE[?12lE[?25hE[?25l
/E[?12lE[?25hone\_s*two\_sE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HoneE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h1E[?25lE[1;59rE[1;1HE[15LE[1;60rE[1;1HTests 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=+*-E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[16ME[1;60rE[44;1H<begin>
-<b>asdf<i></i>asdf</b>-
-<b></b>-
-<b>asdfasdf</b>-
--
</begin>
b
bc
c
a
-1
0
SEARCH:
searchmatch
E[7mone 
twoE[?12lE[?25hE[?25lE[mE[58;1Habcdx | abcdx | abcdx
joinE[58;1HE[?12lE[?25h
E[?25l
/E[?12lE[?25h[a]bcdxE[?25lE[31msearch hit BOTTOM, continuing at TOPE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1E[?25lE[1;59rE[1;1HE[16LE[1;60rE[1;1HTests 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`E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[15ME[1;60rE[45;1H<begin>
-<b>asdf<i></i>asdf</b>-
-<b></b>-
-<b>asdfasdf</b>-
--
</begin>
b
bc
c
a
-1
0
SEARCH:
searchmatch
abcdx | E[7mabcdE[mx | abcdxE[59;13HE[?12lE[?25hE[?25l | abcdxE[59;17HE[KE[59;9HE[?12lE[?25hE[?25l
/E[?12lE[?25hjoinE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HjoinE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h$E[?25lE[59;5HE[?12lE[?25hE[?25ljoin E[?12lE[?25hE[?25llinesE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hzero width patternE[60;1HE[KE[59;6HE[?12lE[?25hE[?25l
/E[?12lE[?25h\>\zsE[?25lE[59;11HE[?12lE[?25hE[?25lzeroE[?12lE[?25hE[?25lwidth patternE[59;18HE[KE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hdelete first and last charsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lelete first and last charsE[59;27HE[KE[59;1HE[?12lE[?25hE[25CE[?25l
/E[?12lE[?25h\zsE[?25lE[59;26HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[59;26HE[KE[59;25HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h[u]niquepattern/sE[?25lE[60;17HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1Huniquepattern uniquepatternE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[7muE[?12lE[?25hE[?25lniquepatterE[?12lE[?25hE[?25lE[m uniquepatternE[59;15HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hmy very excellent mother just served us nachosE[?12lE[?25hE[?25l
/E[?12lE[?25hmotherE[?25lE[59;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset selection=exclusiveE[?25lE[59;19HE[?12lE[?25hE[27CE[?25lE[59;21Hngoose just served us nachosE[59;26HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hiE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hfor (i=0; i<=10; i++)E[60;1HE[KE[59;6HE[?12lE[?25hE[?25ljE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hend:E[?12lE[?25hE[?25l
:E[?12lE[?25h/^start:/,/^end:/wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 30 lines, 395 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test54.in" 22 lines, 658 charactersE[1;1HSome tests for buffer-local autocommands

STARTTEST
:so small.vim
:e xx
:if has("vms")
: !del test.out.*
: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefileE[11C" here, autocommand for xx shall write test.out
:E[21C" but autocommand shall not apply to buffer named <buffer>
:bwipe xxE[13C" here, autocommand shall be auto-deleted
:e xxE[17C" nothing shall be written
:e somefileE[11C" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx
E[1mE[34m~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HSome tests for buffer-local autocommandsE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 15 lines, 555 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[19;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[20;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he xxE[?25l"xx" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif has("vms")E[?25l
:  E[?12lE[?25h: !del test.out.*
E[?25l:  E[?12lE[?25h: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > test.out
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: !rm -f test.out
E[?25l:!rm -f test.outE[?1lE>E[?12lE[?25hE[?1049l

Press ENTER or type command to continueE[?1049hE[?1hE=E[60;1H
E[?25l:  :E[?12lE[?25h au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
E[?25l:  E[?12lE[?25h:endifE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he somefile           " here, autocommand for xx shall write test.out E[?25l:!echo buffer-local autommand in xx>> test.outE[60;47HE[KE[60;47H
E[?12lE[?25hE[?25lE[m"somefile" [New File]
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h                     " but autocommand shall not apply to buffer named <buffer>E[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hbwipe xx             " here, autocommand shall be auto-deletedE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he xx                 " nothing shall be writtenE[?25l"xx" [New File]E[60;23HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he somefile           " nothing shall be writtenE[?25l"somefile" [New File]E[60;23HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test55.in" 395 lines, 8118 charactersE[1;1HTests 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:exceptionE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for List and Dictionary types.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 389 lines, 8032 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H:"
:" 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
oE[34m^RE[m=aE[34m^M^[E[m:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
oE[34m^RE[m=aE[34m^M^[E[m:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfun Test(...)E[?25l
:  E[?12lE[?25h:lang C
E[?25l:  E[?12lE[?25h:" Creating List directly with different types
E[?25l:  E[?12lE[?25h:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25h:$put =string(l[-1])
E[?25l:  E[?12lE[?25h:$put =string(l[-4])
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  $put =string(l[-5])
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:14]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:" List slices
E[?25l:  E[?12lE[?25h:$put =string(l[:])
E[?25l:  E[?12lE[?25h:$put =string(l[1:])
E[?25l:  E[?12lE[?25h:$put =string(l[:-2])
E[?25l:  E[?12lE[?25h:$put =string(l[0:8])
E[?25l:  E[?12lE[?25h:$put =string(l[8:-1])
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" List identity
E[?25l:  E[?12lE[?25h:let ll = l
E[?25l:  E[?12lE[?25h:let lx = copy(l)
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l isnot lx)
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Creating Dictionary directly with different types
E[?25l:  E[?12lE[?25h:let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
E[?25l:  E[?12lE[?25h:$put =string(d) . d.1
E[?25l:  E[?12lE[?25h:$put =string(sort(keys(d)))
E[?25l:  E[?12lE[?25h:$put =string (values(d))
E[?25l:  E[?12lE[?25h:for [key, val] in items(d)
E[?25l:    E[?12lE[?25h:  $put =key . ':' . string(val)
E[?25l:    E[?12lE[?25h:  unlet key val
E[?25l:    E[?12lE[?25h:endfor
E[?25l:  E[?12lE[?25h:call extend  (d, {3:33, 1:99})
E[?25l:  E[?12lE[?25h:call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  call extend(d, {3:333,4:444}, "error")
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:15] . v:exception[-1:-1]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:$put =string(d)
E[?25l:  E[?12lE[?25h:call filter(d, 'v:key =~ ''[ac391]''')
E[?25l:  E[?12lE[?25h:$put =string(d)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Dictionary identity
E[?25l:  E[?12lE[?25h:let dd = d
E[?25l:  E[?12lE[?25h:let dx = copy(d)
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d isnot dx)
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Changing var type should fail
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  let d = []
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:14] . v:exception[-1:-1]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  let l = {}
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:14] . v:exception[-1:-1]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" removing items with :unlet
E[?25l:  E[?12lE[?25h:unlet l[2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25h:let l = range(8)
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:unlet l[:3]
E[?25l:    E[?12lE[?25h:unlet l[1:]
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:$put =v:exception
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:unlet d.c
E[?25l:  E[?12lE[?25h:unlet d[-1]
E[?25l:  E[?12lE[?25h:$put =string(d)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" removing items out of range: silently skip items that don't exist
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[2:1]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[2:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[2:3]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[2:4]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[2:5]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-1:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-2:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-3:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-4:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-5:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25hlet l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:unlet l[-6:2]
E[?25l:  E[?12lE[?25h:$put =string(l)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" assignment to a list
E[?25l:  E[?12lE[?25h:let l = [0, 1, 2, 3]
E[?25l:  E[?12lE[?25h:let [va, vb] = l[2:3]
E[?25l:  E[?12lE[?25h:$put =va
E[?25l:  E[?12lE[?25h:$put =vb
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  let [va, vb] = l
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:14]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  let [va, vb] = l[1:1]
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =v:exception[:14]
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)
E[?25l:  E[?12lE[?25h:let d = {}
E[?25l:  E[?12lE[?25h:for i in range(1500)
E[?25l:    E[?12lE[?25h: let d[i] = 3000 - i
E[?25l:    E[?12lE[?25h:endfor
E[?25l:  E[?12lE[?25h:$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]
E[?25l:  E[?12lE[?25h:try
E[?25l:    E[?12lE[?25h:  let n = d[1500]
E[?25l:    E[?12lE[?25h:catch
E[?25l:    E[?12lE[?25h:  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')
E[?25l:    E[?12lE[?25h:endtry
E[?25l:  E[?12lE[?25h:" lookup each items
E[?25l:  E[?12lE[?25h:for i in range(1500)
E[?25l:    E[?12lE[?25h: if d[i] != 3000 - i
E[?25l:      E[?12lE[?25h:  $put =d[i]
E[?25l:      E[?12lE[?25h: endif
E[?25l:    E[?12lE[?25h:endfor
E[?25l:  E[?12lE[?25h: let i += 1
E[?25l:  E[?12lE[?25h:" delete even items
E[?25l:  E[?12lE[?25h:while i >= 2
E[?25l:    E[?12lE[?25h: let i -= 2
E[?25l:    E[?12lE[?25h: unlet d[i]
E[?25l:    E[?12lE[?25h:endwhile
E[?25l:  E[?12lE[?25h:$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]
E[?25l:  E[?12lE[?25h:" delete odd items, checking value, one intentionally wrong
E[?25l:  E[?12lE[?25h:let d[33] = 999
E[?25l:  E[?12lE[?25h:let i = 1
E[?25l:  E[?12lE[?25h:while i < 1500
E[?25l:    E[?12lE[?25h: if d[i] != 3000 - i
E[?25l:      E[?12lE[?25h:  $put =i . '=' . d[i]
E[?25l:      E[?12lE[?25h: else
E[?25l:      E[?12lE[?25h:  unlet d[i]
E[?25l:      E[?12lE[?25h: endif
E[?25l:    E[?12lE[?25h: let i += 2
E[?25l:    E[?12lE[?25h:endwhile
E[?25l:  E[?12lE[?25h:$put =string(d)  " must be almost empty now
E[?25l:  E[?12lE[?25h:unlet d
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Dictionary function
E[?25l:  E[?12lE[?25h:let dict = {}
E[?25l:  E[?12lE[?25h:func dict.func(a) dict
E[?25l:    E[?12lE[?25h:  $put =a:a . len(self.data)
E[?25l:    E[?12lE[?25h:endfunc
E[?25l:    E[?12lE[?25h:let dict.data = [1,2,3]
E[?25l:    E[?12lE[?25h:call dict.func("len: ")
E[?25l:    E[?12lE[?25h:let x = dict.func("again: ")
E[?25l:    E[?12lE[?25h:try
E[?25l:      E[?12lE[?25h:  let Fn = dict.func
E[?25l:      E[?12lE[?25h:  call Fn('xxx')
E[?25l:      E[?12lE[?25h:catch
E[?25l:      E[?12lE[?25h:  $put =v:exception[:15]
E[?25l:      E[?12lE[?25h:endtry
E[?25l:    E[?12lE[?25h:" 
E[?25l:    E[?12lE[?25h:" Function in script-local List or Dict
E[?25l:    E[?12lE[?25h:let g:dict = {}
E[?25l:    E[?12lE[?25h:function g:dict.func() dict
E[?25l:      E[?12lE[?25h:  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')
E[?25l:      E[?12lE[?25h:endfunc
E[?25l:      E[?12lE[?25h:let g:dict.foo = ['-', 2, 3]
E[?25l:      E[?12lE[?25h:call insert(g:dict.foo, function('strlen'))
E[?25l:      E[?12lE[?25h:call g:dict.func()
E[?25l:      E[?12lE[?25h:" 
E[?25l:      E[?12lE[?25h:" Nasty: remove func from Dict that's being called (works)
E[?25l:      E[?12lE[?25h:let d = {1:1}
E[?25l:      E[?12lE[?25h:func d.func(a)
E[?25l:E[8CE[?12lE[?25h:  return "a:". a:a
E[?25l:E[8CE[?12lE[?25h:endfunc
E[?25l:E[8CE[?12lE[?25h:$put =d.func(string(remove(d, 'func')))
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" Nasty: deepcopy() dict that refers to itself (fails when noref used)
E[?25l:E[8CE[?12lE[?25h:let d = {1:1, 2:2}
E[?25l:E[8CE[?12lE[?25h:let l = [4, d, 6]
E[?25l:E[8CE[?12lE[?25h:let d[3] = l
E[?25l:E[8CE[?12lE[?25h:let dc = deepcopy(d)
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let dc = deepcopy(d, 1)
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put =v:exception[:14]
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:let l2 = [0, l, l, 3]
E[?25l:E[8CE[?12lE[?25h:let l[1] = l2
E[?25l:E[8CE[?12lE[?25h:let l3 = deepcopy(l2)
E[?25l:E[8CE[?12lE[?25h:$put ='same list: ' . (l3[1] is l3[2])
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" Locked variables
E[?25l:E[8CE[?12lE[?25h:for depth in range(5)
E[?25l:E[10CE[?12lE[?25h:  $put ='depth is ' . depth
E[?25l:E[10CE[?12lE[?25h:  for u in range(3)
E[?25l:E[12CE[?12lE[?25h:    unlet l
E[?25l:E[12CE[?12lE[?25h:    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]
E[?25l:E[12CE[?12lE[?25h:    exe "lockvar " . depth . " l"
E[?25l:E[12CE[?12lE[?25h:    if u == 1
E[?25l:E[14CE[?12lE[?25h:      exe "unlockvar l"
E[?25l:E[14CE[?12lE[?25h:    elseif u == 2
E[?25l:E[14CE[?12lE[?25h:      exe "unlockvar " . depth . " l"
E[?25l:E[14CE[?12lE[?25h:    endif
E[?25l:E[12CE[?12lE[?25h:    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").islocked("l[1][1]
E[59;96H[E[60;1H0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2]['6'][7]")
E[?25l:E[12CE[?12lE[?25h:    $put =ps
E[?25l:E[12CE[?12lE[?25h:    let ps = ''
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[1][1][0] = 99
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[1][1] = [99]
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[1] = [99]
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[2]['6'][7] = 99
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[2][6] = {99: 99}
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l[2] = {99: 99}
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    try
E[?25l:E[14CE[?12lE[?25h:      let l = [99]
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'p'
E[?25l:E[14CE[?12lE[?25h:    catch
E[?25l:E[14CE[?12lE[?25h:      let ps .= 'F'
E[?25l:E[14CE[?12lE[?25h:    endtry
E[?25l:E[12CE[?12lE[?25h:    $put =ps
E[?25l:E[12CE[?12lE[?25h:  endfor
E[?25l:E[10CE[?12lE[?25h:endfor
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" a:000 function argument
E[?25l:E[8CE[?12lE[?25h:" first the tests that should fail
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let a:000 = [1, 2]
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put ='caught a:000'
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let a:000[0] = 9
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put ='caught a:000[0]'
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let a:000[2] = [9, 10]
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put ='caught a:000[2]'
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let a:000[3] = {9: 10}
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put ='caught a:000[3]'
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:" now the tests that should pass
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  let a:000[2][1] = 9
E[?25l:E[10CE[?12lE[?25h:  call extend(a:000[2], [5, 6])
E[?25l:E[10CE[?12lE[?25h:  let a:000[3][5] = 8
E[?25l:E[10CE[?12lE[?25h:  let a:000[3]['a'] = 12
E[?25l:E[10CE[?12lE[?25h:  $put =string(a:000)
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put ='caught ' . v:exception
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" reverse() and sort()
E[?25l:E[8CE[?12lE[?25h:let l = ['-0', 'A11', 2, 'xaaa', 4, 'foo', 'foo6', [0, 1, 2], 'x8']
E[?25l:E[8CE[?12lE[?25h:$put =string(reverse(l))
E[?25l:E[8CE[?12lE[?25h:$put =string(reverse(reverse(l)))
E[?25l:E[8CE[?12lE[?25h:$put =string(sort(l))
E[?25l:E[8CE[?12lE[?25h:$put =string(reverse(sort(l)))
E[?25l:E[8CE[?12lE[?25h:$put =string(sort(reverse(sort(l))))
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" splitting a string to a List
E[?25l:E[8CE[?12lE[?25h:$put =string(split('  aa  bb '))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('  aa  bb  ', '\W\+', 0))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('  aa  bb  ', '\W\+', 1))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('  aa  bb  ', '\W', 1))
E[?25l:E[8CE[?12lE[?25h:$put =string(split(':aa::bb:', ':', 0))
E[?25l:E[8CE[?12lE[?25h:$put =string(split(':aa::bb:', ':', 1))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('aa,,bb, cc,', ',\s*', 1))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('abc', '\zs'))
E[?25l:E[8CE[?12lE[?25h:$put =string(split('abc', '\zs', 1))
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" compare recursively linked list and dict
E[?25l:E[8CE[?12lE[?25h:let l = [1, 2, 3, 4]
E[?25l:E[8CE[?12lE[?25h:let d = {'1': 1, '2': l, '3': 3}
E[?25l:E[8CE[?12lE[?25h:let l[1] = d
E[?25l:E[8CE[?12lE[?25h:$put =(l == l)
E[?25l:E[8CE[?12lE[?25h:$put =(d == d)
E[?25l:E[8CE[?12lE[?25h:$put =(l != deepcopy(l))
E[?25l:E[8CE[?12lE[?25h:$put =(d != deepcopy(d))
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" compare complex recursively linked list and dict
E[?25l:E[8CE[?12lE[?25h:let l = []
E[?25l:E[8CE[?12lE[?25h:call add(l, l)
E[?25l:E[8CE[?12lE[?25h:let dict4 = {"l": l}
E[?25l:E[8CE[?12lE[?25h:call add(dict4.l, dict4)
E[?25l:E[8CE[?12lE[?25h:let lcopy = deepcopy(l)
E[?25l:E[8CE[?12lE[?25h:let dict4copy = deepcopy(dict4)
E[?25l:E[8CE[?12lE[?25h:$put =(l == lcopy)
E[?25l:E[8CE[?12lE[?25h:$put =(dict4 == dict4copy)
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" Pass the same List to extend()
E[?25l:E[8CE[?12lE[?25h:let l = [1, 2, 3, 4, 5]
E[?25l:E[8CE[?12lE[?25h:call extend(l, l)
E[?25l:E[8CE[?12lE[?25h:$put =string(l)
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" Pass the same Dict to extend()
E[?25l:E[8CE[?12lE[?25h:let d = { 'a': {'b': 'B'}}
E[?25l:E[8CE[?12lE[?25h:call extend(d, d)
E[?25l:E[8CE[?12lE[?25h:$put =string(d)
E[?25l:E[8CE[?12lE[?25h:"
E[?25l:E[8CE[?12lE[?25h:" Pass the same Dict to extend() with "error"
E[?25l:E[8CE[?12lE[?25h:try
E[?25l:E[10CE[?12lE[?25h:  call extend(d, d, "error")
E[?25l:E[10CE[?12lE[?25h:catch
E[?25l:E[10CE[?12lE[?25h:  $put =v:exception[:15] . v:exception[-1:-1]
E[?25l:E[10CE[?12lE[?25h:endtry
E[?25l:E[8CE[?12lE[?25h:$put =string(d)
E[?25l:E[8CE[?12lE[?25h:endfunE[27mE[mE[HE[2JE[?25lE[1;1H:"
:" 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
oE[34m^RE[m=aE[34m^M^[E[m:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
oE[34m^RE[m=aE[34m^M^[E[m:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall Test(1, 2, [3, 4], {5: 6})  " This may take a whileE[?25lE[1mE[37mE[41mError detected while processing function Test:E[mE[60;47HE[KE[60;1H
E[33mline   87:E[m
E[1mE[37mE[41mE684: list index out of range: 1E[m
E[33mline  102:E[m
E[1mE[37mE[41mE684: list index out of range: 2E[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[5LE[1;1H0000-000
ppppppp
depth is 1
1000-000
ppppppF
0000-000E[6;9HE[KE[7;1HpppppppE[7;8HE[KE[8;1H0000-000E[8;9HE[KE[9;1HpppppppE[9;8HE[KE[10;1Hdepth is 2
1100-100E[11;9HE[KE[12;1HppFppFFE[12;8HE[KE[13;1H0000-000E[13;9HE[KE[14;1HpppppppE[14;8HE[KE[15;1H0000-000E[15;9HE[KE[16;1HpppppppE[16;8HE[KE[17;1Hdepth is 3E[17;11HE[KE[18;1H1110-110E[18;9HE[KE[19;1HpFFpFFFE[19;8HE[KE[20;1H0010-010
pFppFppE[21;9HE[KE[22;1H0000-000E[22;10HE[KE[23;1HpppppppE[23;8HE[KE[24;1Hdepth is 4E[24;11HE[KE[25;1H1111-111
FFFFFFFE[26;9HE[KE[27;1H0011-011E[27;10HE[KE[28;1HFFpFFppE[28;8HE[KE[29;1H0000-000E[29;9HE[KE[30;1Hppppppp
caught a:000E[31;13HE[KE[32;1Hcaught a:000[0]
caught a:000[2]E[33;16HE[KE[34;1Hcaught a:000[3]
[1, 2, [3, 9, 5, 6], {'a': 12, '5': 8}]E[35;40HE[KE[36;1H['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']E[42;13HE[KE[43;1H['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', '']E[46;25HE[KE[47;1H['aa', '', 'bb', 'cc', '']
['a', 'b', 'c']E[48;16HE[KE[49;1H['', 'a', '', 'b', '', 'c', '']
1E[50;2HE[KE[51;1H1E[51;2HE[KE[52;1H0E[52;2HE[KE[53;1H0E[53;2HE[KE[54;1H1E[54;2HE[KE[55;1H1E[55;2HE[KE[56;1H[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hdelfunc TestE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet dictE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall garbagecollect(1)E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for patch 7.3.637E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet a = 'No error caught'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htry|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtryE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H=E[?12lE[?25haE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HVim(foldopen):E490:E[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlang CE[?25lE[59;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir => aE[?25lE[59;19HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htry|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtryE[?25lE[1mE[37mE[41mError detected while processing :E[mE[60;34HE[KE[60;1H
E[1mE[37mE[41mE492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtryE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[1;1HE[2LE[1;1Hppppppp
depth is 1E[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
=E[?12lE[?25haE[?25lE[1;59rE[1;1HE[5ME[1;60rE[57;1HError detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtryE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start:/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 123 lines, 2133 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test56.in" 21 lines, 457 charactersE[1;1HTest for script-local function.     vim: set ft=vim :

STARTTEST
:so small.vim
:"
:set nocp viminfo+=nviminfo
:/^start:/+1,/^end:/-1w! Xtest.vim
:source Xtest.vim
_x
:$-1,$wq! test.out
ENDTEST

start:
fun <SID>DoLast()
  call append(line('$'), "last line")
endfun
fun s:DoNothing()
  call append(line('$'), "nothing line")
endfun
nnoremap <buffer> _x    :call <SID>DoNothing()<bar>call <SID>DoLast()<bar>delfunc <SID>DoNothinggE[21;1H<bar>delfunc <SID>DoLast<cr>
end:
E[1mE[34m~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for script-local function.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 7 lines, 120 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp viminfo+=nviminfoE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start:/+1,/^end:/-1w! Xtest.vimE[?25l"Xtest.vim" E[60;13HE[KE[60;13H[New] 7L, 251C writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsource Xtest.vimE[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:call <SNR>3_DoNothing()|call <SNR>3_DoLast()|delfunc <SNR>3_DoNothing|delfunc <SNR>3_DoLastE[23;1Hnothing lineE[23;13HE[KE[24;1Hlast lineE[24;10HE[KE[12;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-1,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 2L, 23C written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test57.in" 500 lines, 3666 charactersE[1;1HTests 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
aE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for :sort command.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 30 lines, 842 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[34;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^t01:/+1,/^t02/-1sortE[?25lE[37;1HE[KE[38;1HE[KE[39;1H 123bE[40;2HE[KE[41;4H2
a123
a
abE[44;3HE[KE[45;1HabcE[45;4HE[KE[46;1HbE[46;5HE[KE[47;1HbE[47;5HE[KE[48;4H1E[48;5HE[KE[49;5Hb
b322
c123d
c321dE[37;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^t02:/+1,/^t03/-1sort nE[?25lE[56;2HE[KE[57;1HE[KE[58;1HE[KE[59;1HE[KE[54;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^t03:/+1,/^t04/-1sort xE[?25lE[1;59rE[1;1HE[16ME[1;60rE[44;1H-24
x-22
0
a122
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimalE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t04:/+1,/^t05/-1sort uE[?25lE[1;59rE[1;1HE[17ME[1;60rE[44;1Ha
ab
abc
 123b
a122
a123
a321
b123
b321
b321
b321b
b322b
c123d
c321d
t04: alpha, uniqueE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t05:/+1,/^t06/-1sort!E[?25lE[1;59rE[1;1HE[15ME[1;60rE[45;2H123b
a
a122
a123
a321
ab
abc
b123
b321
b321b
b322b
c123d
c321d
t05: alpha, reverse
c321dE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t06:/+1,/^t07/-1sort! n        E[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hc123d
b322b
b321b
b321
b321
b123
abc
ab
a321
a123
a122
a
 123b


t06: numeric, reverse
b322bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t07:/+1,/^t08/-1sort! uE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hb321b
b321
c321d
b321
a321
 123b
c123d
b123
a123
a122


a
ab
abc
t07: unique, reverse
c321dE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t08:/+1,/^t09/-1sort o         E[?25lE[1;59rE[1;1HE[15ME[1;60rE[45;1Hc123d
b322b
b321b
b321
b123
abc
ab
a321
a123
a122
a
 123b

t08: octal
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t09:/+1,/^t10/-1sort! x        E[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a122
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321dE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t10:/+1,/^t11/-1sort/./        E[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hc123d
b322b
b321b
b321
b321
b123
a321
a123
a122
 123b
abc
ab
a


t10: alpha, skip first character
aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t11:/+1,/^t12/-1sort/../       E[?25lE[1;59rE[1;1HE[17ME[1;60rE[45;1Ha122
a123
b123
 123b
c123d
a321
b321
b321
b321b
c321d
b322b
ab
abc
t11: alpha, skip first 2 characters
abE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t12:/+1,/^t13/-1sort/../uE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Ha


a321
b321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
abE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t13:/+1,/^t14/-1sort/./nE[?25lE[1;59rE[1;1HE[15ME[1;60rE[45;1Ha

a321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t13: numeric, skip first character
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t14:/+1,/^t15/-1sort/./rE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a122
a123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t14: alpha, sort on first characterE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t15:/+1,/^t16/-1sort/../rE[?25lE[1;59rE[1;1HE[17ME[1;60rE[44;2H123b
abc
ab
a
a321
a123
a122
b321
b123
b322b
b321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t16:/+1,/^t17/-1sort/./rnE[?25lE[1;59rE[1;1HE[17ME[1;60rE[45;2H123b
a123
a122
a321
abc
ab
b123
b321
b322b
b321
b321b
c123d
c321d
t16: numeric, sort on first character
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t17:/+1,/^t18/-1sort/\d/E[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a
a321
a123
a122
b321
b123
c123d
 123b
c321d
b322b
b321
b321b


t17: alpha, skip past first digit
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t18:/+1,/^t19/-1sort/\d/rE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
t18: alpha, sort on first digit
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t19:/+1,/^t20/-1sort/\d/nE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a123
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t19: numeric, skip past first digit
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t20:/+1,/^t21/-1sort/\d/rnE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a321
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t20: numeric, sort on first digit
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t21:/+1,/^t22/-1sort/\d\d/E[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a123
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t22:/+1,/^t23/-1sort/\d\d/nE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a321
b321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t23:/+1,/^t24/-1sort/\d\d/xE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a321
b321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t24:/+1,/^t25/-1sort/\d\d/rE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a321
b321
b321
a122
a123
b123
b321b
c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t25:/+1,/^t26/-1sort/\d\d/rnE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a123
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t26:/+1,/^t27/-1sort/\d\d/rxE[?25lE[1;59rE[1;1HE[17ME[1;60rE[43;1Hab
a


a123
a122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^t27:/+1,/^t28/-1sort noE[?25lE[1mE[37mE[41mE474: Invalid argumentE[mE[60;23HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^t01:/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 459 lines, 2739 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test58.in" 639 lines, 10884 charactersE[1;1HTests 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
iasdE[34m^[E[mz=:"
:"
:" 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'E[38;7Hbreak
    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')E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for spell checking.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 109 lines, 2556 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H:$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àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÂE[41;1HÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeE[43;1Heeeeceeeeeeeedneeeeeeeeeeep?

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 sE[30;1HE[?12lE[?25h
E[?25lE[60;1H:so! XdotestE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Don't want to depend on the locale from the environmentE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=latin1E[?25lE[27mE[mE[HE[2JE[1;1H:$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àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÂE[41;1HÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeE[43;1Heeeeceeeeeeeedneeeeeeeeeeep?

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 sE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25he!E[?25l"test58.in" 639 lines, 10884 charactersE[1;1HTests for spell checking.     vim: set ft=vim :E[2;1HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;3Ho small.vimE[4;14HE[KE[5;1H:"E[5;3HE[KE[6;1H:" Don't want to depend on the locale from the environment
:set enc=latin1
:e!E[8;4HE[KE[9;2H"E[9;3HE[KE[10;2H" Check using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell
iasdE[34m^[E[mz=:"E[12;11HE[KE[13;2H"E[13;3HE[KE[14;4HFunction to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=E[16;17HE[KE[17;1H  $put =''E[17;11HE[KE[18;1H  $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
  spelldumpE[26;12HE[KE[27;1H  %yankE[27;8HE[KE[28;1H  quit
  $puE[29;7HE[KE[30;1H  $put ='-------'
  " find all bad words and suggestions for them
  exe '1;/^' . a:aff . 'good:'
  normal 0f:]s
  let prevbad = ''E[34;19HE[KE[35;3Hwhile 1
    let [bad, a] = spellbadword()E[36;34HE[KE[37;1H    if bad == '' || bad == prevbad || bad == 'badend'
      breakE[38;12HE[KE[39;5Hendif
    let prevbad = badE[40;22HE[KE[41;1H    let lst = spellsuggest(bad, 3)
    normal mmE[42;14HE[KE[43;1H    $put =badE[43;14HE[KE[44;5H$put =string(lst)
    normal `m]s
  endwhile
endfunc
:"E[48;3HE[KE[49;1H:call TestOne('1', '1')
:$put =soundfold('goobledygoook')
:$put =soundfold('kóopërÿnôven')
:$put =soundfold('oeverloos gezwets edale')
:"
:"E[54;3HE[KE[55;1H:" 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')E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check using z= in new buffer (crash fixed by patch 7.4a.028).E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset maxmem=512 spellE[?25lWarning: Cannot find word list "en.latin1.spl" or "en.ascii.spl"E[1;1HE[?12lE[?25hE[?25lasdTests for spell checking.     vim: set ft=vim :asE[?12lE[?25hE[?25lE[60;1HE[1mE[37mE[41mE756: Spell checking is not enabledE[mE[60;36HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Function to test .aff/.dic with list of good and bad words.E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunc TestOne(aff, dic)E[?25l
:  E[?12lE[?25h  set spellfile=
E[?25l:  E[?12lE[?25h  $put =''
E[?25l:  E[?12lE[?25h  $put ='test '. a:aff . '-' . a:dic
E[?25l:  E[?12lE[?25h  " Generate a .spl file from a .dic and .aff file.
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
E[?25l:  E[?12lE[?25h  mkspell! Xtest Xtest
E[?25l:  E[?12lE[?25h  " use that spell file
E[?25l:  E[?12lE[?25h  set spl=Xtest.latin1.spl spell
E[?25l:  E[?12lE[?25h  " list all valid words
E[?25l:  E[?12lE[?25h  spelldump
E[?25l:  E[?12lE[?25h  %yank
E[?25l:  E[?12lE[?25h  quit
E[?25l:  E[?12lE[?25h  $put
E[?25l:  E[?12lE[?25h  $put ='-------'
E[?25l:  E[?12lE[?25h  " find all bad words and suggestions for them
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:aff . 'good:'
E[?25l:  E[?12lE[?25h  normal 0f:]s
E[?25l:  E[?12lE[?25h  let prevbad = ''
E[?25l:  E[?12lE[?25h  while 1
E[?25l:    E[?12lE[?25h    let [bad, a] = spellbadword()
E[?25l:    E[?12lE[?25h    if bad == '' || bad == prevbad || bad == 'badend'
E[?25l:      E[?12lE[?25h      break
E[?25l:      E[?12lE[?25h    endif
E[?25l:    E[?12lE[?25h    let prevbad = bad
E[?25l:    E[?12lE[?25h    let lst = spellsuggest(bad, 3)
E[?25l:    E[?12lE[?25h    normal mm
E[?25l:    E[?12lE[?25h    $put =bad
E[?25l:    E[?12lE[?25h    $put =string(lst)
E[?25l:    E[?12lE[?25h    normal `m]s
E[?25l:    E[?12lE[?25h  endwhile
E[?25l:  E[?12lE[?25hendfuncE[1;1HE[32LE[?25lE[1;1HasdTests 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
iasdE[34m^[E[mz=:"
:"
:" 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:'E[60;1HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('1', '1')E[?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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h$put =soundfold('goobledygoook')E[?25lE[1;1HE[20LE[2;1H8E[41maffstart
SETE[m E[41mISO8859-1

NOSPLITSUGSE[m
8E[41maffendE[m

8E[41mdicstartE[m
1234
E[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:E[21;3HE[KE[22;1HE[44mtestE[m 1-1E[22;9HE[KE[23;1H# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
CommentE[24;8HE[KE[25;1HdeolE[25;5HE[KE[26;1HdéôrE[26;5HE[KE[27;1HinputE[27;6HE[KE[28;1HOKE[28;3HE[KE[29;1Hout
outputsE[30;8HE[KE[31;1HouttestE[31;8HE[KE[32;1HputE[32;4HE[KE[33;1HputsE[33;5HE[KE[34;1HtestE[34;5HE[KE[35;1HtestenE[35;7HE[KE[36;1HtestnE[36;6HE[KE[37;1Hthe endE[37;8HE[KE[38;1HukE[38;7HE[KE[39;1HwrongE[39;6HE[KE[40;1H-------E[40;9HE[KE[41;1HE[41mbadE[mE[41;5HE[KE[42;1H['put', 'uk', 'OK']
E[41minputsE[mE[43;7HE[KE[44;1H['input', 'puts', 'outputs']
E[41mcommentE[mE[45;8HE[KE[46;1H['Comment', 'outtest', 'the end']
E[41mokE[mE[47;3HE[KE[48;1H['OK', 'uk', 'put']
E[41mOkE[mE[49;3HE[KE[50;1H['OK', 'Uk', 'Put']E[50;20HE[KE[51;1HtestE[51;5HE[KE[52;1H['Test', 'testn', 'testen']E[52;29HE[KE[53;1HE[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[mE[55;4HE[KE[56;1H['put', 'uk', 'test']E[56;22HE[KE[57;1HE[41mtheE[mE[57;4HE[KE[58;1H['put', 'uk', 'test']E[58;22HE[KE[59;1HE[41mgebletegekE[mE[59;11HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('kóopërÿnôven')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41mkeperenevenE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('oeverloos gezwets edale')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41meverlesE[m E[41mgesvetsE[m E[41meteleE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" and now with SAL instead of SOFO items; test automatic reloadingE[?25lE[59;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41masdTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m.     E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:"
:" E[41mDon'tE[m E[41mwantE[m E[41mtoE[m E[41mdependE[m E[41monE[m E[41mtheE[m E[41mlocaleE[m E[41mfromE[m E[41mtheE[m E[41menvironmentE[m
:E[41msetE[m E[41mencE[m=E[41mlatin1E[m
:E[41meE[m!
:"
:" E[41mCheckE[m E[41musingE[m E[41mzE[m= E[41minE[m E[41mnewE[m E[41mbufferE[m (E[41mcrashE[m E[41mfixedE[m E[41mbyE[m E[41mpatchE[m 7.4E[41maE[m.028).
:E[41msetE[m E[41mmaxmemE[m=512 E[41mspell
iasdE[mE[34m^[E[mE[41mzE[m=:"
:"
:" E[41mFunctionE[m E[41mtoE[m test .E[41maffE[m/.E[41mdicE[m E[41mwithE[m E[41mlistE[m E[41mofE[m E[41mgoodE[m E[41mandE[m E[41mbadE[m E[41mwordsE[m.
:E[41mfuncE[m E[41mTestOneE[m(E[41maffE[m, E[41mdicE[m)
  E[41msetE[m E[41mspellfileE[m=
  $put =''
  $put ='test '. E[41maE[m:E[41maffE[m . '-' . E[41maE[m:E[41mdicE[m
  " E[41mGenerateE[m E[41maE[m .E[41msplE[m E[41mfileE[m E[41mfromE[m E[41maE[m .E[41mdicE[m E[41mandE[m .E[41maffE[m E[41mfileE[m.
  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41maffstartE[m/+1,/^' . E[41maE[m:E[41maffE[m . 'E[41maffendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m'
  E[41mexeE[m '1;/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicstartE[m/+1,/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41mdicE[m'
  E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
  " E[41museE[m E[41mthatE[m E[41mspellE[m E[41mfile
E[m  E[41msetE[m E[41msplE[m=E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m E[41mspellE[m
  " E[41mlistE[m E[41mallE[m E[41mvalidE[m E[41mwords
E[m  E[41mspelldumpE[m
  %E[41myank
E[m  E[41mquitE[m
  $put
  $put ='-------'
  " E[41mfindE[m E[41mallE[m E[41mbadE[m E[41mwordsE[m E[41mandE[m E[41msuggestionsE[m E[41mforE[m E[41mthem
E[m  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41mgoodE[m:'
  E[41mnormalE[m 0E[41mfE[m:]E[41ms
E[m  E[41mletE[m E[41mprevbadE[m = ''
  E[41mwhileE[m 1
    E[41mletE[m [E[41mbadE[m, E[41maE[m] = E[41mspellbadwordE[m()
    E[41mifE[m E[41mbadE[m == '' || E[41mbadE[m == E[41mprevbadE[m || E[41mbadE[m == 'E[41mbadendE[m'E[38;7HE[41mbreak
E[m    E[41mendif
E[m    E[41mletE[m E[41mprevbadE[m = E[41mbad
E[m    E[41mletE[m E[41mlstE[m = E[41mspellsuggestE[m(E[41mbadE[m, 3)
    E[41mnormalE[m E[41mmmE[m
    $put =E[41mbadE[m
    $put =E[41mstringE[m(E[41mlstE[m)
    E[41mnormalE[m `E[41mmE[m]E[41ms
E[m  E[41mendwhile
endfuncE[m
:"
:E[41mcallE[m E[41mTestOneE[m('1', '1')
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkóopërÿnôvenE[m')
:$put =E[41msoundfoldE[m('E[41moeverloosE[m E[41mgezwetsE[m E[41medaleE[m')
:"
:"
:" E[41mandE[m E[41mnowE[m E[41mwithE[m E[41mSALE[m E[41minsteadE[m E[41mofE[m E[41mSOFOE[m E[41mitemsE[m; test E[41mautomaticE[m E[41mreloading
ggE[m:/^E[41maffstartE[m_E[41msalE[m/+1,/^E[41maffendE[m_E[41msalE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m
:E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkóopërÿnôvenE[m')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.affE[?25l"Xtest.aff" E[60;13HE[KE[60;13H151 lines, 3412 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmkspell! Xtest XtestE[?25lReading affix file Xtest.aff ...
Reading dictionary file Xtest.dic ...
line      2, word      0 - testCompressing word tree...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h$put =soundfold('goobledygoook')E[?25lE[1;1HE[14LE[2;1HE[41mNOSPLITSUGSE[m
8E[41maffendE[m

8E[41mdicstartE[m
1234
E[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[mE[15;1HE[KE[16;3HE[KE[17;1HE[44mtestE[m output:E[18;3HE[KE[19;1HE[44mtestE[m 1-1E[19;9HE[KE[20;1H# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[mE[20;25HE[KE[21;1HCommentE[21;8HE[KE[22;1HdeolE[22;5HE[KE[23;1HdéôrE[23;5HE[KE[24;1HinputE[24;7HE[KE[25;1HOKE[25;3HE[KE[26;1HoutputE[26;7HE[KE[27;1Houtputs
outtest
putE[29;4HE[KE[30;1HputsE[30;5HE[KE[31;1HtestE[31;5HE[KE[32;1HtestenE[32;7HE[KE[33;1HtestnE[33;6HE[KE[34;1Hthe endE[34;8HE[KE[35;1HukE[35;3HE[KE[36;1HwrongE[36;6HE[KE[37;1H-------E[37;8HE[KE[38;1HE[41mbadE[mE[38;7HE[KE[39;1H['put', 'uk', 'OK']
E[41minputsE[mE[40;7HE[KE[41;1H['input', 'puts', 'outputs']E[41;29HE[KE[42;1HE[41mcommentE[mE[42;8HE[KE[43;1H['Comment', 'outtest', 'the end']
E[41mokE[mE[44;5HE[KE[45;1H['OK', 'uk', 'put']
E[41mOkE[mE[46;3HE[KE[47;1H['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[mE[50;5HE[KE[51;1H['deol', 'déôr', 'test']E[51;25HE[KE[52;1HE[41mendE[mE[52;4HE[KE[53;1H['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']E[55;22HE[KE[56;2HE[41mebletegekE[mE[56;11HE[KE[57;1HE[41mkeperenevenE[mE[57;12HE[KE[58;1HE[41meverlesE[m E[41mgesvetsE[m E[41meteleE[mE[58;22HE[KE[59;1HE[41mkbltykkE[mE[59;8HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('kóopërÿnôven')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41mkprnfnE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('oeverloos gezwets edale')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H*E[41mflsE[m E[41mkswtsE[m E[41mtlE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" also use an addition fileE[?25lE[59;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41masdTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m.     E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:"
:" E[41mDon'tE[m E[41mwantE[m E[41mtoE[m E[41mdependE[m E[41monE[m E[41mtheE[m E[41mlocaleE[m E[41mfromE[m E[41mtheE[m E[41menvironmentE[m
:E[41msetE[m E[41mencE[m=E[41mlatin1E[m
:E[41meE[m!
:"
:" E[41mCheckE[m E[41musingE[m E[41mzE[m= E[41minE[m E[41mnewE[m E[41mbufferE[m (E[41mcrashE[m E[41mfixedE[m E[41mbyE[m E[41mpatchE[m 7.4E[41maE[m.028).
:E[41msetE[m E[41mmaxmemE[m=512 E[41mspell
iasdE[mE[34m^[E[mE[41mzE[m=:"
:"
:" E[41mFunctionE[m E[41mtoE[m test .E[41maffE[m/.E[41mdicE[m E[41mwithE[m E[41mlistE[m E[41mofE[m E[41mgoodE[m E[41mandE[m E[41mbadE[m E[41mwordsE[m.
:E[41mfuncE[m E[41mTestOneE[m(E[41maffE[m, E[41mdicE[m)
  E[41msetE[m E[41mspellfileE[m=
  $put =''
  $put ='test '. E[41maE[m:E[41maffE[m . '-' . E[41maE[m:E[41mdicE[m
  " E[41mGenerateE[m E[41maE[m .E[41msplE[m E[41mfileE[m E[41mfromE[m E[41maE[m .E[41mdicE[m E[41mandE[m .E[41maffE[m E[41mfileE[m.
  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41maffstartE[m/+1,/^' . E[41maE[m:E[41maffE[m . 'E[41maffendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m'
  E[41mexeE[m '1;/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicstartE[m/+1,/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41mdicE[m'
  E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
  " E[41museE[m E[41mthatE[m E[41mspellE[m E[41mfile
E[m  E[41msetE[m E[41msplE[m=E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m E[41mspellE[m
  " E[41mlistE[m E[41mallE[m E[41mvalidE[m E[41mwords
E[m  E[41mspelldumpE[m
  %E[41myank
E[m  E[41mquitE[m
  $put
  $put ='-------'
  " E[41mfindE[m E[41mallE[m E[41mbadE[m E[41mwordsE[m E[41mandE[m E[41msuggestionsE[m E[41mforE[m E[41mthem
E[m  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41mgoodE[m:'
  E[41mnormalE[m 0E[41mfE[m:]E[41ms
E[m  E[41mletE[m E[41mprevbadE[m = ''
  E[41mwhileE[m 1
    E[41mletE[m [E[41mbadE[m, E[41maE[m] = E[41mspellbadwordE[m()
    E[41mifE[m E[41mbadE[m == '' || E[41mbadE[m == E[41mprevbadE[m || E[41mbadE[m == 'E[41mbadendE[m'E[38;7HE[41mbreak
E[m    E[41mendif
E[m    E[41mletE[m E[41mprevbadE[m = E[41mbad
E[m    E[41mletE[m E[41mlstE[m = E[41mspellsuggestE[m(E[41mbadE[m, 3)
    E[41mnormalE[m E[41mmmE[m
    $put =E[41mbadE[m
    $put =E[41mstringE[m(E[41mlstE[m)
    E[41mnormalE[m `E[41mmE[m]E[41ms
E[m  E[41mendwhile
endfuncE[m
:"
:E[41mcallE[m E[41mTestOneE[m('1', '1')
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkóopërÿnôvenE[m')
:$put =E[41msoundfoldE[m('E[41moeverloosE[m E[41mgezwetsE[m E[41medaleE[m')
:"
:"
:" E[41mandE[m E[41mnowE[m E[41mwithE[m E[41mSALE[m E[41minsteadE[m E[41mofE[m E[41mSOFOE[m E[41mitemsE[m; test E[41mautomaticE[m E[41mreloading
ggE[m:/^E[41maffstartE[m_E[41msalE[m/+1,/^E[41maffendE[m_E[41msalE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m
:E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkóopërÿnôvenE[m')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^addstart/+1,/^addend/-1w! Xtest.latin1.addE[?25l"Xtest.latin1.add" E[60;20HE[KE[60;20H[New File] 3 lines, 38 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmkspell! Xtest.latin1.add.spl Xtest.latin1.addE[?25lReading word file Xtest.latin1.add ...E[60;39HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset spellfile=Xtest.latin1.addE[?25lE[1;1HE[6LE[1;1HE[41masdTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m.     E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:"
:" E[41mDon'tE[m E[41mwantE[m E[41mtoE[m E[41mdependE[m E[41monE[m E[41mtheE[m E[41mlocaleE[m E[41mfromE[m E[41mtheE[m E[41menvironmentE[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^test2:E[?25lE[27mE[mE[HE[2JE[1;1HE[41mSFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
elequint/2
elekwint/3
E[41maddend

test2E[m:
elequint test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[30;1HE[?12lE[?25hE[31;29HE[?25lE[60;1HE[m:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[2;1H8E[41mdicstartE[m
1234
E[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_us.latin1.splE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HE[41mSFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
E[46melequintE[m/2
E[46melekwintE[m/3
E[41maddend

test2E[m:
E[46melequintE[m test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[m
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H8E[41mdicstartE[m
1234
E[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[2;1HE[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
E[46melequintE[m/2
E[46melekwintE[m/3
E[41maddend

test2E[m:
E[46melequintE[m test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[30;1HE[?12lE[?25hE[14CE[?25lE[60;1HE[m:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H1234
E[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequint
elekwintE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_gb.latin1.splE[?25lE[58;1Helequint
E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HE[41mSFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
elequint/2
E[46melekwintE[m/3
E[41maddend

test2E[m:
elequint test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[m
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[31;15HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mfoo
bar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
elequint
E[46melekwint
elekwintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[2;1HE[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
elequint/2
E[46melekwintE[m/3
E[41maddend

test2E[m:
elequint test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[30;15HE[?12lE[?25hE[14CE[?25lE[60;1HE[m:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mbar
faabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
elequint
E[46melekwint
elekwintE[m
E[41melekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_nz.latin1.splE[?25lE[56;1HE[46melequintE[m
elekwint
elekwint
E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HE[41mSFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
E[46melequintE[m/2
elekwint/3
E[41maddend

test2E[m:
E[46melequintE[m test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[m
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mfaabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[m
elekwint
elekwint
E[41melekwentE[m
E[46melequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[2;1HE[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnzE[m
E[46melequintE[m/2
elekwint/3
E[41maddend

test2E[m:
E[46melequintE[m test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[30;1HE[?12lE[?25hE[28CE[?25lE[60;1HE[m:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[m
elekwint
elekwint
E[41melekwentE[m
E[46melequintE[m
E[41melekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_ca.latin1.splE[?25lE[54;1HE[41melequint
elekwint
elekwint

elequint
E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HE[41mSFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnz
elequintE[m/2
E[41melekwintE[m/3
E[41maddend

test2E[m:
E[41melequintE[m test E[41melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[m
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[2;1H8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[2;1HE[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.

E[41mMAPE[m 9
E[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñ
MAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[m
2E[41maffendE[m

2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badend

addstartE[m
/E[41mregionsE[m=E[41musgbnz
elequintE[m/2
E[41melekwintE[m/3
E[41maddend

test2E[m:
E[41melequintE[m test E[41melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.

3E[41maffstart
SETE[m E[41mISO8859-1

COMPOUNDMINE[m 3
E[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[m

3E[41mdicstartE[m
1234
E[41mfooE[m/E[41mm
barE[m/E[41mmx
mïE[m/E[41mm
laE[m/E[41mmxE[m
3E[41mdicendE[m

3E[41mgoodE[m: E[41mfooE[m E[41mmïE[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomïE[m E[41mbarmïE[m E[41mmïfooE[m E[41mmïbarE[m E[41mmïmïE[m E[41mlalaE[m E[41mmïlaE[m E[41mlamïE[m E[41mfoolaE[m E[41mlabar
badend


TestsE[m E[41mforE[m E[41mcompoundingE[m.

4E[41maffstart
SETE[m E[41mISO8859-1E[30;1HE[?12lE[?25hE[14CE[?25lE[60;1HE[m:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H8E[41mgoodE[m: E[41mfooE[m E[41mbarE[m E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badendE[m


E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41msplE[m
Comment
deol
déôr
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdéôlE[m
['deol', 'déôr', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwintE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hunlet str aE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Postponed prefixesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('2', '1')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H44 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[12LE[1;1HE[41mPFXE[m E[41mOE[m 0 E[41moutE[m [E[41ma-zE[m]

E[41mSFXE[m E[41mSE[m E[41mYE[m 2
E[41mSFXE[m E[41mSE[m 0 E[41msE[m [^E[41msE[m]
E[41mSFXE[m E[41mSE[m 0 E[41mesE[m E[41ms

SFXE[m E[41mNE[m E[41mNE[m 3
E[41mSFXE[m E[41mNE[m 0 E[41menE[m [^E[41mnE[m]
E[41mSFXE[m E[41mNE[m 0 E[41mnenE[m E[41mn
SFXE[m E[41mNE[m 0 E[41mnE[m .

E[41mREPE[m 3
E[41mREPE[m E[41mgE[m E[41mch
REPE[m E[41mchE[m E[41mg
REPE[m E[41msvpE[m E[41msE[m.E[41mvE[m.E[41mpE[m.E[16;1HE[KE[17;1HE[41mMAPE[m 9E[17;6HE[KE[18;1HE[41mMAPE[m E[41maàáâãäå
MAPE[m E[41meèéêë
MAPE[m E[41miìíîï
MAPE[m E[41moòóôõö
MAPE[m E[41muùúûü
MAPE[m E[41mnñE[mE[23;7HE[KE[24;1HE[41mMAPE[m E[41mcç
MAPE[m E[41myÿý
MAPE[m E[41msßE[mE[26;7HE[KE[27;1H2E[1CE[41mffendE[mE[28;1HE[KE[29;1H2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdéôl
badendE[mE[31;7HE[KE[32;1HE[KE[33;1HE[41maddstartE[m
/E[41mregionsE[m=E[41musgbnzE[mE[34;16HE[KE[35;1HE[41melequintE[m/2
E[41melekwintE[m/3E[36;11HE[KE[37;1HE[41maddendE[mE[38;1HE[KE[39;1HE[41mtest2E[m:
E[41melequintE[m test E[41melekwintE[m test E[41melekwentE[m E[41masdfE[mE[41;1HE[KE[42;1HTest E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.E[43;1HE[KE[44;1H3E[41maffstartE[mE[44;10HE[KE[45;1HE[41mSETE[m E[41mISO8859-1E[mE[46;1HE[KE[47;1HE[41mCOMPOUNDMINE[m 3E[47;14HE[KE[48;1HE[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[m
3E[41maffendE[mE[50;8HE[KE[51;1HE[KE[52;1H3E[41mdicstartE[m
1234E[53;5HE[KE[54;1HE[41mfooE[m/E[41mmE[mE[54;6HE[KE[55;1HE[41mbarE[m/E[41mmxE[mE[55;7HE[KE[56;1HE[41mmïE[m/E[41mmE[mE[56;5HE[KE[57;1HE[41mlaE[m/E[41mmxE[mE[57;6HE[KE[58;1H3E[41mdicendE[mE[58;8HE[KE[59;1HE[KE[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" Compound wordsE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('3', '3')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H5 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('4', '4')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H45 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('5', '5')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H25 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('6', '6')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H23 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('7', '7')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H22 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[27mE[mE[HE[2JE[2;1HE[41mNEEDCOMPOUNDE[m 1
E[41mCOMPOUNDPERMITFLAGE[m 432

E[41mSFXE[m 61003 E[41mYE[m 1
E[41mSFXE[m 61003 0 E[41mmeatE[m .

E[41mSFXE[m 391 E[41mYE[m 1
E[41mSFXE[m 391 0 E[41ma1E[m .

E[41mSFXE[m 111 E[41mYE[m 1
E[41mSFXE[m 111 0 E[41maéE[m .

E[41mPFXE[m 17 E[41mYE[m 1
E[41mPFXE[m 17 0 E[41mpreE[m/432 .
7E[41maffendE[m

7E[41mdicstartE[m
1234
E[41mmeeE[m/391,111,9999
bar/17,61003,123
lead/2
tail/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarE[28;7Hlead tail leadtail  leadmiddletail
E[41mbadE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[30;9Hleadprobar
badend

TestE[m E[41mNOSLITSUGSE[m

8E[41maffstart
SETE[m E[41mISO8859E[m-1

E[41mNOSPLITSUGSE[m
8E[41maffendE[m

8E[41mdicstartE[m
1234
E[41mfooE[m
bar
E[41mfaabarE[m
8E[41mdicendE[m

8E[41mgoodE[m: E[41mfooE[m bar E[41mfaabar
badE[m: E[41mfoobarE[m E[41mbarfoo
badend


testE[m E[41moutputE[m:

E[41mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41mspl
Comment
deol
déôrE[31;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h" NOSLITSUGSE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('8', '8')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H3 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[11LE[1;1HE[41mmeeE[m/391,111,9999
bar/17,61003,123
E[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaéE[m bar E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[9;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[11;9Hleadprobar
badendE[mE[12;7HE[KE[14;1HE[41mTestE[m E[41mNOSLITSUGSE[mE[15;1HE[KE[16;1H8E[3CE[41mstart
SETE[m E[41mISO8859E[m-1E[18;1HE[KE[19;1HE[41mNOSPLITSUGSE[m
8E[41maffendE[mE[20;8HE[KE[21;1HE[KE[22;1H8E[41mdicstartE[m
1234E[23;5HE[KE[24;1HfooE[24;4HE[KE[25;1HbarE[25;4HE[KE[26;1Hfaabar
8E[41mdicendE[mE[27;8HE[KE[28;7HE[KE[29;1H8E[41mgoodE[m: foo bar faabarE[29;23HE[KE[30;1HE[41mbadE[m: E[41mfoobarE[m E[41mbarfooE[mE[33;1HE[KE[34;1HE[41mtestE[m E[41moutputE[m:E[35;1HE[KE[36;1HE[41mtestE[m 1-1E[36;9HE[KE[37;1H# E[41mfileE[m: E[41mXtestE[m.E[41mlatin1E[m.E[41mspl
CommentE[mE[38;8HE[KE[39;1HE[41mdeolE[mE[39;5HE[KE[40;1HE[41mdéôr
inputE[mE[41;6HE[KE[42;1HE[41mOKE[mE[42;3HE[KE[43;1HE[41moutput
outputs
outtest
putE[mE[46;4HE[KE[47;1HE[41mputs
testE[mE[48;5HE[KE[49;1HE[41mtestenE[mE[49;7HE[KE[50;1HE[41mtestE[mE[50;6HE[KE[51;1HE[41mtheE[m E[41mend
uk
wrongE[mE[53;6HE[KE[54;1H-------
E[41mbadE[mE[55;4HE[KE[56;1H['E[41mputE[m', 'E[41mukE[m', 'E[41mOKE[m']E[56;20HE[KE[57;1HE[41minputsE[mE[57;7HE[KE[58;1H['E[41minputE[m', 'E[41mputsE[m', 'E[41moutputsE[m']
E[41mcommentE[mE[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" clean up for valgrindE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc TestOneE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset spl= enc=latin1E[?25lE[27mE[mE[HE[2JE[1;1Hmee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaé bar prebar barmeat prebarmeat  leadprebarE[9;7Hlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadE[11;9Hleadprobar
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']
commentE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[31;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HasdTests 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
iasdE[34m^[E[mz=:"
:"
:" 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'E[38;7Hbreak
    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')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^test output:/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 283 lines, 3793 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test59.in" 626 lines, 10897 charactersE[1;1HTests 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'E[38;7Hbreak
    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')E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 106 lines, 2520 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H: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àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÂE[41;1HÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeE[43;1Heeeeceeeeeeeedneeeeeeeeeeep?

MIDWORD '-

KEP =
RAR ?
BAD !

#NOSPLITSUGS

PFX I N 1
PFX I 0 in .

PFX O Y 1
PFX O 0 out .

SFX S Y 2E[30;1HE[?12lE[?25h
E[?25lE[60;1H:so! XdotestE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Don't want to depend on the locale from the environment.  The .aff and .dicE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" text is in latin1, the test text is utf-8.E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=latin1E[?25lE[27mE[mE[HE[2JE[1;1H: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àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿÀÁÂÂE[41;1HÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkeseeeeeeeceeeeeeeedneeeeeeeeeeepseeeeeE[43;1Heeeeceeeeeeeedneeeeeeeeeeep?

MIDWORD '-

KEP =
RAR ?
BAD !

#NOSPLITSUGS

PFX I N 1
PFX I 0 in .

PFX O Y 1
PFX O 0 out .

SFX S Y 2E[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25he!E[?25l"test59.in" 626 lines, 10897 charactersE[1;1HTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :E[2;1HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;2Hso small.vim
:so mbyte.vimE[5;14HE[KE[6;2H"E[6;3HE[KE[7;2H" 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=latin1E[9;16HE[KE[10;2He!E[10;4HE[KE[11;1H:set enc=utf-8E[11;16HE[KE[12;2Hset fenc=
:"E[13;3HE[KE[14;4HFunction to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=E[16;17HE[KE[17;1H  $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 XtestE[22;23HE[KE[23;1H  " use that spell file
  set spl=Xtest.utf-8.spl spell
  " list all valid words
  spelldumpE[26;12HE[KE[27;1H  %yankE[27;8HE[KE[28;1H  quit
  $puE[29;7HE[KE[30;1H  $put ='-------'
  " find all bad words and suggestions for them
  exe '1;/^' . a:aff . 'good:'
  normal 0f:]s
  let prevbad = ''E[34;19HE[KE[35;3Hwhile 1
    let [bad, a] = spellbadword()E[36;34HE[KE[37;1H    if bad == '' || bad == prevbad || bad == 'badend'
      breakE[38;12HE[KE[39;5Hendif
    let prevbad = badE[40;22HE[KE[41;1H    let lst = spellsuggest(bad, 3)
    normal mmE[42;14HE[KE[43;1H    $put =badE[43;14HE[KE[44;5H$put =string(lst)
    normal `m]s
  endwhile
endfunc
:"E[48;3HE[KE[49;1H:call TestOne('1', '1')
:$put =soundfold('goobledygoook')
:$put =soundfold('kÃ³opÃ«rÃ¿nÃ´ven')
:$put =soundfold('oeverloos gezwets edale')
:"E[53;3HE[KE[54;1H:"E[54;3HE[KE[55;1H:" 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')E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=utf-8E[?25lE[27mE[mE[HE[2JE[1;1HTests 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'E[38;7Hbreak
    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')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fenc=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Function to test .aff/.dic with list of good and bad words.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunc TestOne(aff, dic)E[?25l
:  E[?12lE[?25h  set spellfile=
E[?25l:  E[?12lE[?25h  $put =''
E[?25l:  E[?12lE[?25h  $put ='test '. a:aff . '-' . a:dic
E[?25l:  E[?12lE[?25h  " Generate a .spl file from a .dic and .aff file.
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
E[?25l:  E[?12lE[?25h  mkspell! Xtest Xtest
E[?25l:  E[?12lE[?25h  " use that spell file
E[?25l:  E[?12lE[?25h  set spl=Xtest.utf-8.spl spell
E[?25l:  E[?12lE[?25h  " list all valid words
E[?25l:  E[?12lE[?25h  spelldump
E[?25l:  E[?12lE[?25h  %yank
E[?25l:  E[?12lE[?25h  quit
E[?25l:  E[?12lE[?25h  $put
E[?25l:  E[?12lE[?25h  $put ='-------'
E[?25l:  E[?12lE[?25h  " find all bad words and suggestions for them
E[?25l:  E[?12lE[?25h  exe '1;/^' . a:aff . 'good:'
E[?25l:  E[?12lE[?25h  normal 0f:]s
E[?25l:  E[?12lE[?25h  let prevbad = ''
E[?25l:  E[?12lE[?25h  while 1
E[?25l:    E[?12lE[?25h    let [bad, a] = spellbadword()
E[?25l:    E[?12lE[?25h    if bad == '' || bad == prevbad || bad == 'badend'
E[?25l:      E[?12lE[?25h      break
E[?25l:      E[?12lE[?25h    endif
E[?25l:    E[?12lE[?25h    let prevbad = bad
E[?25l:    E[?12lE[?25h    let lst = spellsuggest(bad, 3)
E[?25l:    E[?12lE[?25h    normal mm
E[?25l:    E[?12lE[?25h    $put =bad
E[?25l:    E[?12lE[?25h    $put =string(lst)
E[?25l:    E[?12lE[?25h    normal `m]s
E[?25l:    E[?12lE[?25h  endwhile
E[?25l:  E[?12lE[?25hendfuncE[1;1HE[32LE[?25lE[1;1HTests 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:'E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('1', '1')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H[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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h$put =soundfold('goobledygoook')E[?25lE[1;1HE[19LE[1;1HE[41mPFXE[m 17 E[41mYE[m 1
E[41mPFXE[m 17 0 E[41mpreE[m/432 .
7E[41maffendE[m

7E[41mdicstartE[m
1234
E[41mmeeE[m/391,111,9999
E[41mbarE[m/17,61003,123
E[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[15;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[17;9Hleadprobar
badendE[m

E[44mtestE[m output:E[20;14HE[KE[21;3HE[KE[22;1HE[44mtestE[m 1-1E[22;9HE[KE[23;1H# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
CommentE[24;8HE[KE[25;1HdeolE[25;5HE[KE[26;1HdÃ©Ã´rE[26;5HE[KE[27;1HinputE[27;6HE[KE[28;1HOKE[28;3HE[KE[29;1Hout
outputsE[30;8HE[KE[31;1HouttestE[31;8HE[KE[32;1HputE[32;4HE[KE[33;1HputsE[33;5HE[KE[34;1HtestE[34;5HE[KE[35;1HtestenE[35;7HE[KE[36;1HtestnE[36;6HE[KE[37;1Hthe endE[37;8HE[KE[38;1HukE[38;7HE[KE[39;1HwrongE[39;6HE[KE[40;1H-------E[40;9HE[KE[41;1HE[41mbadE[mE[41;5HE[KE[42;1H['put', 'uk', 'OK']
E[41minputsE[mE[43;7HE[KE[44;1H['input', 'puts', 'outputs']
E[41mcommentE[mE[45;8HE[KE[46;1H['Comment', 'outtest', 'the end']
E[41mokE[mE[47;3HE[KE[48;1H['OK', 'uk', 'put']
E[41mOkE[mE[49;3HE[KE[50;1H['OK', 'Uk', 'Put']E[50;20HE[KE[51;1HtestE[51;5HE[KE[52;1H['Test', 'testn', 'testen']E[52;29HE[KE[53;1HE[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[mE[55;4HE[KE[56;1H['put', 'uk', 'test']E[56;22HE[KE[57;1HE[41mtheE[mE[57;4HE[KE[58;1H['put', 'uk', 'test']E[58;22HE[KE[59;1HE[41mgebletegekE[mE[59;11HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('kÃ³opÃ«rÃ¿nÃ´ven')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41mkeperenevenE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('oeverloos gezwets edale')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41meverlesE[m E[41mgesvetsE[m E[41meteleE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" and now with SAL instead of SOFO items; test automatic reloadingE[?25lE[59;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m E[41mwithE[m 'E[41mencodingE[m' E[41msetE[m E[41mtoE[m "E[41mutf-8E[m".  E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:E[41msoE[m E[41mmbyteE[m.E[41mvimE[m
:"
:" E[41mDon'tE[m E[41mwantE[m E[41mtoE[m E[41mdependE[m E[41monE[m E[41mtheE[m E[41mlocaleE[m E[41mfromE[m E[41mtheE[m E[41menvironmentE[m.  E[41mTheE[m .E[41maffE[m E[41mandE[m .E[41mdicE[m
:" E[41mtextE[m E[41misE[m E[41minE[m E[41mlatin1E[m, E[41mtheE[m test E[41mtextE[m E[41misE[m E[41mutf-8E[m.
:E[41msetE[m E[41mencE[m=E[41mlatin1E[m
:E[41meE[m!
:E[41msetE[m E[41mencE[m=E[41mutf-8E[m
:E[41msetE[m E[41mfencE[m=
:"
:" E[41mFunctionE[m E[41mtoE[m test .E[41maffE[m/.E[41mdicE[m E[41mwithE[m E[41mlistE[m E[41mofE[m E[41mgoodE[m E[41mandE[m E[41mbadE[m E[41mwordsE[m.
:E[41mfuncE[m E[41mTestOneE[m(E[41maffE[m, E[41mdicE[m)
  E[41msetE[m E[41mspellfileE[m=
  $put =''
  $put ='test '. E[41maE[m:E[41maffE[m . '-' . E[41maE[m:E[41mdicE[m
  " E[41mGenerateE[m E[41maE[m .E[41msplE[m E[41mfileE[m E[41mfromE[m E[41maE[m .E[41mdicE[m E[41mandE[m .E[41maffE[m E[41mfileE[m.
  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41maffstartE[m/+1,/^' . E[41maE[m:E[41maffE[m . 'E[41maffendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m'
  E[41mexeE[m '1;/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicstartE[m/+1,/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41mdicE[m'
  E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
  " E[41museE[m E[41mthatE[m E[41mspellE[m E[41mfile
E[m  E[41msetE[m E[41msplE[m=E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m E[41mspellE[m
  " E[41mlistE[m E[41mallE[m E[41mvalidE[m E[41mwords
E[m  E[41mspelldumpE[m
  %E[41myank
E[m  E[41mquitE[m
  $put
  $put ='-------'
  " E[41mfindE[m E[41mallE[m E[41mbadE[m E[41mwordsE[m E[41mandE[m E[41msuggestionsE[m E[41mforE[m E[41mthem
E[m  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41mgoodE[m:'
  E[41mnormalE[m 0E[41mfE[m:]E[41ms
E[m  E[41mletE[m E[41mprevbadE[m = ''
  E[41mwhileE[m 1
    E[41mletE[m [E[41mbadE[m, E[41maE[m] = E[41mspellbadwordE[m()
    E[41mifE[m E[41mbadE[m == '' || E[41mbadE[m == E[41mprevbadE[m || E[41mbadE[m == 'E[41mbadendE[m'E[38;7HE[41mbreak
E[m    E[41mendif
E[m    E[41mletE[m E[41mprevbadE[m = E[41mbad
E[m    E[41mletE[m E[41mlstE[m = E[41mspellsuggestE[m(E[41mbadE[m, 3)
    E[41mnormalE[m E[41mmmE[m
    $put =E[41mbadE[m
    $put =E[41mstringE[m(E[41mlstE[m)
    E[41mnormalE[m `E[41mmE[m]E[41ms
E[m  E[41mendwhile
endfuncE[m
:"
:E[41mcallE[m E[41mTestOneE[m('1', '1')
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkÃ³opÃ«rÃ¿nÃ´venE[m')
:$put =E[41msoundfoldE[m('E[41moeverloosE[m E[41mgezwetsE[m E[41medaleE[m')
:"
:"
:" E[41mandE[m E[41mnowE[m E[41mwithE[m E[41mSALE[m E[41minsteadE[m E[41mofE[m E[41mSOFOE[m E[41mitemsE[m; test E[41mautomaticE[m E[41mreloading
ggE[m:/^E[41maffstartE[m_E[41msalE[m/+1,/^E[41maffendE[m_E[41msalE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m
:E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkÃ³opÃ«rÃ¿nÃ´venE[m')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.affE[?25l"Xtest.aff" E[60;13HE[KE[60;13H153 lines, 3426 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmkspell! Xtest XtestE[?25lReading affix file Xtest.aff ...
Reading dictionary file Xtest.dic ...
line      2, word      0 - testCompressing word tree...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h$put =soundfold('goobledygoook')E[?25lE[1;1HE[14LE[2;1H7E[41mdicstartE[m
1234
E[41mmeeE[m/391,111,9999
E[41mbarE[m/17,61003,123
E[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[12;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[14;9Hleadprobar
badendE[mE[15;7HE[KE[16;3HE[KE[17;1HE[44mtestE[m output:E[18;3HE[KE[19;1HE[44mtestE[m 1-1E[19;9HE[KE[20;1H# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[mE[20;24HE[KE[21;1HCommentE[21;8HE[KE[22;1HdeolE[22;5HE[KE[23;1HdÃ©Ã´rE[23;5HE[KE[24;1HinputE[24;7HE[KE[25;1HOKE[25;3HE[KE[26;1HoutputE[26;7HE[KE[27;1Houtputs
outtest
putE[29;4HE[KE[30;1HputsE[30;5HE[KE[31;1HtestE[31;5HE[KE[32;1HtestenE[32;7HE[KE[33;1HtestnE[33;6HE[KE[34;1Hthe endE[34;8HE[KE[35;1HukE[35;3HE[KE[36;1HwrongE[36;6HE[KE[37;1H-------E[37;8HE[KE[38;1HE[41mbadE[mE[38;7HE[KE[39;1H['put', 'uk', 'OK']
E[41minputsE[mE[40;7HE[KE[41;1H['input', 'puts', 'outputs']E[41;29HE[KE[42;1HE[41mcommentE[mE[42;8HE[KE[43;1H['Comment', 'outtest', 'the end']
E[41mokE[mE[44;5HE[KE[45;1H['OK', 'uk', 'put']
E[41mOkE[mE[46;3HE[KE[47;1H['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[mE[50;5HE[KE[51;1H['deol', 'dÃ©Ã´r', 'test']E[51;25HE[KE[52;1HE[41mendE[mE[52;4HE[KE[53;1H['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']E[55;22HE[KE[56;2HE[41mebletegekE[mE[56;11HE[KE[57;1HE[41mkeperenevenE[mE[57;12HE[KE[58;1HE[41meverlesE[m E[41mgesvetsE[m E[41meteleE[mE[58;22HE[KE[59;1HE[41mkbltykkE[mE[59;8HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('kÃ³opÃ«rÃ¿nÃ´ven')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[41mkprnfnE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =soundfold('oeverloos gezwets edale')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H*E[41mflsE[m E[41mkswtsE[m E[41mtlE[mE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" also use an addition fileE[?25lE[59;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m E[41mwithE[m 'E[41mencodingE[m' E[41msetE[m E[41mtoE[m "E[41mutf-8E[m".  E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:E[41msoE[m E[41mmbyteE[m.E[41mvimE[m
:"
:" E[41mDon'tE[m E[41mwantE[m E[41mtoE[m E[41mdependE[m E[41monE[m E[41mtheE[m E[41mlocaleE[m E[41mfromE[m E[41mtheE[m E[41menvironmentE[m.  E[41mTheE[m .E[41maffE[m E[41mandE[m .E[41mdicE[m
:" E[41mtextE[m E[41misE[m E[41minE[m E[41mlatin1E[m, E[41mtheE[m test E[41mtextE[m E[41misE[m E[41mutf-8E[m.
:E[41msetE[m E[41mencE[m=E[41mlatin1E[m
:E[41meE[m!
:E[41msetE[m E[41mencE[m=E[41mutf-8E[m
:E[41msetE[m E[41mfencE[m=
:"
:" E[41mFunctionE[m E[41mtoE[m test .E[41maffE[m/.E[41mdicE[m E[41mwithE[m E[41mlistE[m E[41mofE[m E[41mgoodE[m E[41mandE[m E[41mbadE[m E[41mwordsE[m.
:E[41mfuncE[m E[41mTestOneE[m(E[41maffE[m, E[41mdicE[m)
  E[41msetE[m E[41mspellfileE[m=
  $put =''
  $put ='test '. E[41maE[m:E[41maffE[m . '-' . E[41maE[m:E[41mdicE[m
  " E[41mGenerateE[m E[41maE[m .E[41msplE[m E[41mfileE[m E[41mfromE[m E[41maE[m .E[41mdicE[m E[41mandE[m .E[41maffE[m E[41mfileE[m.
  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41maffstartE[m/+1,/^' . E[41maE[m:E[41maffE[m . 'E[41maffendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m'
  E[41mexeE[m '1;/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicstartE[m/+1,/^' . E[41maE[m:E[41mdicE[m . 'E[41mdicendE[m/-1E[41mwE[m! E[41mXtestE[m.E[41mdicE[m'
  E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
  " E[41museE[m E[41mthatE[m E[41mspellE[m E[41mfile
E[m  E[41msetE[m E[41msplE[m=E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m E[41mspellE[m
  " E[41mlistE[m E[41mallE[m E[41mvalidE[m E[41mwords
E[m  E[41mspelldumpE[m
  %E[41myank
E[m  E[41mquitE[m
  $put
  $put ='-------'
  " E[41mfindE[m E[41mallE[m E[41mbadE[m E[41mwordsE[m E[41mandE[m E[41msuggestionsE[m E[41mforE[m E[41mthem
E[m  E[41mexeE[m '1;/^' . E[41maE[m:E[41maffE[m . 'E[41mgoodE[m:'
  E[41mnormalE[m 0E[41mfE[m:]E[41ms
E[m  E[41mletE[m E[41mprevbadE[m = ''
  E[41mwhileE[m 1
    E[41mletE[m [E[41mbadE[m, E[41maE[m] = E[41mspellbadwordE[m()
    E[41mifE[m E[41mbadE[m == '' || E[41mbadE[m == E[41mprevbadE[m || E[41mbadE[m == 'E[41mbadendE[m'E[38;7HE[41mbreak
E[m    E[41mendif
E[m    E[41mletE[m E[41mprevbadE[m = E[41mbad
E[m    E[41mletE[m E[41mlstE[m = E[41mspellsuggestE[m(E[41mbadE[m, 3)
    E[41mnormalE[m E[41mmmE[m
    $put =E[41mbadE[m
    $put =E[41mstringE[m(E[41mlstE[m)
    E[41mnormalE[m `E[41mmE[m]E[41ms
E[m  E[41mendwhile
endfuncE[m
:"
:E[41mcallE[m E[41mTestOneE[m('1', '1')
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkÃ³opÃ«rÃ¿nÃ´venE[m')
:$put =E[41msoundfoldE[m('E[41moeverloosE[m E[41mgezwetsE[m E[41medaleE[m')
:"
:"
:" E[41mandE[m E[41mnowE[m E[41mwithE[m E[41mSALE[m E[41minsteadE[m E[41mofE[m E[41mSOFOE[m E[41mitemsE[m; test E[41mautomaticE[m E[41mreloading
ggE[m:/^E[41maffstartE[m_E[41msalE[m/+1,/^E[41maffendE[m_E[41msalE[m/-1E[41mwE[m! E[41mXtestE[m.E[41maffE[m
:E[41mmkspellE[m! E[41mXtestE[m E[41mXtestE[m
:$put =E[41msoundfoldE[m('E[41mgoobledygoookE[m')
:$put =E[41msoundfoldE[m('E[41mkÃ³opÃ«rÃ¿nÃ´venE[m')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^addstart/+1,/^addend/-1w! Xtest.utf-8.addE[?25l"Xtest.utf-8.add" E[60;19HE[KE[60;19H[New File] 3 lines, 38 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmkspell! Xtest.utf-8.add.spl Xtest.utf-8.addE[?25lReading word file Xtest.utf-8.add ...E[60;38HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset spellfile=Xtest.utf-8.addE[?25lE[1;1HE[6LE[1;1HE[41mTestsE[m E[41mforE[m E[41mspellE[m E[41mcheckingE[m E[41mwithE[m 'E[41mencodingE[m' E[41msetE[m E[41mtoE[m "E[41mutf-8E[m".  E[41mvimE[m: E[41msetE[m E[41mftE[m=E[41mvimE[m :

E[41mSTARTTESTE[m
:E[41msoE[m E[41msmallE[m.E[41mvimE[m
:E[41msoE[m E[41mmbyteE[m.E[41mvimE[m
:"E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h^test2:E[?25lE[27mE[mE[HE[2JE[2;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[18;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[19;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[20;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[21;9HpreborkborkborkE[22;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[24;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[25;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[26;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[27;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
elequint test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1E[30;1HE[?12lE[?25hE[31;29HE[?25lE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mmeeE[m/391,111,9999
E[41mbarE[m/17,61003,123
E[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[9;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[11;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_us.utf-8.splE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[2;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[18;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[19;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[20;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[21;9HpreborkborkborkE[22;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[24;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[25;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[26;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[27;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[46melequintE[m test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mbarE[m/17,61003,123
E[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[8;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[10;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[17;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[18;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[19;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[20;9HpreborkborkborkE[21;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[23;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[24;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[25;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[26;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[46melequintE[m test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[41mPFXE[m E[41myyE[m 0 E[41mnouE[m .E[30;1HE[?12lE[?25hE[14CE[?25lE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mleadE[m/2
E[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[7;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[9;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequint
elekwintE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_gb.utf-8.splE[?25lE[58;1Helequint
E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[2;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[18;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[19;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[20;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[21;9HpreborkborkborkE[22;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[24;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[25;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[26;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[27;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
elequint test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[31;15HE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mtailE[m/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[6;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[8;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
elequint
E[46melekwint
elekwintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[17;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[18;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[19;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[20;9HpreborkborkborkE[21;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[23;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[24;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[25;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[26;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
elequint test E[46melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[41mPFXE[m E[41myyE[m 0 E[41mnouE[m .E[30;15HE[?12lE[?25hE[14CE[?25lE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1HE[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[5;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[7;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
elequint
E[46melekwint
elekwintE[m
E[41melekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_nz.utf-8.splE[?25lE[56;1HE[46melequintE[m
elekwint
elekwint
E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[2;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[18;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[19;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[20;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[21;9HpreborkborkborkE[22;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[24;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[25;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[26;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[27;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[46melequintE[m test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H7E[41mdicendE[m

7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[4;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[6;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[m
elekwint
elekwint
E[41melekwentE[m
E[46melequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[17;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[18;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[19;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[20;9HpreborkborkborkE[21;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[23;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[24;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[25;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[26;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[46melequintE[m test elekwint test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[41mPFXE[m E[41myyE[m 0 E[41mnouE[m .E[30;1HE[?12lE[?25hE[28CE[?25lE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;29HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[2;1H7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[3;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[5;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwentE[m
E[46melequintE[m
elekwint
elekwint
E[41melekwentE[m
E[46melequintE[m
E[41melekwentE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hset spl=Xtest_ca.utf-8.splE[?25lE[54;1HE[41melequint
elekwint
elekwint

elequint
E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^test2:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[2;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[18;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[19;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[20;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[21;9HpreborkborkborkE[22;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[24;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[25;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[26;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[27;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[41melequintE[m test E[41melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;1H7E[41mgoodE[m: E[41mmeea1E[m E[41mmeeaÃ©E[m E[41mbarE[m E[41mprebarE[m E[41mbarmeatE[m E[41mprebarmeatE[m  E[41mleadprebarE[2;7HleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[4;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequintE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HE[41mPFXE[m E[41mPE[m E[41mNE[m 1
E[41mPFXE[m E[41mPE[m 0 E[41mnouE[m .
4E[41maffendE[m

4E[41mdicstartE[m
1234
E[41mwordE[m/E[41mmP
utilE[m/E[41mam
proE[m/E[41mxq
tomatoE[m/E[41mm
borkE[m/E[41mmp
startE[m/E[41ms
endE[m/E[41meE[m
4E[41mdicendE[m

4E[41mgoodE[m: E[41mwordE[m E[41mutilE[m E[41mborkE[m E[41mpreborkE[m E[41mstartE[m E[41mendE[m E[41mwordutilE[m E[41mwordutilsE[m E[41mpro-okE[17;9HborkE[m E[41mborkborkE[m E[41mborkborkborkE[m E[41mborkborkborkborkE[m E[41mborkborkborkborkborkE[18;9HtomatoE[m E[41mtomatotomatoE[m E[41mstartendE[m E[41mstartwordE[m E[41mstartwordwordE[m E[41mstartwordendE[19;9HstartwordwordendE[m E[41mstartwordwordwordendE[m E[41mpreborkE[m E[41mpreborkborkE[20;9HpreborkborkborkE[21;9Hnouword
badE[m: E[41mwordutilizeE[m E[41mproE[m E[41mborkborkborkborkborkborkE[m E[41mtomatotomatotomatoE[23;9HendstartE[m E[41mendendE[m E[41mstartstartE[m E[41mwordendE[m E[41mwordstartE[24;9HpreborkpreborkE[m  E[41mpreborkpreborkborkE[25;9HstartwordwordwordwordendE[m E[41mborkpreborkpreborkborkE[26;9HutilsborkE[m  E[41mstartnouword
badend

test2E[m:
E[41melequintE[m test E[41melekwintE[m test E[41melekwentE[m E[41masdfE[m

Test E[41maffixE[m E[41mflagsE[m E[41mwithE[m E[41mtwoE[m E[41mcharactersE[m

5E[41maffstart
SETE[m E[41mISO8859-1

FLAGE[m E[41mlong

NEEDAFFIXE[m !!

E[41mCOMPOUNDRULEE[m E[41mssmmE[m*E[41mee

NEEDCOMPOUNDE[m E[41mxx
COMPOUNDPERMITFLAGE[m E[41mpp

SFXE[m 13 E[41mYE[m 1
E[41mSFXE[m 13 0 E[41mborkE[m .

E[41mSFXE[m E[41ma1E[m E[41mYE[m 1
E[41mSFXE[m E[41ma1E[m 0 E[41ma1E[m .

E[41mSFXE[m E[41maE[mE[34m<e9>E[m E[41mYE[m 1
E[41mSFXE[m E[41maE[mE[34m<e9>E[m 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m E[41mzzE[m E[41mYE[m 1
E[41mPFXE[m E[41mzzE[m 0 E[41mpreE[m/E[41mppE[m .

E[41mPFXE[m E[41myyE[m E[41mYE[m 1
E[41mPFXE[m E[41myyE[m 0 E[41mnouE[m .E[30;1HE[?12lE[?25hE[14CE[?25lE[60;1H:E[?12lE[?25hlet [str, a] = spellbadword()E[?25lE[30;15HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =strE[?25lE[27mE[mE[HE[2JE[1;7HE[41mleadE[m E[41mtailE[m E[41mleadtailE[m  E[41mleadmiddletail
badE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[3;9Hleadprobar
badendE[m

E[44mtestE[m output:

E[44mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutf-8E[m.E[41msplE[m
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
the end
uk
wrong
-------
E[41mbadE[m
['put', 'uk', 'OK']
E[41minputsE[m
['input', 'puts', 'outputs']
E[41mcommentE[m
['Comment', 'outtest', 'the end']
E[41mokE[m
['OK', 'uk', 'put']
E[41mOkE[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
E[41mdÃ©Ã´lE[m
['deol', 'dÃ©Ã´r', 'test']
E[41mendE[m
['put', 'uk', 'test']
E[41mtheE[m
['put', 'uk', 'test']
E[41mgebletegek
kepereneven
everlesE[m E[41mgesvetsE[m E[41metele
kbltykk
kprnfnE[m
*E[41mflsE[m E[41mkswtsE[m E[41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwintE[?12lE[?25hE[?25l
E[m:E[?12lE[?25hunlet str aE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Postponed prefixesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('2', '1')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H46 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[12LE[1;1HE[41mMAPE[m E[41myE[mE[34m<ff><fd>E[m
E[41mMAPE[m E[41msE[mE[34m<df>E[m
2E[41maffendE[m

1E[41mdicstartE[m
123456
test/E[41mNOE[m
# E[41mcommentE[m
wrong
Comment
OK
uk
put/E[41mISOE[m
the end
deolE[15;5HE[KE[16;1HdE[34m<e9><f4>E[mr
1E[41mdicendE[mE[18;1HE[KE[19;1HE[41maddstartE[m
/E[41mregionsE[m=E[41musgbnz
elequintE[m/2
E[41melekwintE[m/3
E[41maddendE[mE[23;7HE[KE[24;1HE[KE[25;1H1E[41mgoodE[m: wrong OK puts. Test the end
E[41mbadE[m:  E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m. E[44mtestE[m E[41mdÃ©Ã´lE[m E[41mendE[m E[41mthe
badendE[mE[28;1HE[KE[29;1H2E[41mgoodE[m: puts
E[41mbadE[m: E[41minputsE[m E[41mcommentE[m E[41mokE[m E[41mOkE[m E[41mendE[m E[41mtheE[m. E[44mtestE[m E[41mdÃ©Ã´l
badendE[mE[31;7HE[KE[32;1HE[KE[33;1HTest E[41mrulesE[m E[41mforE[m E[41mcompoundingE[m.E[34;1HE[KE[35;1H3E[41maffstart
SETE[m E[41mISO8859-1E[mE[36;14HE[KE[37;1HE[KE[38;1HE[41mCOMPOUNDMINE[m 3E[38;14HE[KE[39;1HE[41mCOMPOUNDRULEE[m E[41mmE[m*
E[41mNEEDCOMPOUNDE[m E[41mxE[mE[40;15HE[KE[41;1H3E[41maffendE[mE[42;1HE[KE[43;1H3E[41mdicstartE[m
1234E[44;5HE[KE[45;1HE[41mfooE[m/E[41mmE[mE[45;6HE[KE[46;1HE[41mbarE[m/E[41mmxE[mE[46;7HE[KE[47;1HE[41mmE[mE[34m<ef>E[m/E[41mmE[mE[47;9HE[KE[48;1HE[41mlaE[m/E[41mmxE[mE[48;6HE[KE[49;1H3E[41mdicendE[mE[50;1HE[KE[51;1H3E[41mgoodE[m: E[41mfooE[m E[41mmÃ¯E[m E[41mfoobarE[m E[41mfoofoobarE[m E[41mbarfooE[m E[41mbarbarfoo
badE[m: E[41mbarE[m E[41mlaE[m E[41mfoomÃ¯E[m E[41mbarmÃ¯E[m E[41mmÃ¯fooE[m E[41mmÃ¯barE[m E[41mmÃ¯mÃ¯E[m E[41mlalaE[m E[41mmÃ¯laE[m E[41mlamÃ¯E[m E[41mfoolaE[m E[41mlabar
badendE[mE[53;7HE[KE[54;1HE[KE[55;1HE[KE[56;1HE[41mTestsE[m E[41mforE[m E[41mcompoundingE[m.E[57;1HE[KE[58;1H4E[41maffstart
SETE[m E[41mISO8859-1E[mE[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" Compound wordsE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('3', '3')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H5 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('4', '4')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H45 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('5', '5')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H25 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('6', '6')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H23 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall TestOne('7', '7')E[?25l"Xtest.aff" E[60;13HE[KE[60;13H26 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...E[60;26HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[27mE[mE[HE[2JE[2;1HE[41mNEEDCOMPOUNDE[m 1
E[41mCOMPOUNDPERMITFLAGE[m 432

E[41mSFXE[m 61003 E[41mYE[m 1
E[41mSFXE[m 61003 0 E[41mmeatE[m .

E[41mSFXE[m 391 E[41mYE[m 1
E[41mSFXE[m 391 0 E[41ma1E[m .

E[41mSFXE[m 111 E[41mYE[m 1
E[41mSFXE[m 111 0 E[41maE[mE[34m<e9>E[m .

E[41mPFXE[m 17 E[41mYE[m 1
E[41mPFXE[m 17 0 E[41mpreE[m/432 .
7E[41maffendE[m

7E[41mdicstartE[m
1234
E[41mmeeE[m/391,111,9999
bar/17,61003,123
lead/2
tail/123
E[41mmiddleE[m/77,1
7E[41mdicendE[m

7E[41mgoodE[m: meea1 meeaÃ© bar prebar barmeat prebarmeat  leadprebarE[28;7Hlead tail leadtail  leadmiddletail
E[41mbadE[m: E[41mmeeE[m E[41mmeea2E[m E[41mprabarE[m E[41mprobarmaatE[m E[41mmiddleE[m E[41mleadmiddleE[m E[41mmiddletailE[m E[41mtailleadE[30;9Hleadprobar
badend

testE[m E[41moutputE[m:

E[41mtestE[m 1-1
# E[41mfileE[m: E[41mXtestE[m.E[41mutfE[m-8.E[41mspl
Comment
deol
dÃ©Ã´r
input
OK
output
outputs
outtest
put
puts
test
testen
testn
theE[m E[41mend
uk
wrongE[m
-------
E[41mbadE[m
['E[41mputE[m', 'E[41mukE[m', 'E[41mOKE[m']
E[41minputsE[m
['E[41minputE[m', 'E[41mputsE[m', 'E[41moutputsE[m']
E[41mcommentE[m
['E[41mCommentE[m', 'E[41mouttestE[m', 'E[41mtheE[m E[41mendE[m']E[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" clean up for valgrindE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc TestOneE[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset spl= enc=latin1E[?25lE[27mE[mE[HE[2JE[2;1HNEEDCOMPOUND 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  leadprebarE[28;7Hlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail tailleadE[30;9Hleadprobar
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']E[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[31;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HTests 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'E[38;7Hbreak
    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')E[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^test output:/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 270 lines, 3685 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test60.in" 580 lines, 12483 charactersE[1;1HTests for the exists() function.  vim: set ft=vim :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:resultE[7;9Hecho "OK"
    elseE[9;9Hecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroupE[14;9Hautocmd! BufEnter *.my echo 'myfile edited'
    augroup ENDE[17;5Hlet test_cases = []E[19;5H" 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]]E[52;5H" 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]]E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for the exists() function.  vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 575 lines, 12411 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;5Hif exists('v:version')E[2;9Hecho "OK"
    elseE[4;9Hecho "FAILED"
    endifE[7;5H" Non-existing Vim internal variable
    echo 'v:non_exists_var: 0'
    if !exists('v:non_exists_var')E[10;9Hecho "OK"
    elseE[12;9Hecho "FAILED"
    endifE[15;5H" Function arguments
    function TestFuncArg(func_arg, ...)E[17;9Hecho 'a:func_arg: 1'E[18;9Hif exists('a:func_arg')E[19;13Hecho "OK"E[20;9HelseE[21;13Hecho "FAILED"E[22;9HendifE[24;9Hecho 'a:non_exists_arg: 0'E[25;9Hif !exists('a:non_exists_arg')E[26;13Hecho "OK"E[27;9HelseE[28;13Hecho "FAILED"E[29;9HendifE[31;9Hecho 'a:1: 1'E[32;9Hif exists('a:1')E[33;13Hecho "OK"E[34;9HelseE[35;13Hecho "FAILED"E[36;9HendifE[38;9Hecho 'a:2: 0'E[39;9Hif !exists('a:2')E[40;13Hecho "OK"E[41;9HelseE[42;13Hecho "FAILED"E[43;9Hendif
    endfunctionE[46;5Hcall TestFuncArg("arg1", "arg2")E[48;5Hredir END
endfunction
:call TestExists()
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
ENDTESTE[?12lE[?25h
E[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! RunTest(str, result)E[?25l
:  E[?12lE[?25h    if exists(a:str) == a:result
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED: Checking for " . a:str
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25hendfunctionE[1;1HE[6LE[?25lE[1;5Hif exists('v:version')E[2;9Hecho "OK"
    elseE[4;9Hecho "FAILED"
    endifE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunction! TestExists()E[?25l
:  E[?12lE[?25h    augroup myagroup
E[?25l:  E[?12lE[?25hE[34m^IE[mautocmd! BufEnter *.my echo 'myfile edited'
E[?25l:  E[?12lE[?25h    augroup END
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    let test_cases = []
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " valid autocmd group
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup', 1]]
E[?25l:  E[?12lE[?25h    " valid autocmd group with garbage
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup+b', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd group and event
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup#BufEnter', 1]]
E[?25l:  E[?12lE[?25h    " Valid autocmd group, event and pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup#BufEnter#*.my', 1]]
E[?25l:  E[?12lE[?25h    " Valid autocmd event
E[?25l:  E[?12lE[?25h    let test_cases += [['#BufEnter', 1]]
E[?25l:  E[?12lE[?25h    " Valid autocmd event and pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['#BufEnter#*.my', 1]]
E[?25l:  E[?12lE[?25h    " Non-existing autocmd group or event
E[?25l:  E[?12lE[?25h    let test_cases += [['#xyzagroup', 0]]
E[?25l:  E[?12lE[?25h    " Non-existing autocmd group and valid autocmd event
E[?25l:  E[?12lE[?25h    let test_cases += [['#xyzagroup#BufEnter', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd group and event with no matching pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup#CmdwinEnter', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd group and non-existing autocmd event
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup#xyzacmd', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd group and event and non-matching pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd event and non-matching pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['#BufEnter#xyzpat', 0]]
E[?25l:  E[?12lE[?25h    " Empty autocmd group, event and pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['###', 0]]
E[?25l:  E[?12lE[?25h    " Empty autocmd group and event or empty event and pattern
E[?25l:  E[?12lE[?25h    let test_cases += [['##', 0]]
E[?25l:  E[?12lE[?25h    " Valid autocmd event
E[?25l:  E[?12lE[?25h    let test_cases += [['##FileReadCmd', 1]]
E[?25l:  E[?12lE[?25h    " Non-existing autocmd event
E[?25l:  E[?12lE[?25h    let test_cases += [['##MySpecialCmd', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing and working option (long form)
E[?25l:  E[?12lE[?25h    let test_cases += [['&textwidth', 1]]
E[?25l:  E[?12lE[?25h    " Existing and working option (short form)
E[?25l:  E[?12lE[?25h    let test_cases += [['&tw', 1]]
E[?25l:  E[?12lE[?25h    " Existing and working option with garbage
E[?25l:  E[?12lE[?25h    let test_cases += [['&tw-', 0]]
E[?25l:  E[?12lE[?25h    " Global option
E[?25l:  E[?12lE[?25h    let test_cases += [['&g:errorformat', 1]]
E[?25l:  E[?12lE[?25h    " Local option
E[?25l:  E[?12lE[?25h    let test_cases += [['&l:errorformat', 1]]
E[?25l:  E[?12lE[?25h    " Negative form of existing and working option (long form)
E[?25l:  E[?12lE[?25h    let test_cases += [['&nojoinspaces', 0]]
E[?25l:  E[?12lE[?25h    " Negative form of existing and working option (short form)
E[?25l:  E[?12lE[?25h    let test_cases += [['&nojs', 0]]
E[?25l:  E[?12lE[?25h    " Non-existing option
E[?25l:  E[?12lE[?25h    let test_cases += [['&myxyzoption', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing and working option (long form)
E[?25l:  E[?12lE[?25h    let test_cases += [['+incsearch', 1]]
E[?25l:  E[?12lE[?25h    " Existing and working option with garbage
E[?25l:  E[?12lE[?25h    let test_cases += [['+incsearch!1', 0]]
E[?25l:  E[?12lE[?25h    " Existing and working option (short form)
E[?25l:  E[?12lE[?25h    let test_cases += [['+is', 1]]
E[?25l:  E[?12lE[?25h    " Existing option that is hidden.
E[?25l:  E[?12lE[?25h    let test_cases += [['+autoprint', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing environment variable
E[?25l:  E[?12lE[?25h    let $EDITOR_NAME = 'Vim Editor'
E[?25l:  E[?12lE[?25h    let test_cases += [['$EDITOR_NAME', 1]]
E[?25l:  E[?12lE[?25h    " Non-existing environment variable
E[?25l:  E[?12lE[?25h    let test_cases += [['$NON_ENV_VAR', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid internal function
E[?25l:  E[?12lE[?25h    let test_cases += [['*bufnr', 1]]
E[?25l:  E[?12lE[?25h    " Valid internal function with ()
E[?25l:  E[?12lE[?25h    let test_cases += [['*bufnr()', 1]]
E[?25l:  E[?12lE[?25h    " Non-existing internal function
E[?25l:  E[?12lE[?25h    let test_cases += [['*myxyzfunc', 0]]
E[?25l:  E[?12lE[?25h    " Valid internal function with garbage
E[?25l:  E[?12lE[?25h    let test_cases += [['*bufnr&6', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid user defined function
E[?25l:  E[?12lE[?25h    let test_cases += [['*TestExists', 1]]
E[?25l:  E[?12lE[?25h    " Non-existing user defined function
E[?25l:  E[?12lE[?25h    let test_cases += [['*MyxyzFunc', 0]]
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    redir! > test.out
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    for [test_case, result] in test_cases
E[?25l:    E[?12lE[?25h      E[34m^IE[mecho test_case . ": " . result
E[?25l:    E[?12lE[?25h        call RunTest(test_case, result)
E[?25l:    E[?12lE[?25h    endfor
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid internal command (full match)
E[?25l:  E[?12lE[?25h    echo ':edit: 2'
E[?25l:  E[?12lE[?25h    if exists(':edit') == 2
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid internal command (full match) with garbage
E[?25l:  E[?12lE[?25h    echo ':edit/a: 0'
E[?25l:  E[?12lE[?25h    if exists(':edit/a') == 0
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid internal command (partial match)
E[?25l:  E[?12lE[?25h    echo ':q: 1'
E[?25l:  E[?12lE[?25h    if exists(':q') == 1
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing internal command
E[?25l:  E[?12lE[?25h    echo ':invalidcmd: 0'
E[?25l:  E[?12lE[?25h    if !exists(':invalidcmd')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " User defined command (full match)
E[?25l:  E[?12lE[?25h    command! MyCmd :echo 'My command'
E[?25l:  E[?12lE[?25h    echo ':MyCmd: 2'
E[?25l:  E[?12lE[?25h    if exists(':MyCmd') == 2
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " User defined command (partial match)
E[?25l:  E[?12lE[?25h    command! MyOtherCmd :echo 'Another command'
E[?25l:  E[?12lE[?25h    echo ':My: 3'
E[?25l:  E[?12lE[?25h    if exists(':My') == 3
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Command modifier
E[?25l:  E[?12lE[?25h    echo ':rightbelow: 2'
E[?25l:  E[?12lE[?25h    if exists(':rightbelow') == 2
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing user defined command (full match)
E[?25l:  E[?12lE[?25h    delcommand MyCmd
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    echo ':MyCmd: 0'
E[?25l:  E[?12lE[?25h    if !exists(':MyCmd')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing user defined command (partial match)
E[?25l:  E[?12lE[?25h    delcommand MyOtherCmd
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    echo ':My: 0'
E[?25l:  E[?12lE[?25h    if !exists(':My')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local variable
E[?25l:  E[?12lE[?25h    let local_var = 1
E[?25l:  E[?12lE[?25h    echo 'local_var: 1'
E[?25l:  E[?12lE[?25h    if exists('local_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local variable with garbage
E[?25l:  E[?12lE[?25h    let local_var = 1
E[?25l:  E[?12lE[?25h    echo 'local_var%n: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_var%n')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing local variable
E[?25l:  E[?12lE[?25h    unlet local_var
E[?25l:  E[?12lE[?25h    echo 'local_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local list
E[?25l:  E[?12lE[?25h    let local_list = ["blue", "orange"]
E[?25l:  E[?12lE[?25h    echo 'local_list: 1'
E[?25l:  E[?12lE[?25h    if exists('local_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local list item
E[?25l:  E[?12lE[?25h    echo 'local_list[1]: 1'
E[?25l:  E[?12lE[?25h    if exists('local_list[1]')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local list item with garbage
E[?25l:  E[?12lE[?25h    echo 'local_list[1]+5: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_list[1]+5')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Invalid local list item
E[?25l:  E[?12lE[?25h    echo 'local_list[2]: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_list[2]')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing local list
E[?25l:  E[?12lE[?25h    unlet local_list
E[?25l:  E[?12lE[?25h    echo 'local_list: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Valid local dictionary
E[?25l:  E[?12lE[?25h    let local_dict = {"xcord":100, "ycord":2}
E[?25l:  E[?12lE[?25h    echo 'local_dict: 1'
E[?25l:  E[?12lE[?25h    if exists('local_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing local dictionary
E[?25l:  E[?12lE[?25h    unlet local_dict
E[?25l:  E[?12lE[?25h    echo 'local_dict: 0'
E[?25l:  E[?12lE[?25h    if !exists('local_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing local curly-brace variable
E[?25l:  E[?12lE[?25h    let str = "local"
E[?25l:  E[?12lE[?25h    let curly_{str}_var = 1
E[?25l:  E[?12lE[?25h    echo 'curly_' . str . '_var: 1'
E[?25l:  E[?12lE[?25h    if exists('curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing local curly-brace variable
E[?25l:  E[?12lE[?25h    unlet curly_{str}_var
E[?25l:  E[?12lE[?25h    echo 'curly_' . str . '_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing global variable
E[?25l:  E[?12lE[?25h    let g:global_var = 1
E[?25l:  E[?12lE[?25h    echo 'g:global_var: 1'
E[?25l:  E[?12lE[?25h    if exists('g:global_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing global variable with garbage
E[?25l:  E[?12lE[?25h    echo 'g:global_var-n: 1'
E[?25l:  E[?12lE[?25h    if !exists('g:global_var-n')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing global variable
E[?25l:  E[?12lE[?25h    unlet g:global_var
E[?25l:  E[?12lE[?25h    echo 'g:global_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('g:global_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing global list
E[?25l:  E[?12lE[?25h    let g:global_list = ["blue", "orange"]
E[?25l:  E[?12lE[?25h    echo 'g:global_list: 1'
E[?25l:  E[?12lE[?25h    if exists('g:global_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing global list
E[?25l:  E[?12lE[?25h    unlet g:global_list
E[?25l:  E[?12lE[?25h    echo 'g:global_list: 0'
E[?25l:  E[?12lE[?25h    if !exists('g:global_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing global dictionary
E[?25l:  E[?12lE[?25h    let g:global_dict = {"xcord":100, "ycord":2}
E[?25l:  E[?12lE[?25h    echo 'g:global_dict: 1'
E[?25l:  E[?12lE[?25h    if exists('g:global_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing global dictionary
E[?25l:  E[?12lE[?25h    unlet g:global_dict
E[?25l:  E[?12lE[?25h    echo 'g:global_dict: 0'
E[?25l:  E[?12lE[?25h    if !exists('g:global_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing global curly-brace variable
E[?25l:  E[?12lE[?25h    let str = "global"
E[?25l:  E[?12lE[?25h    let g:curly_{str}_var = 1
E[?25l:  E[?12lE[?25h    echo 'g:curly_' . str . '_var: 1'
E[?25l:  E[?12lE[?25h    if exists('g:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing global curly-brace variable
E[?25l:  E[?12lE[?25h    unlet g:curly_{str}_var
E[?25l:  E[?12lE[?25h    echo 'g:curly_' . str . '_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('g:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing window variable
E[?25l:  E[?12lE[?25h    echo 'w:window_var: 1'
E[?25l:  E[?12lE[?25h    let w:window_var = 1
E[?25l:  E[?12lE[?25h    if exists('w:window_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing window variable
E[?25l:  E[?12lE[?25h    unlet w:window_var
E[?25l:  E[?12lE[?25h    echo 'w:window_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('w:window_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing window list
E[?25l:  E[?12lE[?25h    let w:window_list = ["blue", "orange"]
E[?25l:  E[?12lE[?25h    echo 'w:window_list: 1'
E[?25l:  E[?12lE[?25h    if exists('w:window_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing window list
E[?25l:  E[?12lE[?25h    unlet w:window_list
E[?25l:  E[?12lE[?25h    echo 'w:window_list: 0'
E[?25l:  E[?12lE[?25h    if !exists('w:window_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing window dictionary
E[?25l:  E[?12lE[?25h    let w:window_dict = {"xcord":100, "ycord":2}
E[?25l:  E[?12lE[?25h    echo 'w:window_dict: 1'
E[?25l:  E[?12lE[?25h    if exists('w:window_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing window dictionary
E[?25l:  E[?12lE[?25h    unlet w:window_dict
E[?25l:  E[?12lE[?25h    echo 'w:window_dict: 0'
E[?25l:  E[?12lE[?25h    if !exists('w:window_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing window curly-brace variable
E[?25l:  E[?12lE[?25h    let str = "window"
E[?25l:  E[?12lE[?25h    let w:curly_{str}_var = 1
E[?25l:  E[?12lE[?25h    echo 'w:curly_' . str . '_var: 1'
E[?25l:  E[?12lE[?25h    if exists('w:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing window curly-brace variable
E[?25l:  E[?12lE[?25h    unlet w:curly_{str}_var
E[?25l:  E[?12lE[?25h    echo 'w:curly_' . str . '_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('w:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing buffer variable
E[?25l:  E[?12lE[?25h    echo 'b:buffer_var: 1'
E[?25l:  E[?12lE[?25h    let b:buffer_var = 1
E[?25l:  E[?12lE[?25h    if exists('b:buffer_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing buffer variable
E[?25l:  E[?12lE[?25h    unlet b:buffer_var
E[?25l:  E[?12lE[?25h    echo 'b:buffer_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('b:buffer_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing buffer list
E[?25l:  E[?12lE[?25h    let b:buffer_list = ["blue", "orange"]
E[?25l:  E[?12lE[?25h    echo 'b:buffer_list: 1'
E[?25l:  E[?12lE[?25h    if exists('b:buffer_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing buffer list
E[?25l:  E[?12lE[?25h    unlet b:buffer_list
E[?25l:  E[?12lE[?25h    echo 'b:buffer_list: 0'
E[?25l:  E[?12lE[?25h    if !exists('b:buffer_list')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing buffer dictionary
E[?25l:  E[?12lE[?25h    let b:buffer_dict = {"xcord":100, "ycord":2}
E[?25l:  E[?12lE[?25h    echo 'b:buffer_dict: 1'
E[?25l:  E[?12lE[?25h    if exists('b:buffer_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing buffer dictionary
E[?25l:  E[?12lE[?25h    unlet b:buffer_dict
E[?25l:  E[?12lE[?25h    echo 'b:buffer_dict: 0'
E[?25l:  E[?12lE[?25h    if !exists('b:buffer_dict')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing buffer curly-brace variable
E[?25l:  E[?12lE[?25h    let str = "buffer"
E[?25l:  E[?12lE[?25h    let b:curly_{str}_var = 1
E[?25l:  E[?12lE[?25h    echo 'b:curly_' . str . '_var: 1'
E[?25l:  E[?12lE[?25h    if exists('b:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing buffer curly-brace variable
E[?25l:  E[?12lE[?25h    unlet b:curly_{str}_var
E[?25l:  E[?12lE[?25h    echo 'b:curly_' . str . '_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('b:curly_{str}_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Script-local tests
E[?25l:  E[?12lE[?25h    source test60.vim
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Existing Vim internal variable
E[?25l:  E[?12lE[?25h    echo 'v:version: 1'
E[?25l:  E[?12lE[?25h    if exists('v:version')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Non-existing Vim internal variable
E[?25l:  E[?12lE[?25h    echo 'v:non_exists_var: 0'
E[?25l:  E[?12lE[?25h    if !exists('v:non_exists_var')
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "OK"
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25hE[34m^IE[mecho "FAILED"
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h
E[?25l:  E[?12lE[?25h    " Function arguments
E[?25l:  E[?12lE[?25h    function TestFuncArg(func_arg, ...)
E[?25l:    E[?12lE[?25h        echo 'a:func_arg: 1'
E[?25l:    E[?12lE[?25h        if exists('a:func_arg')
E[?25l:      E[?12lE[?25h            echo "OK"
E[?25l:      E[?12lE[?25h        else
E[?25l:      E[?12lE[?25h            echo "FAILED"
E[?25l:      E[?12lE[?25h        endif
E[?25l:    E[?12lE[?25h
E[?25l:    E[?12lE[?25h        echo 'a:non_exists_arg: 0'
E[?25l:    E[?12lE[?25h        if !exists('a:non_exists_arg')
E[?25l:      E[?12lE[?25h            echo "OK"
E[?25l:      E[?12lE[?25h        else
E[?25l:      E[?12lE[?25h            echo "FAILED"
E[?25l:      E[?12lE[?25h        endif
E[?25l:    E[?12lE[?25h
E[?25l:    E[?12lE[?25h        echo 'a:1: 1'
E[?25l:    E[?12lE[?25h        if exists('a:1')
E[?25l:      E[?12lE[?25h            echo "OK"
E[?25l:      E[?12lE[?25h        else
E[?25l:      E[?12lE[?25h            echo "FAILED"
E[?25l:      E[?12lE[?25h        endif
E[?25l:    E[?12lE[?25h
E[?25l:    E[?12lE[?25h        echo 'a:2: 0'
E[?25l:    E[?12lE[?25h        if !exists('a:2')
E[?25l:      E[?12lE[?25h            echo "OK"
E[?25l:      E[?12lE[?25h        else
E[?25l:      E[?12lE[?25h            echo "FAILED"
E[?25l:      E[?12lE[?25h        endif
E[?25l:    E[?12lE[?25h    endfunction
E[?25l:    E[?12lE[?25h
E[?25l:    E[?12lE[?25h    call TestFuncArg("arg1", "arg2")
E[?25l:    E[?12lE[?25h
E[?25l:    E[?12lE[?25h    redir END
E[?25l:    E[?12lE[?25hendfunctionE[27mE[mE[HE[2JE[?25lE[1;5Hif exists('v:version')E[2;9Hecho "OK"
    elseE[4;9Hecho "FAILED"
    endifE[7;5H" Non-existing Vim internal variable
    echo 'v:non_exists_var: 0'
    if !exists('v:non_exists_var')E[10;9Hecho "OK"
    elseE[12;9Hecho "FAILED"
    endifE[15;5H" Function arguments
    function TestFuncArg(func_arg, ...)E[17;9Hecho 'a:func_arg: 1'E[18;9Hif exists('a:func_arg')E[19;13Hecho "OK"E[20;9HelseE[21;13Hecho "FAILED"E[22;9HendifE[24;9Hecho 'a:non_exists_arg: 0'E[25;9Hif !exists('a:non_exists_arg')E[26;13Hecho "OK"E[27;9HelseE[28;13Hecho "FAILED"E[29;9HendifE[31;9Hecho 'a:1: 1'E[32;9Hif exists('a:1')E[33;13Hecho "OK"E[34;9HelseE[35;13Hecho "FAILED"E[36;9HendifE[38;9Hecho 'a:2: 0'E[39;9Hif !exists('a:2')E[40;13Hecho "OK"E[41;9HelseE[42;13Hecho "FAILED"E[43;9Hendif
    endfunctionE[46;5Hcall TestFuncArg("arg1", "arg2")E[48;5Hredir END
endfunction
:call TestExists()
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
ENDTEST
E[?12lE[?25hE[?25l
:E[?12lE[?25hcall TestExists()E[?25l#myagroup: 1E[60;13HE[KE[60;1H
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
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc TestExistsE[?25lE[27mE[mE[HE[2JE[1;5Hif exists('v:version')E[2;9Hecho "OK"
    elseE[4;9Hecho "FAILED"
    endifE[7;5H" Non-existing Vim internal variable
    echo 'v:non_exists_var: 0'
    if !exists('v:non_exists_var')E[10;9Hecho "OK"
    elseE[12;9Hecho "FAILED"
    endifE[15;5H" Function arguments
    function TestFuncArg(func_arg, ...)E[17;9Hecho 'a:func_arg: 1'E[18;9Hif exists('a:func_arg')E[19;13Hecho "OK"E[20;9HelseE[21;13Hecho "FAILED"E[22;9HendifE[24;9Hecho 'a:non_exists_arg: 0'E[25;9Hif !exists('a:non_exists_arg')E[26;13Hecho "OK"E[27;9HelseE[28;13Hecho "FAILED"E[29;9HendifE[31;9Hecho 'a:1: 1'E[32;9Hif exists('a:1')E[33;13Hecho "OK"E[34;9HelseE[35;13Hecho "FAILED"E[36;9HendifE[38;9Hecho 'a:2: 0'E[39;9Hif !exists('a:2')E[40;13Hecho "OK"E[41;9HelseE[42;13Hecho "FAILED"E[43;9Hendif
    endfunctionE[46;5Hcall TestFuncArg("arg1", "arg2")E[48;5Hredir END
endfunction
:call TestExists()
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
ENDTEST
E[?12lE[?25hE[?25l
:E[?12lE[?25hdelfunc RunTestE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hdelfunc TestFuncArgE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hedit! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[Incomplete last line] 197 lines, 1844 charactersE[1;5HE[KE[2;1H#myagroup: 1E[2;14HE[KE[3;1HOKE[3;5HE[KE[4;1H#myagroup+b: 0E[4;15HE[KE[5;1HOKE[5;5HE[KE[6;1H#myagroup#BufEnter: 1
OKE[7;5HE[KE[8;1H#myagroup#BufEnter#*.my: 1E[8;27HE[KE[9;1HOKE[9;5HE[KE[10;1H#BufEnter: 1E[10;14HE[KE[11;1HOKE[11;5HE[KE[12;1H#BufEnter#*.my: 1E[12;18HE[KE[13;1HOKE[13;5HE[KE[14;1H#xyzagroup: 0
OKE[15;5HE[KE[16;1H#xyzagroup#BufEnter: 0E[16;23HE[KE[17;1HOKE[17;9HE[KE[18;1H#myagroup#CmdwinEnter: 0E[18;25HE[KE[19;1HOKE[19;13HE[KE[20;1H#myagroup#xyzacmd: 0
OKE[21;13HE[KE[22;1H#myagroup#BufEnter#xyzpat: 0
OK
#BufEnter#xyzpat: 0E[24;20HE[KE[25;1HOKE[25;9HE[KE[26;1H###: 0E[26;13HE[KE[27;1HOKE[27;9HE[KE[28;1H##: 0E[28;13HE[KE[29;1HOKE[29;9HE[KE[30;1H##FileReadCmd: 1
OKE[31;9HE[KE[32;1H##MySpecialCmd: 0E[32;18HE[KE[33;1HOKE[33;13HE[KE[34;1H&textwidth: 1
OKE[35;13HE[KE[36;1H&tw: 1E[36;9HE[KE[37;1HOK
&tw-: 0E[38;9HE[KE[39;1HOKE[39;9HE[KE[40;1H&g:errorformat: 1E[40;18HE[KE[41;1HOKE[41;9HE[KE[42;1H&l:errorformat: 1E[42;18HE[KE[43;1HOKE[43;9HE[KE[44;1H&nojoinspaces: 0
OK
&nojs: 0E[46;10HE[KE[47;1HOK
&myxyzoption: 0
OKE[49;3HE[KE[50;1H+incsearch: 1E[50;14HE[KE[51;1HOKE[51;3HE[KE[52;1H+incsearch!1: 0E[52;16HE[KE[53;1HOKE[53;3HE[KE[54;1H+is: 1E[54;8HE[KE[55;1HOKE[55;3HE[KE[56;1H+autoprint: 0
OKE[57;3HE[KE[58;1H$EDITOR_NAME: 1
OKE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ff=unixE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 197 lines, 1845 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test61.in" 113 lines, 1774 charactersE[1;1HTests 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
AaE[34m^[E[m:set ul=100
AbE[34m^[E[m:set ul=100
AcE[34m^[E[m: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
GoaaaaE[34m^[E[m:set ul=100
obbbbE[34m^[E[mu:.w >>test.out
obbbbE[34m^[E[m:set ul=100
:undojoin
occccE[34m^[E[mu:.w >>test.out
:e! Xtest
ione one oneE[34m^[E[m:set ul=100E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for undo tree.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 1 line, 25 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[8;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hecho undotree().entriesE[?25l[]E[60;3HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[10;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H97 lines, 1501 characters writtenE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[11;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[49ME[1;60rE[11;1H:w!
otwoE[34m^[E[m:set ul=100
otwoE[34m^[E[m:set ul=100
:w
othreeE[34m^[E[m: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---E[34m^[E[m:0put e
ggO---E[34m^[E[m:0put d
ggO---E[34m^[E[m:0put c
ggO---E[34m^[E[m:0put b
ggO---E[34m^[E[m:0put a
ggO---E[34m^[E[m:w >>test.out
:so small.vim
:set nocp viminfo+=nviminfo
:enew!
oaE[34m^[E[m
:set ul=100
obE[34m^[E[m
:set ul=100
o1E[34m^[E[ma2E[34m^RE[m=setline('.','1234')

E[34m^[E[muu:"
ocE[34m^[E[m
:set ul=100
o1E[34m^[E[ma2E[34m^RE[m=setline('.','1234')

E[34m^[E[mu:"
odE[34m^[E[m
:set ul=100
o1E[34m^[E[ma2E[34m^RE[m=string(123)
E[34m^[E[mu:"
:%w >>test.out
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Delete three characters and undoE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[4ME[1;60rE[56;1H1111 -----
2222 -----

123456789E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l23456789E[59;9HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset ul=100E[?25lE[59;1HE[?12lE[?25hE[?25l3456789E[59;8HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;1HE[?12lE[?25hE[?25l456789E[59;7HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 7 characters writtenE[59;1HE[?12lE[?25hE[?25l
1 change; before #3  0 seconds agoE[60;35HE[KE[59;1H3456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 8 characters appendedE[59;1HE[?12lE[?25hE[?25l
1 change; before #2  0 seconds agoE[60;35HE[KE[59;1H23456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 9 characters appendedE[59;1HE[?12lE[?25hE[?25l
1 change; before #1  0 seconds agoE[60;35HE[KE[59;1H123456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;1HE[?12lE[?25hE[?25l
Already at oldest changeE[60;25HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^111/w >>test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Delete three other characters and go back in time step by stepE[?25lE[59;1HE[?12lE[?25hE[8CE[?25lE[59;9HE[KE[59;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;8HE[?12lE[?25hE[?25lE[59;8HE[KE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;7HE[?12lE[?25hE[?25lE[59;7HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsleep 1E[?25lE[59;6HE[?12lE[?25hE[?25l
1 change; before #6  1 seconds agoE[59;7H7E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 8 characters appendedE[59;7HE[?12lE[?25hE[?25l
1 change; before #5  1 seconds agoE[60;35HE[KE[59;8H8E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 9 characters appendedE[59;8HE[?12lE[?25hE[?25l
4 changes; after #3  1 seconds agoE[60;35HE[KE[59;1H456789E[59;7HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;1HE[?12lE[?25hE[?25l
1 change; before #3  1 seconds agoE[60;35HE[KE[59;1H3456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 8 characters appendedE[59;1HE[?12lE[?25hE[?25l
1 change; before #2  1 seconds agoE[60;35HE[KE[59;1H23456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 9 characters appendedE[59;1HE[?12lE[?25hE[?25l
1 change; before #1  1 seconds agoE[60;35HE[KE[59;1H123456789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;1HE[?12lE[?25hE[?25l
Already at oldest changeE[60;25HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;1HE[?12lE[?25hE[?25l
Already at oldest changeE[60;25HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;1HE[?12lE[?25hE[?25l
3 changes; after #6  1 seconds agoE[60;35HE[KE[59;7HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^222/w >>test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H1 line, 11 characters appendedE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Delay for three seconds and go some seconds forward and backwardE[?25lE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsleep 2E[?25lE[59;6HE[?12lE[?25hE[?25l6aE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;7HE[?12lE[?25hE[?25labE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;8HE[?12lE[?25hE[?25lbcE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hear 1sE[?25l3 changes; before #7  0 seconds agoE[59;7HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hear 3sE[?25l3 changes; before #1  3 seconds agoE[59;7H789E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlater 1sE[?25l3 changes; after #6  3 seconds agoE[59;7HE[KE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 7 characters appendedE[59;6HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlater 1hE[?25l3 changes; after #9  0 seconds agoE[59;7HabcE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 10 characters appendedE[59;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test undojoinE[?25lE[59;9HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HaaaaE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
:E[?12lE[?25hset ul=100E[?25lE[59;4HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HbbbbE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
1 line less; before #11  0 seconds agoE[59;1HE[1mE[34m~                                                                                               E[58;4HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 5 characters appendedE[58;4HE[?12lE[?25hE[?25l
bbbbE[59;5HE[KE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hundojoinE[?25lE[59;4HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HccccE[60;1HE[KE[59;4HE[?12lE[?25hE[?25l
2 fewer lines; before #12  0 seconds agoE[58;1HE[1mE[34m~                                                                                               E[59;1H~                                                                                               E[57;4HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1 line, 5 characters appendedE[57;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestE[?25l"Xtest" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mone one oneE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[1;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw!E[?25l"Xtest" [New File] 1 line, 12 characters writtenE[1;11HE[?12lE[?25hE[?25l
twoE[2;4HE[KE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[2;3HE[?12lE[?25hE[?25l
twoE[3;4HE[KE[3;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtest" 3 lines, 20 characters writtenE[3;3HE[?12lE[?25hE[?25l
threeE[4;6HE[KE[4;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hearlier 1fE[?25l1 line less; before #4  0 seconds agoE[4;1HE[1mE[34m~                                                                                               E[3;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" expect "one one one\ntwo\ntwo"E[?25lE[3;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%yank aE[?25l3 lines yankedE[3;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hearlier 1fE[?25l2 fewer lines; before #2  0 seconds agoE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[1;11HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" expect "one one one"E[?25lE[1;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%yank bE[?25lE[1;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hearlier 1fE[?25l1 line less; before #1  0 seconds agoE[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" expect empty lineE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%yank cE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlater 1fE[?25l1 more line; after #1  0 seconds agoE[1;1Hone one oneE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" expect "one one one"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%yank dE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlater 1fE[?25l2 more lines; after #3  0 seconds agoE[2;1HtwoE[2;4HE[KE[3;1HtwoE[3;4HE[KE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" expect "one one one\ntwo\ntwo"E[?25lE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%yank eE[?25l3 lines yankedE[2;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlater 1fE[?25l1 more line; after #4  0 seconds agoE[4;1HthreeE[4;6HE[KE[3;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" expect "one one one\ntwo\ntwo\nthree"E[?25lE[3;3HE[?12lE[?25hE[1;1HE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[60;1HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h0put eE[?25l3 more linesE[1;59rE[1;1HE[3LE[1;60rE[1;1Hone one one
two
twoE[60;1HE[KE[60;1H3 more linesE[3;1HE[?12lE[?25hE[1;1HE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[60;1HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h0put dE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1Hone one oneE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h0put cE[?25lE[1;59rE[1;1HE[LE[1;60rE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h0put bE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1Hone one oneE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h0put aE[?25l3 more linesE[1;59rE[1;1HE[3LE[1;60rE[1;1Hone one one
two
twoE[60;1HE[KE[60;1H3 more linesE[3;1HE[?12lE[?25hE[1;1HE[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H---E[60;1HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H19 lines, 115 characters appendedE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp viminfo+=nviminfoE[?25lE[1;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25henew!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[2;1HaE[2;2HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[3;1HbE[3;2HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[4;1H1E[4;2HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[60;1H=E[?12lE[?25hsetline('.','1234')E[?25lE[4;2H20
34E[5;3HE[KE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[5;1HuE[?12lE[?25h3E[60;1HE[KE[?25lE[5;1HE[?12lE[?25hE[?25lE[60;1H1 line less; before #4  0 seconds agoE[4;3HE[KE[5;1HE[1mE[34m~                                                                                               E[4;2HE[?12lE[?25hE[?25lE[mE[60;22H3E[4;1HE[1mE[34m~                                                                                               E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[4;1HcE[4;2HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[5;1H1E[5;2HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[60;1H=E[?12lE[?25hsetline('.','1234')E[?25lE[5;2H20
34E[6;3HE[KE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[6;1HuE[?12lE[?25h3E[60;1HE[KE[?25lE[6;1HE[?12lE[?25hE[?25lE[60;1H1 line less; before #7  0 seconds agoE[5;3HE[KE[6;1HE[1mE[34m~                                                                                               E[5;2HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[5;2HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[6;1HdE[6;2HE[KE[6;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[6;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[7;1H1E[7;2HE[KE[7;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[60;1H=E[?12lE[?25hstring(123)E[?25lE[60;1HE[KE[7;2H2123E[?12lE[?25hE[?25lE[60;1H1 line less; before #9  0 seconds agoE[7;1HE[1mE[34m~                                                                                               E[6;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H6L, 12C appendedE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test62.in" 190 lines, 5506 charactersE[1;1HTests 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(22E[40;1H, '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']E[48;1H:   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'E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for tab pagesE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 184 lines, 5457 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;5Hlet t:a='a'
    C tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Simple test for opening and closing a tab pageE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m test62.in E[mE[1m [No Name] E[mE[7m                                                                          E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hlet nr = tabpagenr()E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqE[?25lE[27mE[mE[HE[2JE[1;5Hlet t:a='a'
    C tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall append(line('$'), 'tab page ' . nr)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet nrE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Open three tab pages and use ":tabdo"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h0tabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[1m [No Name] E[mE[4mE[30mE[47m + test62.in E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h1tabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m [No Name] E[mE[1m [No Name] E[mE[4mE[30mE[47m + test62.in E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h888tabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m [No Name]  [No Name]  + test62.in E[mE[1m [No Name] E[mE[7m                                                  E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabdo call append(line('$'), 'this is tab page ' . tabpagenr())E[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + [No Name]  + [No Name]  + test62.in E[mE[1m + [No Name] E[mE[7m                                            E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1Hthis is tab page 4
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabclose! 2E[?25lE[1;17HE[4mE[30mE[47mtest62.inE[mE[1CE[1m + [No Name] E[mE[7m             E[43C E[mE[1;96HE[4mE[30mE[47mXE[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25htabrewindE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + [No Name] E[mE[4mE[30mE[47m + test62.in  + [No Name] E[mE[7m                                                         E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1Hthis is tab page 1
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hlet line1 = getline('$')E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hundoE[?25l2 fewer lines; before #1  0 seconds agoE[1;2HE[1m[No Name]e ]E[mE[4mE[30mE[47m E[mE[1m E[mE[4mE[30mE[47m+ test62.in  + [No Name] E[mE[7m  E[56C E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m + [No Name] E[mE[7m                                                                      E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25htablastE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test62.in E[mE[1m + [No Name] E[mE[7m                                                                      E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1Hthis is tab page 4
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hlet line2 = getline('$')E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[27mE[mE[HE[2JE[1;5Hlet t:a='a'
    C tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall append(line('$'), line1)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), line2)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet line1 line2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test for settabvar() and gettabvar() functions. Open a new tab page and E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" set 3 variables to a number, string and a list. Verify that the variablesE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" are correctly set.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test62.in E[mE[1m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabfirstE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall settabvar(2, 'val_num', 100)E[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall settabvar(2, 'val_str', 'SetTabVar test')E[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall settabvar(2, 'val_list', ['red', 'blue', 'green'])E[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet test_status = 'gettabvar: fail'E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar(
E[59;96H2E[60;1H, 'val_list') == ['red', 'blue', 'green']E[?25lE[60;1HE[KE[60;1H:  E[?12lE[?25h:    let test_status = 'gettabvar: pass'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[2LE[1;1HE[1m + test62.in E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[?25lE[mE[2;5HC tab splitE[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall append(line('$'), test_status)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabnext 2E[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test62.in E[mE[1m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hlet test_status = 'settabvar: fail'E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif t:val_num == 100 && t:val_str == 'SetTabVar test'  && t:val_list == ['red', 'blue', 'green'
E[59;96H]E[60;1HE[?25l:  E[?12lE[?25h:   let test_status = 'settabvar: pass'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[2LE[1;1HE[4mE[30mE[47m + test62.in E[mE[1m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[?25lE[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25htabcloseE[?25lE[27mE[mE[HE[2JE[1;5Hlet t:a='a'
    C tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall append(line('$'), test_status)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif has('gui') || has('clientserver')E[?25l
:  E[?12lE[?25h:" Test for ":tab drop exist-file" to keep current window.
E[?25l:  E[?12lE[?25h:sp test1
E[?25l:  E[?12lE[?25h:tab drop test1
E[?25l:  E[?12lE[?25h:let test_status = 'tab drop 1: fail'
E[?25l:  E[?12lE[?25h:if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
E[?25l:    E[?12lE[?25h:    let test_status = 'tab drop 1: pass'
E[?25l:    E[?12lE[?25h:endif
E[?25l:  E[?12lE[?25h:close
E[?25l:  E[?12lE[?25h:call append(line('$'), test_status)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Test for ":tab drop new-file" to keep current window of tabpage 1.
E[?25l:  E[?12lE[?25h:split
E[?25l:  E[?12lE[?25h:tab drop newfile
E[?25l:  E[?12lE[?25h:let test_status = 'tab drop 2: fail'
E[?25l:  E[?12lE[?25h:if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
E[?25l:    E[?12lE[?25h:    let test_status = 'tab drop 2: pass'
E[?25l:    E[?12lE[?25h:endif
E[?25l:  E[?12lE[?25h:tabclose
E[?25l:  E[?12lE[?25h:q
E[?25l:  E[?12lE[?25h:call append(line('$'), test_status)
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:"
E[?25l:  E[?12lE[?25h:" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
E[?25l:  E[?12lE[?25h:new test1
E[?25l:  E[?12lE[?25h:tabnew
E[?25l:  E[?12lE[?25h:new test1
E[?25l:  E[?12lE[?25h:tab drop test1
E[?25l:  E[?12lE[?25h:let test_status = 'tab drop 3: fail'
E[?25l:  E[?12lE[?25h:if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
E[?25l:    E[?12lE[?25h:    let test_status = 'tab drop 3: pass'
E[?25l:    E[?12lE[?25h:endif
E[?25l:  E[?12lE[?25h:tabclose
E[?25l:  E[?12lE[?25h:q
E[?25l:  E[?12lE[?25h:call append(line('$'), test_status)
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:" :drop not supported
E[?25l:  E[?12lE[?25h:call append(line('$'), 'tab drop 1: pass')
E[?25l:  E[?12lE[?25h:call append(line('$'), 'tab drop 2: pass')
E[?25l:  E[?12lE[?25h:call append(line('$'), 'tab drop 3: pass')
E[?25l:  E[?12lE[?25h:endifE[1;1HE[41LE[?25lE[1;5Hlet t:a='a'
    C tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor i in range(9) | tabnew | endforE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + t62.in  No Name]  No Name]  No Name]  No Name]  No Name]  No Name]  No Name]  No Name] E[mE[1m No NaE[1;96H E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[27mE[mE[HE[2JE[1;1HE[1m + t62.in E[mE[4mE[30mE[47m No Name]  No Name]  No Name]  No Name]  No Name]  No Name]  No Name]  No Name]  No NaE[1;96H E[1;96HXE[?25lE[mE[2;5HC tab split
    if !hasauE[4;9Hlet g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
    endif
    let t:a='b'
    C tabnew
    if !hasauE[9;9Hlet 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 !hasauE[18;9Hlet g:r+=['WinLeave', 'WinEnter']
    endif
    let w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[25;9Hlet 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 hasauE[31;9Haugroup TabDestructiveE[32;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[33;9Haugroup ENDE[34;9HC tabnext 3E[35;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[36;9Hautocmd! TabDestructive TabEnterE[37;9HC tabnewE[38;9HC tabnext 1E[39;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[40;9HC tabnext 3E[41;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[43;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[44;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[45;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[46;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[47;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[48;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:E[58;1HE[?12lE[?25h
E[?25lE[2;59rE[2;1HE[9ME[1;60rE[51;1Htab 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E[?12lE[?25hE[?25l
=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[2;1HE[2ME[1;60rE[58;1H1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmove 5E[?25lE[1;1HE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[mE[40CE[1m + t62.in E[mE[35CE[4mE[30mE[47maE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H6E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmove -2E[?25lE[1;31HE[1m + t62.in E[mE[10CE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[35CaE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H4E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmove +4E[?25lE[1;31HE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[mE[30CE[1m + t62.in E[mE[15CE[4mE[30mE[47maE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H8E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmoveE[?25lE[1;71HE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[mE[10CE[1m + t62E[1;96H E[mE[1;96HE[4mE[30mE[47mXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H10E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmove -20E[?25lE[1;1HE[1m + t62.in E[mE[80CE[4mE[30mE[47m No NaE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabmove +20E[?25lE[1;1HE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[mE[80CE[1m + t62E[1;96H E[mE[1;96HE[4mE[30mE[47mXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H10E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h3tabmoveE[?25lE[1;31HE[1m + t62.in E[mE[50CE[4mE[30mE[47m No NaE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H4E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h7tabmove 5E[?25lE[1;31HE[4mE[30mE[47m No Name]E[mE[1m E[mE[4mE[30mE[47m E[mE[10CE[1m + t62.in E[mE[35CE[4mE[30mE[47maE[1;96H E[1;96HXE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H=E[?12lE[?25htabpagenr()E[?25lE[2;59rE[59;1H
E[1;60rE[58;1H6E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet a='No error caught.'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htryE[?25l
:  E[?12lE[?25h:tabmove foo
E[?25l:  E[?12lE[?25h:catch E474
E[?25l:  E[?12lE[?25h:let a='E474 caught.'
E[?25l:  E[?12lE[?25h:endtryE[1;1HE[4LE[1;1HE[4mE[30mE[47m No Name]  No Name]  No Name]  No Name]  No Name] E[mE[1m + t62.in E[mE[4mE[30mE[47m No Name]  No Name]  No Name]  No NaE[1;96H E[1;96HXE[?25lE[mE[2;5Hlet tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
=E[?12lE[?25haE[?25lE[59;1HE474 caught.E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test autocommandsE[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabonly!E[?25lE[1;1H    let w:a='a'E[1;16HE[KE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet g:r=[]E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcommand -nargs=1 -bar C :call add(g:r, '=== ' . <q-args> . ' ===')|<args>E[?25lE[59;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction Test()E[?25l
:  E[?12lE[?25h    let hasau=has('autocmd')
E[?25l:  E[?12lE[?25h    if hasau
E[?25l:    E[?12lE[?25h        autocmd TabEnter * :call add(g:r, 'TabEnter')
E[?25l:    E[?12lE[?25h        autocmd WinEnter * :call add(g:r, 'WinEnter')
E[?25l:    E[?12lE[?25h        autocmd BufEnter * :call add(g:r, 'BufEnter')
E[?25l:    E[?12lE[?25h        autocmd TabLeave * :call add(g:r, 'TabLeave')
E[?25l:    E[?12lE[?25h        autocmd WinLeave * :call add(g:r, 'WinLeave')
E[?25l:    E[?12lE[?25h        autocmd BufLeave * :call add(g:r, 'BufLeave')
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h    let t:a='a'
E[?25l:  E[?12lE[?25h    C tab split
E[?25l:  E[?12lE[?25h    if !hasau
E[?25l:    E[?12lE[?25h        let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h    let t:a='b'
E[?25l:  E[?12lE[?25h    C tabnew
E[?25l:  E[?12lE[?25h    if !hasau
E[?25l:    E[?12lE[?25h        let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter']
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h    let t:a='c'
E[?25l:  E[?12lE[?25h    call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
E[?25l:  E[?12lE[?25h    C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)')
E[?25l:  E[?12lE[?25h    call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')))
E[?25l:  E[?12lE[?25h    let w:a='a'
E[?25l:  E[?12lE[?25h    C vsplit
E[?25l:  E[?12lE[?25h    if !hasau
E[?25l:    E[?12lE[?25h        let g:r+=['WinLeave', 'WinEnter']
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h    let w:a='a'
E[?25l:  E[?12lE[?25h    let tabn=tabpagenr()
E[?25l:  E[?12lE[?25h    let winr=range(1, winnr('$'))
E[?25l:  E[?12lE[?25h    C tabnext 1
E[?25l:  E[?12lE[?25h    if !hasau
E[?25l:    E[?12lE[?25h        let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter']
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25h    call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
E[?25l:  E[?12lE[?25h    C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
E[?25l:  E[?12lE[?25h    call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')))
E[?25l:  E[?12lE[?25h    if hasau
E[?25l:    E[?12lE[?25h        augroup TabDestructive
E[?25l:    E[?12lE[?25h            autocmd TabEnter * :C tabnext 2 | C tabclose 3
E[?25l:    E[?12lE[?25h        augroup END
E[?25l:    E[?12lE[?25h        C tabnext 3
E[?25l:    E[?12lE[?25h        let g:r+=[tabpagenr().'/'.tabpagenr('$')]
E[?25l:    E[?12lE[?25h        autocmd! TabDestructive TabEnter
E[?25l:    E[?12lE[?25h        C tabnew
E[?25l:    E[?12lE[?25h        C tabnext 1
E[?25l:    E[?12lE[?25h        autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3
E[?25l:    E[?12lE[?25h        C tabnext 3
E[?25l:    E[?12lE[?25h        let g:r+=[tabpagenr().'/'.tabpagenr('$')]
E[?25l:    E[?12lE[?25h    else
E[?25l:    E[?12lE[?25h        let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnte
E[59;96HrE[60;1H","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnt
E[59;96HeE[60;1Hr","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEn
E[59;96HtE[60;1Her","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabE
E[59;96HnE[60;1Hter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 
E[59;96H=E[60;1H==","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
E[?25l:    E[?12lE[?25h    endif
E[?25l:  E[?12lE[?25hendfunctionE[27mE[mE[HE[2JE[?25lE[1;5Hlet w:a='a'
    let tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[6;9Hlet 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 hasauE[12;9Haugroup TabDestructiveE[13;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[14;9Haugroup ENDE[15;9HC tabnext 3E[16;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[17;9Hautocmd! TabDestructive TabEnterE[18;9HC tabnewE[19;9HC tabnext 1E[20;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[21;9HC tabnext 3E[22;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[24;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[25;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[26;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[27;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[28;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[29;1H=== 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.E[?12lE[?25hE[?25l
:E[?12lE[?25hcall Test()E[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test62.in E[mE[1m + test62.in E[mE[7m                                                                      E[mE[1;96HE[4mE[30mE[47mXE[mE[2;5Hlet tabn=tabpagenr()
    let winr=range(1, winnr('$'))
    C tabnext 1
    if !hasauE[6;9Hlet 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 hasauE[12;9Haugroup TabDestructiveE[13;13Hautocmd TabEnter * :C tabnext 2 | C tabclose 3E[14;9Haugroup ENDE[15;9HC tabnext 3E[16;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]E[17;9Hautocmd! TabDestructive TabEnterE[18;9HC tabnewE[19;9HC tabnext 1E[20;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3E[21;9HC tabnext 3E[22;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    elseE[24;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","===E[25;1H= tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TTE[26;1HabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter",""E[27;1HTabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter",,E[28;1H"=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""E[29;1H=== 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.E[?12lE[?25hE[?25l
:E[?12lE[?25h$ put =g:rE[?25l68 more linesE[2;1HBufLeaveE[2;9HE[KE[3;1HBufEnterE[3;9HE[KE[4;1Ha b cE[4;7HE[KE[5;1H=== call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ===
2 4 6E[6;9HE[KE[7;1H=== vsplit ===
WinLeaveE[8;10HE[KE[9;1HWinEnterE[9;9HE[KE[10;1H=== tabnext 1 ===E[10;19HE[KE[11;1HBufLeaveE[11;9HE[KE[12;1HWinLeaveE[12;9HE[KE[13;1HTabLeaveE[13;13HE[KE[14;1HWinEnterE[14;9HE[KE[15;1HTabEnterE[15;9HE[KE[16;1HBufEnterE[16;9HE[KE[17;1Ha aE[17;9HE[KE[18;1H=== call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') ===
2 4E[19;9HE[KE[20;1H=== tabnext 3 ===E[20;18HE[KE[21;1HBufLeaveE[21;9HE[KE[22;1HWinLeaveE[22;9HE[KE[23;1HTabLeav
WinEnterE[24;9HE[KE[25;1HTabEnterE[25;9HE[KE[26;1H=== tabnext 2 ===E[26;18HE[KE[27;1H=== tabclose 3 ===E[27;19HE[KE[28;1H2/2E[28;4HE[KE[29;8Hnew ===E[29;16HE[KE[30;1HWinLeaveE[30;9HE[KE[31;1HTabLeaveE[31;9HE[KE[32;1HWinEnterE[32;9HE[KE[33;1HTabEnterE[33;9HE[KE[34;1HBufLeave
BufEnter
=== tabnext 1 ===E[36;18HE[KE[37;1HBufLeave
WinLeave
TabLeave
WinEnter
TabEnterE[41;10HE[KE[42;1HBufEnterE[42;9HE[KE[43;1H=== tabnext 3 ===E[43;18HE[KE[44;1HBufLeaveE[44;9HE[KE[45;1HWinLeaveE[45;9HE[KE[46;1HTabLeaveE[46;9HE[KE[47;1HWinEnterE[47;10HE[KE[48;1HTabEnterE[48;10HE[KE[49;1H=== tabnext 2 ===
BufLeave
WinLeave
TabLeave
WinEnter
TabEnter
=== tabnext 2 ===
=== tabclose 3 ===
BufEnter
=== tabclose 3 ===
2/2E[59;4HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^Results/,$w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 88 lines, 1038 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test63.in" 157 lines, 4784 charactersE[1;1HTest 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) ==E[16;1H= ['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''E[46;1H: 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'XXXE[47;1HX', '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 m2E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 150 lines, 4605 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H: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}, {'grouppE[23;1H': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])
:if getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 ===E[25;1H 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:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that "matcharg()" returns the correct group and pattern if a matchE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- is defined.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r = "*** Test 1: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight MyGroup1 ctermbg=redE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight MyGroup2 ctermbg=greenE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight MyGroup3 ctermbg=blueE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmatch MyGroup1 /TODO/E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h2match MyGroup2 /FIXME/E[?25lE[23;28HE[42mFIXMEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h3match MyGroup3 /XXX/E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME'] && matcharg(3) 
E[59;96H=E[60;1H= ['MyGroup3', 'XXX']E[?25lE[60;1HE[KE[60;1H:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" --- Check that "matcharg()" returns an empty list if the argument is not 1,E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- 2 or 3 (only 0 and 4 are tested).E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 2: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif matcharg(0) == [] && matcharg(4) == []E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" --- Check that "matcharg()" returns ['', ''] if a match is not defined.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 3: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmatchE[?25lE[22;57HTODOE[35CppE[23;1H'E[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h2matchE[?25lE[23;28HFIXMEE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h3matchE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', '']E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" --- Check that "matchadd()" and "getmatches()" agree on added matches andE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- that default values apply.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 4: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet m1 = matchadd("MyGroup1", "TODO")E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)E[?25lE[23;28HE[42mFIXMEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 4}, {'group
E[59;96H'E[60;1H: 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'group': 'MyGroup3', 'pattern': 'X
E[59;96HXE[60;1HX', 'priority': 60, 'id': 17}]E[?25lE[59;1HE[KE[60;1HE[KE[59;1H:  E[?12lE[?25h:  let @r .= "OK\n"E[?25l
:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" --- Check that "matchdelete()" deletes the matches defined in the previousE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- test correctly.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 5: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall matchdelete(m1)E[?25lE[22;57HTODOE[35CppE[23;1H'E[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall matchdelete(m2)E[?25lE[23;28HFIXMEE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall matchdelete(m3)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m3E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif getmatches() == []E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" --- Check that "matchdelete()" returns 0 if successful and otherwise -1.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 6: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet m = matchadd("MyGroup1", "TODO")E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet r1 = matchdelete(m)E[?25lE[22;57HTODOE[35CppE[23;1H'E[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet r2 = matchdelete(42)E[?25lE[1mE[37mE[41mE803: ID not found: 42E[mE[60;23HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif r1 == 0 && r2 == -1E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hunlet mE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet r1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet r2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that "clearmatches()" clears all matches defined by ":match" andE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- "matchadd()".E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 7: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet m1 = matchadd("MyGroup1", "TODO")E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)E[?25lE[23;28HE[42mFIXMEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmatch MyGroup1 /COFFEE/E[?25lE[1;18HE[41mCOFFEEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h2match MyGroup2 /HUMPPA/E[?25lE[2;19HE[42mHUMPPAE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h3match MyGroup3 /VIM/E[?25lE[3;19HE[44mVIME[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall clearmatches()E[?25lE[1;18HCOFFEEE[2;19HHUMPPAE[3;19HVIME[22;57HTODOE[35CppE[23;1H'E[26CFIXMEE[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif getmatches() == []E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hunlet m1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m3E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that "setmatches()" restores a list of matches saved byE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- "getmatches()" without changes. (Matches with equal priority must alsoE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- remain in the same order.)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 8: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet m1 = matchadd("MyGroup1", "TODO")E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)E[?25lE[23;28HE[42mFIXMEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmatch MyGroup1 /COFFEE/E[?25lE[1;18HE[41mCOFFEEE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h2match MyGroup2 /HUMPPA/E[?25lE[2;19HE[42mHUMPPAE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h3match MyGroup3 /VIM/E[?25lE[3;19HE[44mVIME[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet ml = getmatches()E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall clearmatches()E[?25lE[1;18HCOFFEEE[2;19HHUMPPAE[3;19HVIME[22;57HTODOE[35CppE[23;1H'E[26CFIXMEE[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall setmatches(ml)E[?25lE[1;18HE[41mCOFFEEE[mE[2;19HE[42mHUMPPAE[mE[3;19HE[44mVIME[mE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[26CE[42mFIXMEE[mE[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif getmatches() == mlE[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /E[41mCOFFEEE[m/
:2match MyGroup2 /E[42mHUMPPAE[m/
:3match MyGroup3 /E[44mVIME[m/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall clearmatches()E[?25lE[1;18HCOFFEEE[2;19HHUMPPAE[3;19HVIME[22;57HTODOE[35CppE[23;1H'E[26CFIXMEE[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet m3E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet mlE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that "setmatches()" will not add two matches with the same ID. TheE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- expected behaviour (for now) is to add the first match but not theE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- second and to return 0 (even though it is a matter of debate whetherE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- this can be considered successful behaviour).E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 9: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}, {'grou
E[59;96HpE[60;1H': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])E[?25lE[59;1HE[1mE[37mE[41mE801: ID already taken: 1E[mE[59;26HE[KE[60;1HE[KE[60;1HE[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}] && r1 =
E[59;96H=E[60;1H 0E[?25lE[60;2HE[KE[60;1H:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[5LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()
:call clearmatches()E[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[mE[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hcall clearmatches()E[?25lE[22;57HTODOE[35CppE[23;1H'E[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet r1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- Check that "setmatches()" returns 0 if successful and otherwise -1.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- (A range of valid and invalid input values are tried out to generate theE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" --- return values.)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet @r .= "*** Test 10: "E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet rs1 = setmatches([])E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 'id': 1}])E[?25lE[22;57HE[41mTODOE[mE[35CppE[23;1H'E[24;56HE[41mTODOE[mE[36C==E[25;1H E[37;58HE[41mTODOE[58;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall clearmatches()E[?25lE[22;57HTODOE[35CppE[23;1H'E[24;56HTODOE[36C==E[25;1H E[37;58HTODOE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet rf1 = setmatches(0)E[?25lE[1mE[37mE[41mE714: List requiredE[mE[60;20HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet rf2 = setmatches([0])E[?25lE[1mE[37mE[41mE474: Invalid argumentE[mE[60;23HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet rf3 = setmatches([{'wrong key': 'wrong value'}])E[?25lE[1mE[37mE[41mE474: Invalid argumentE[mE[60;23HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1E[?25l
:  E[?12lE[?25h:  let @r .= "OK\n"
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h:  let @r .= "FAILED\n"
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:match MyGroup1 /COFFEE/
:2match MyGroup2 /HUMPPA/
:3match MyGroup3 /VIM/
:let ml = getmatches()E[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hunlet rs1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet rs2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet rf1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet rf2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet rf3E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight clear MyGroup1E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight clear MyGroup2E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hhighlight clear MyGroup3E[?25lE[58;1HE[?12lE[?25h
E[?25l
10 more linesE[60;14HE[KE[1;59rE[59;1H
E[1;60rE[59;1H*** Test 1: OKE[60;1HE[KE[60;1H10 more linesE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H*** Test 2: OKE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^Results/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 11 lines, 170 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test64.in" 608 lines, 24586 charactersE[1;1HTest 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', "", ""])E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for regexp patterns without multi-byte support.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 575 lines, 24111 characters writtenE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[8;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;2Hcall 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-E[34m^[E[m:set re=0
:call Postest()
:put
o-1-E[34m^[E[m:set re=1
:call Postest()
:put
o-2-E[34m^[E[m:set re=2
:call Postest()
:put
:"
:" start and end of buffer
/\%^
yeGoE[34m^[E[mp:"
50%/\%^..
yeGoE[34m^[E[mpA ENDE[34m^[E[m:"
50%/\%$
"ayb20gg/..\%$
"bybGoE[34m^[E[m"apoE[34m^[E[m"bp:"
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:E[34;1HE[?12lE[?25h
E[?25lE[60;1H:so! XdotestE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" tl is a List of Lists with:E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    regexp patternE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    text to test the pattern onE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected match (optional)E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected submatch 1 (optional)E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected submatch 2 (optional)E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    etc.E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"  When there is no match use only the first two items.E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet tl = []E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Previously written tests """"""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'ab', 'aab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'b', 'abcdef', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc*', 'abbdef', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'c*', 'ccc', 'ccc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc*', 'abdef', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'c*', 'abdef', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\+', 'abdef']) "no matchE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"operator \|E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is orderedE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'c\?', 'ccb', 'c'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\?', 'abd', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'bc\?', 'abccd', 'bc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{1}', 'ab', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'caad', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'aba'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'abaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}', 'aaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vb{1}', 'abca', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vba{2}', 'abaa', 'baa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vba{3}', 'aabaac'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){1}', 'acb'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2}', 'abac'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,3}){3}', 'daac'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,2}){2}', 'dac'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(abc){2}', 'abcabd', ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a*', 'cc', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a*)+', 'cc', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{0,2})+', 'cc', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a*)+', '', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((a*)+)+', '', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab)*)+', '', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{1,3}', 'aab', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2,3}', 'abaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{2}|b{2}', 'abab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va*a{2}', 'a', ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va*a{2}', 'aa', 'aa' ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va*a{2}', 'bbbabcc', ])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va*b*|a*c*', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"submatchesE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a)', 'ab', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x', 'abcdef'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""" Simple tests """""""""""""""""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Search single groupsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'ab', 'aab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'ab', 'baced'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'ab', '                    ab           ', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Search multi-modifiersE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x*', 'xcd', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" empty match is goodE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x*', 'abcdoij', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" no match hereE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\+', 'abcdoin'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\=', 'x sdfoij', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is goodE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\?', 'x sdfoij', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" empty match is goodE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\?', 'abc sfoij', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" same thing as 'a?'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" same thing as 'a\{0,1}'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{3,6}', 'aa siofuh'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{0}', 'asoiuj', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2}', 'aaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj nasfvius afg aaaa 
E[59;96HsE[60;1Hfiuhuhiushf', 'aa'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" same thing as 'a*'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{,5}', 'abcd', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" leading star as normal char when \{} followsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^*\{4,}$', '***'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^*\{4,}$', '****', '****'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^*\{4,}$', '*****', '*****'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" same thing as 'a*'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" anti-greedy version of 'a?'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-3,6}', 'aa siofuh'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-0}', 'asoiuj', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-,5}', 'abcd', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" anti-greedy version of 'a*'E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test groups of characters and submatchesE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupiiiiiiiiiii', ' t
E[59;96HeE[60;1Hst2 test4443', '', 'test2', 'test4443'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obelix', 'sub1 hell
E[59;96HoE[60;1H sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz
E[59;96H'E[60;1H, 'yyxxzz'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\p*', 'aÃ¡ E[34m^IE[m', 'aÃ¡ '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test greedy-ness and lazy-nessE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa',''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a{-1,3})+','aa','aa','a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test Character classesE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test collections and character range []E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v[a]', 'abcd', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a[bcd]', 'abcd', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a[b-d]', 'acbd', 'ac'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijklmnopqrstuvwxyz']
E[59;96H)E[60;1HE[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '[[:alpha:]\+]', '6x8','x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^abc]\+','abcabcabc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-f]*','iiiiiiii',''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-f]*','abcdefgh','abcdef'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^a-f]\+','abcdefgh','gh'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[-a]', '-', '-'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-]', '-', '-'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" filename regexpE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" special charsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" collation elemE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" middle of regexpE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_f', "  \na ", "\n"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_f\+', "  \na ", "\na"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Test start/end of line, start/end of fileE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^a.', "a_\nb ", "a_"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^a.', "b a \na_"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.a$', " a\n "])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.a$', " a b\n_a", "_a"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%^a.', "a a\na", "a "])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%^a', " a \na "])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.a\%$', " a\n "])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.a\%$', " a\n_a", "_a"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Test recognition of some character classesE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[0-9]', '8', '8'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^0-9]', '8'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[0-9a-fA-F]*', '0a7', '0a7'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^0-9A-Fa-f]\+', '0a7'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-z_A-Z0-9]\+', 'aso_sfoij', 'aso_sfoij'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-z]', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[a-zA-Z]', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[A-Z]', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Tests for \z featuresE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" match ends at \zeE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'xx \ze test', 'xx '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" match starts at \zsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'aa \zsax', ' ax'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\>\zs.', 'aword. ', '.'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Tests for \@= and \& featuresE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc\@=', 'abc', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abc\@=', 'ababc', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" will never match, no matter the input textE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abcd\@=e', 'abcd'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" will never matchE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'abcd\@=e', 'any text in here ... '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs fri
E[59;96HeE[60;1Hnd'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@!...bar', 'foobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 's'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Combining different tests and featuresE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '', 'abcd', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(())', 'any possible text', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" \%u and friendsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%d32', 'yes no', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%o40', 'yes no', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%x20', 'yes no', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%u0020', 'yes no', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%U00000020', 'yes no', ' '])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""" \%[abc]E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'fobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%[bar]x', 'barxx', 'barx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%[bar]x', 'bxx', 'bx'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\%[bar]x', 'xxx', 'x'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Alternatives, must use first longest matchE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'goo\|go', 'google', 'goo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\<goo\|\<go', 'google', 'goo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\<goo\|go', 'google', 'goo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Back referencesE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddef
E[59;96HgE[60;1Hhiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo.com', 'bat'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'b
E[59;96HaE[60;1Ht'])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Look-behind with limitE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" look-behind match in front of a zero-width itemE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '1970'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@<=\>', 'foobar'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""" \@>E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(a*\)\@>a', 'aaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" TODO: BT engine does not restore submatch after failureE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" "\_" prepended negated collection matches EOLE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Requiring lots of states.E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1
E[59;96H2E[60;1H34-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"])E[?25lE[1;1HE[LE[1;2Hcall setpos('.', [0, 2, 4, 0])E[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Skip adding state twiceE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO'])E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Run the testsE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor t in tlE[?25l
:  E[?12lE[?25h:  let re = t[0]
E[?25l:  E[?12lE[?25h:  let pat = t[1]
E[?25l:  E[?12lE[?25h:  let text = t[2]
E[?25l:  E[?12lE[?25h:  let matchidx = 3
E[?25l:  E[?12lE[?25h:  for engine in [0, 1, 2]
E[?25l:    E[?12lE[?25h:    if engine == 2 && re == 0 || engine == 1 && re ==1
E[?25l:      E[?12lE[?25h:      continue
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    let &regexpengine = engine
E[?25l:    E[?12lE[?25h:    try
E[?25l:      E[?12lE[?25h:      let l = matchlist(text, pat)
E[?25l:      E[?12lE[?25h:    catch
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: 
E[59;96H\E[60;1H"' . v:exception . '\"'
E[?25l:      E[?12lE[?25h:    endtry
E[?25l:    E[?12lE[?25h:" check the match itself
E[?25l:    E[?12lE[?25h:    if len(l) == 0 && len(t) > matchidx
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expect
E[59;96HeE[60;1Hd: \"' . t[matchidx] . '\"'
E[?25l:      E[?12lE[?25h:    elseif len(l) > 0 && len(t) == matchidx
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '
E[59;96H\E[60;1H", expected no match'
E[?25l:      E[?12lE[?25h:    elseif len(t) > matchidx && l[0] != t[matchidx]
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '
E[59;96H\E[60;1H", expected: \"' . t[matchidx] . '\"'
E[?25l:      E[?12lE[?25h:    else
E[?25l:      E[?12lE[?25h:      $put ='OK ' . engine . ' - ' . pat
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    if len(l) > 0
E[?25l:      E[?12lE[?25h:"   check all the nine submatches
E[?25l:      E[?12lE[?25h:      for i in range(1, 9)
E[?25l:E[8CE[?12lE[?25h:        if len(t) <= matchidx + i
E[?25l:E[10CE[?12lE[?25h:          let e = ''
E[?25l:E[10CE[?12lE[?25h:        else
E[?25l:E[10CE[?12lE[?25h:          let e = t[matchidx + i]
E[?25l:E[10CE[?12lE[?25h:        endif
E[?25l:E[8CE[?12lE[?25h:        if l[i] != e
E[?25l:E[10CE[?12lE[?25h:          $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . 
E[59;96HiE[60;1H . ': \"' . l[i] . '\", expected: \"' . e . '\"'
E[?25l:E[10CE[?12lE[?25h:        endif
E[?25l:E[8CE[?12lE[?25h:      endfor
E[?25l:      E[?12lE[?25h:      unlet i
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:  endfor
E[?25l:  E[?12lE[?25h:endforE[1;1HE[45LE[?25lE[1;1HOK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
OK 1 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
OK 2 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
OK 0 - <\@<=span.
OK 1 - <\@<=span.
OK 2 - <\@<=span.
OK 0 - <\@1<=span.
OK 1 - <\@1<=span.
OK 2 - <\@1<=span.
OK 0 - <\@2<=span.
OK 1 - <\@2<=span.
OK 2 - <\@2<=span.
OK 0 - \(<<\)\@<=span.
OK 1 - \(<<\)\@<=span.
OK 2 - \(<<\)\@<=span.
OK 0 - \(<<\)\@1<=span.
OK 1 - \(<<\)\@1<=span.
OK 2 - \(<<\)\@1<=span.
OK 0 - \(<<\)\@2<=span.
OK 1 - \(<<\)\@2<=span.
OK 2 - \(<<\)\@2<=span.
OK 0 - \(foo\)\@<!bar.
OK 1 - \(foo\)\@<!bar.
OK 2 - \(foo\)\@<!bar.
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(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]\+E[49;18HE[KE[50;1HOK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+E[51;16HE[KE[52;1HOK 1 - \_[^a]\+E[52;16HE[KE[53;1HOK 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.*$\)\@=E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet t tl e lE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""""" multi-line tests """"""""""""""""""""E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet tl = []E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" back referencesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat
E[59;96H'E[60;1H, '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt'], ['./Dir1/Dir2/zyxwvuts.txt',
'./Dir1/Dir2/abcdefgh.bat', '', 'XX']])E[?25lE[1;1HE[2LE[1;1HOK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
OK 1 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" line breaksE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def', 'XXjk', 'lmn']
E[59;96H]E[60;1H)E[?25lE[1;1HE[LE[1;1HOK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check that \_[0-9] matching EOL does not break a following \>E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[
E[59;96H0E[60;1H-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'localnet/192.168.0.1', ''], ['', 'lo
E[59;96HcE[60;1Halnet/XX', '']])E[?25lE[1;1HE[2LE[1;1HOK 0 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}
OK 1 - \\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check a pattern with a line break and ^ and $E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Run the multi-line testsE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put ='multi-line tests'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hmulti-line testsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfor t in tlE[?25l
:  E[?12lE[?25h:  let re = t[0]
E[?25l:  E[?12lE[?25h:  let pat = t[1]
E[?25l:  E[?12lE[?25h:  let before = t[2]
E[?25l:  E[?12lE[?25h:  let after = t[3]
E[?25l:  E[?12lE[?25h:  for engine in [0, 1, 2]
E[?25l:    E[?12lE[?25h:    if engine == 2 && re == 0 || engine == 1 && re ==1
E[?25l:      E[?12lE[?25h:      continue
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    let &regexpengine = engine
E[?25l:    E[?12lE[?25h:    new
E[?25l:    E[?12lE[?25h:    call setline(1, before)
E[?25l:    E[?12lE[?25h:    exe '%s/' . pat . '/XX/'
E[?25l:    E[?12lE[?25h:    let result = getline(1, '$')
E[?25l:    E[?12lE[?25h:    q!
E[?25l:    E[?12lE[?25h:    if result != after
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . '\", expected: \
E[59;96H"E[60;1H' . string(after) . '\", got: \"' . string(result) . '\"'
E[?25l:      E[?12lE[?25h:    else
E[?25l:      E[?12lE[?25h:      $put ='OK ' . engine . ' - ' . pat
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:  endfor
E[?25l:  E[?12lE[?25h:endforE[1;1HE[22LE[?25lE[1;1HOK 1 - \(<<\)\@2<=span.
OK 2 - \(<<\)\@2<=span.
OK 0 - \(foo\)\@<!bar.
OK 1 - \(foo\)\@<!bar.
OK 2 - \(foo\)\@<!bar.
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(a*\)\@>a
OK 1 - \(a*\)\@>aE[23;10Ha*\)\@>aE[23;18HE[KE[24;9H(a*\)\@>bE[24;18HE[KE[25;9H(a*\)\@>bE[25;18HE[KE[26;9H(a*\)\@>bE[26;18HE[KE[27;9H(a*\)\@>a\|a\+E[27;23HE[KE[28;4H2 - \(a*\)\@>a\|a\+E[28;23HE[KE[29;4H0 - \_[^8-9]\+E[29;18HE[KE[30;4H1 - \_[^8-9]\+E[30;18HE[KE[31;4H2 - \_[^8-9]\+E[31;18HE[KE[32;4H0 - \_[^a]\+E[32;16HE[KE[33;4H1 - \_[^a]\+E[33;16HE[KE[34;4H2 - \_[^a]\+E[34;16HE[KE[35;4H0 - [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 testsE[41;17HE[KE[42;8H^.\(.\).\_..\1.E[43;8H^.\(.\).\_..\1.E[44;8H^.\(.\).\_..\1.E[45;9Hv.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nxE[48;15HE[KE[49;4H1 - \S.*\nxE[49;15HE[KE[50;4H2 - \S.*\nxE[50;15HE[KE[51;4H0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44E[52;1H]\_[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-44E[54;1H]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>E[54;39HE[KE[55;8H\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44E[56;1H]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>E[56;39HE[KE[57;4H0 - a\n^b$\n^cE[57;18HE[KE[58;4H1 - a\n^b$\n^cE[58;18HE[KE[59;1HOK 2 - a\n^b$\n^cE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet t tlE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check that using a pattern on two lines doesn't get messed up by usingE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" matchstr() with \ze in between.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset re=0E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^Substitute hereE[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;2H%s/\%>6l\%3c./!/g
 %s/\%>7l\%12c./?/g
 %s/\%>7l\%<9l\%>5v\%<8v./#/g
 1,$yank
 quit!
endfunc
Go-0-E[34m^[E[m:set re=0
:call Postest()
:put
o-1-E[34m^[E[m:set re=1
:call Postest()
:put
o-2-E[34m^[E[m:set re=2
:call Postest()
:put
:"
:" start and end of buffer
/\%^
yeGoE[34m^[E[mp:"
50%/\%^..
yeGoE[34m^[E[mpA ENDE[34m^[E[m:"
50%/\%$
"ayb20gg/..\%$
"bybGoE[34m^[E[m"apoE[34m^[E[m"bp:"
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="">Ta 5</Title>
<T="">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'E[?25lE[31;5H5">Ta 5</Title>
<T="7">Ac 7</Title>E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^Substitute hereE[?25lE[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h.+1,.+2yankE[?25lE[30;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 1 - \(<<\)\@2<=span.
OK 2 - \(<<\)\@2<=span.
OK 0 - \(foo\)\@<!bar.
OK 1 - \(foo\)\@<!bar.
OK 2 - \(foo\)\@<!bar.
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(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-44E[52;1H]\_[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-44E[54;1H]\_[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-44E[56;1H]\_[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E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H<T="5">Ta 5</Title>E[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check a pattern with a look beind crossing a line boundaryE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^Behind:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;2Hquit!
endfunc
Go-0-E[34m^[E[m:set re=0
:call Postest()
:put
o-1-E[34m^[E[m:set re=1
:call Postest()
:put
o-2-E[34m^[E[m:set re=2
:call Postest()
:put
:"
:" start and end of buffer
/\%^
yeGoE[34m^[E[mp:"
50%/\%^..
yeGoE[34m^[E[mpA ENDE[34m^[E[m:"
50%/\%$
"ayb20gg/..\%$
"bybGoE[34m^[E[m"apoE[34m^[E[m"bp:"
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
OK 0 - bc\{-}
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h\(<\_[xy]\+\)\@3<=startE[?25lE[36;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.yankE[?25lE[36;3HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 1 - \(foo\)\@<!bar.
OK 2 - \(foo\)\@<!bar.
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(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-44E[49;1H]\_[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-44E[51;1H]\_[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-44E[53;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hxxstart3E[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check matching Visual areaE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^Visual:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1Ho-2-E[34m^[E[m:set re=2
:call Postest()
:put
:"
:" start and end of buffer
/\%^
yeGoE[34m^[E[mp:"
50%/\%^..
yeGoE[34m^[E[mpA ENDE[34m^[E[m:"
50%/\%$
"ayb20gg/..\%$
"bybGoE[34m^[E[m"apoE[34m^[E[m"bp:"
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexe the thexethe
andaxand andaxand
oooxofor foroxooo
oooxofor foroxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
OK 0 - bc\{-}
OK 1 - bc\{-}
OK 2 - bc\{-}
OK 0 - bc\{-}\(d\)
OK 1 - bc\{-}\(d\)
OK 2 - bc\{-}\(d\)
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[mtheE[?25lE[?12lE[?25hE[?25lE[7mxe the theE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:'<,'>E[?12lE[?25hs/\%Ve/E/gE[?25l3 substitutions on 1 lineE[31;4HxE thE thEE[?12lE[?25h
E[?25laE[7mndaxand andaxand E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:'<,'>E[?12lE[?25hs/\%Va/A/gE[?25l6 substitutions on 1 lineE[32;1HAndAxAnd AndAxAndE[32;18HE[KE[32;1HE[?12lE[?25h
oooE[?25lE[?12lE[?25hE[?25lE[7mxofor foroE[?12lE[?25hE[?25lx
E[moooE[7mxofor foroE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:'<,'>E[?12lE[?25hs/\%Vo/O/gE[?25l8 substitutions on 2 linesE[33;4HxOfOr fOrOx
oooxOfOr fOrOE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^Visual/+1,/^Visual/+4yankE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m4 lines yankedE[60;15HE[KE[34;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \v\C%(<Last Changed:\s+)@<=.*$
OK 1 - \v\C%(<Last Changed:\s+)@<=.*$
OK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(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-44E[47;1H]\_[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-44E[49;1H]\_[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-44E[51;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
4 more linesE[1;59rE[59;1H
E[1;60rE[59;1HthexE thE thExetheE[60;1HE[KE[60;1H4 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check matching marksE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^Marks:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HyeGoE[34m^[E[mp:"
50%/\%^..
yeGoE[34m^[E[mpA ENDE[34m^[E[m:"
50%/\%$
"ayb20gg/..\%$
"bybGoE[34m^[E[m"apoE[34m^[E[m"bp:"
:"
:""""" Write the results """""""""""""
:/\%#=1^Results/,$wq! test.out
ENDTEST

Substitute here:
<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

Behind:
asdfasd<yyy
xxstart1
asdfasd<yy
xxxstart2
asdfasd<yy
xxstart3

Visual:
thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

Marks:
asdfSasdfsadfEasdf
asdfSas
dfsadfEasdf

Results of test64:
OK 0 - ab
OK 1 - ab
OK 2 - ab
OK 0 - b
OK 1 - b
OK 2 - b
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
OK 0 - bc\{-}
OK 1 - bc\{-}
OK 2 - bc\{-}
OK 0 - bc\{-}\(d\)
OK 1 - bc\{-}\(d\)
OK 2 - bc\{-}\(d\)
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
OK 0 - c*
OK 1 - c*
OK 2 - c*
OK 0 - bc*
OK 1 - bc*
OK 2 - bc*
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25h
E[masdfE[9CE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.-4,.+6s/.\%>'s.*\%<'e../here/E[?25lE[31;5HhereasdfE[31;13HE[KE[31;1HE[?12lE[?25h
asdf
dfsadfsadfE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.-4,.+6s/.\%>'s\_.*\%<'e../again/E[?25lE[32;59rE[59;1H
E[1;60rE[32;1HasdfagainasdfE[59;1HOK 0 - c*E[60;1HE[KE[32;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h/^Marks:/+1,/^Marks:/+3yankE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m3 lines yankedE[60;15HE[KE[32;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 2 - \v\C%(<Last Changed:\s+)@<=.*$
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=\>
OK 1 - \(foo\)\@<=\>
OK 2 - \(foo\)\@<=\>
OK 0 - \(foo\)\@<=.*
OK 1 - \(foo\)\@<=.*
OK 2 - \(foo\)\@<=.*
OK 0 - \(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-44E[42;1H]\_[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-44E[44;1H]\_[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-44E[46;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxoooE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
3 more linesE[1;59rE[59;1H
E[1;60rE[59;1HasdfhereasdfE[60;1HE[KE[60;1H3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check patterns matching cursor position.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunc! Postest()E[?25l
:  E[?12lE[?25h new
E[?25l:  E[?12lE[?25h call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t\t\tfoo", 'ababa
E[59;96HbE[60;1Hababababfoo', 'bababababababafoo', '********_'])
E[?25l:  E[?12lE[?25h call setpos('.', [0, 1, 0, 0])
E[?25l:  E[?12lE[?25h s/\%>3c.//g
E[?25l:  E[?12lE[?25h call setpos('.', [0, 2, 4, 0])
E[?25l:  E[?12lE[?25h s/\%#.*$//g
E[?25l:  E[?12lE[?25h call setpos('.', [0, 3, 0, 0])
E[?25l:  E[?12lE[?25h s/\%<3c./_/g
E[?25l:  E[?12lE[?25h %s/\%4l\%>5c./_/g
E[?25l:  E[?12lE[?25h %s/\%6l\%>25v./_/g
E[?25l:  E[?12lE[?25h %s/\%>6l\%3c./!/g
E[?25l:  E[?12lE[?25h %s/\%>7l\%12c./?/g
E[?25l:  E[?12lE[?25h %s/\%>7l\%<9l\%>5v\%<8v./#/g
E[?25l:  E[?12lE[?25h 1,$yank
E[?25l:  E[?12lE[?25h quit!
E[?25l:  E[?12lE[?25hendfuncE[1;1HE[17LE[?25lE[1;1HOK 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]\+E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hasdfagainasdf
E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-0-E[?12lE[?25hE[?25l
:E[?12lE[?25hset re=0E[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall Postest()E[?25l3 substitutions on 3 lines
9 lines yanked
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hputE[?25l9 more lines
E[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[3LE[?25lE[1;1HOK 1 - \(a*\)\@>b
OK 2 - \(a*\)\@>b
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+E[5;18HE[KE[6;4H1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+E[8;16HE[KE[9;4H1 - \_[^a]\+E[9;16HE[KE[10;4H2 - \_[^a]\+E[10;16HE[KE[11;4H0 - [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}E[13;8H[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}E[14;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=E[15;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=E[16;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.E[20;23HE[KE[21;4H0 - \v.*\/(.*)\n.*\/\1$E[21;27HE[KE[22;4H1 - \v.*\/(.*)\n.*\/\1$E[22;27HE[KE[23;4H2 - \v.*\/(.*)\n.*\/\1$E[23;27HE[KE[24;4H0 - \S.*\nxE[24;15HE[KE[25;4H1 - \S.*\nxE[25;15HE[KE[26;1HOK 2 - \S.*\nxE[26;15HE[KE[27;8H\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44E[28;1H]\_[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-44E[30;1H]\_[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-44E[32;1H]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>E[33;8Ha\n^b$\n^cE[34;8Ha\n^b$\n^cE[35;8Ha\n^b$\n^cE[36;1HE[KE[37;1H<T="5">Ta 5</Title>E[37;20HE[KE[38;1H<T="7">Ac 7</Title>E[38;20HE[KE[39;1HE[KE[40;1Hxxstart3E[40;9HE[KE[41;1HE[KE[42;1HthexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxoooE[46;1HE[KE[47;1HasdfhereasdfE[47;13HE[KE[48;1HasdfagainasdfE[49;1HE[KE[50;1H-0-
ffoE[51;4HE[KE[52;1HbobE[52;4HE[KE[53;1H__oooooE[53;8HE[KE[54;1Hkoooo__E[54;8HE[KE[55;1Hmoooooo
            E[12Cf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-1-E[?12lE[?25hE[?25l
:E[?12lE[?25hset re=1E[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall Postest()E[?25l3 substitutions on 3 lines
9 lines yanked
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hputE[?25l9 more lines
E[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[1;1HE[3LE[?25lE[1;1HOK 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}E[4;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=E[5;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=E[6;8H^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
multi-line tests
OK 0 - ^.\(.\).\_..\1.
OK 1 - ^.\(.\).\_..\1.
OK 2 - ^.\(.\).\_..\1.E[10;23HE[KE[11;4H0 - \v.*\/(.*)\n.*\/\1$E[11;27HE[KE[12;4H1 - \v.*\/(.*)\n.*\/\1$E[12;27HE[KE[13;4H2 - \v.*\/(.*)\n.*\/\1$E[13;27HE[KE[14;4H0 - \S.*\nxE[14;15HE[KE[15;4H1 - \S.*\nxE[15;15HE[KE[16;1HOK 2 - \S.*\nxE[16;15HE[KE[17;8H\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44E[18;1H]\_[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-44E[20;1H]\_[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-44E[22;1H]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>E[23;8Ha\n^b$\n^cE[24;8Ha\n^b$\n^cE[25;8Ha\n^b$\n^cE[26;1HE[KE[27;1H<T="5">Ta 5</Title>E[27;20HE[KE[28;1H<T="7">Ac 7</Title>E[28;20HE[KE[29;1HE[KE[30;1Hxxstart3E[30;9HE[KE[31;1HE[KE[32;1HthexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxoooE[36;1HE[KE[37;1HasdfhereasdfE[37;13HE[KE[38;1HasdfagainasdfE[39;1HE[KE[40;1H-0-
ffoE[41;4HE[KE[42;1HbobE[42;4HE[KE[43;1H__oooooE[43;8HE[KE[44;1Hkoooo__E[44;8HE[KE[45;1Hmoooooo
            E[12Cf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bobE[52;4HE[KE[53;1H__ooooo
koooo__
mooooooE[55;25HE[KE[56;1H                 E[7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-2-E[?12lE[?25hE[?25l
:E[?12lE[?25hset re=2E[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall Postest()E[?25l3 substitutions on 3 lines
9 lines yanked
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hputE[?25l9 more lines
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[3LE[1;1HOK 0 - \v.*\/(.*)\n.*\/\1$
OK 1 - \v.*\/(.*)\n.*\/\1$
OK 2 - \v.*\/(.*)\n.*\/\1$
OK 0 - \S.*\nxE[4;15HE[KE[5;4H1 - \S.*\nxE[5;15HE[KE[6;1HOK 2 - \S.*\nxE[6;15HE[KE[7;8H\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-44E[8;1H]\_[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-44E[10;1H]\_[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-44E[12;1H]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>E[13;8Ha\n^b$\n^cE[14;8Ha\n^b$\n^cE[15;8Ha\n^b$\n^cE[16;1HE[KE[17;1H<T="5">Ta 5</Title>E[17;20HE[KE[18;1H<T="7">Ac 7</Title>E[18;20HE[KE[19;1HE[KE[20;1Hxxstart3E[20;9HE[KE[21;1HE[KE[22;1HthexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxoooE[26;1HE[KE[27;1HasdfhereasdfE[27;13HE[KE[28;1HasdfagainasdfE[29;1HE[KE[30;1H-0-
ffoE[31;4HE[KE[32;1HbobE[32;4HE[KE[33;1H__oooooE[33;8HE[KE[34;1Hkoooo__E[34;8HE[KE[35;1Hmoooooo
            E[12Cf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bobE[42;4HE[KE[43;1H__ooooo
koooo__
mooooooE[45;25HE[KE[46;1H                 E[7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bobE[52;4HE[KE[53;1H__ooooo
koooo__
mooooooE[55;25HE[KE[56;1H                 E[7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h" start and end of bufferE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h\%^E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HTest 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', "", ""])
E[31msearch hit BOTTOM, continuing at TOPE[1;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 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-44E[8;1H]\_[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-44E[10;1H]\_[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-44E[12;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf

-0-
ffo
bob
__ooooo
koooo__
mooooooE[36;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
mooooooE[46;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
mooooooE[56;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lTestE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;4HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 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)*)+E[30;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h\%^..E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1HTest 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', "", ""])
E[31msearch hit BOTTOM, continuing at TOPE[1;1HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 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-44E[7;1H]\_[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-44E[9;1H]\_[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-44E[11;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf

-0-
ffo
bob
__ooooo
koooo__
mooooooE[35;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
mooooooE[45;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
mooooooE[55;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
TestE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lTestE[?12lE[?25hE[?25lt ENDE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;8HE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HOK 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)*)+E[30;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h\%$E[?25lE[27mE[mE[HE[2JE[1;1HOK 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-44E[6;1H]\_[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-44E[8;1H]\_[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-44E[10;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf

-0-
ffo
bob
__ooooo
koooo__
mooooooE[34;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
mooooooE[44;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
mooooooE[54;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
Test
Test ENDE[?12lE[?25hE[?25lE[27mE[mE[HE[2JE[1;1HTest 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', "", ""])E[20;1HE[?12lE[?25hE[?25lE[60;1H/E[?12lE[?25h..\%$E[?25lE[27mE[mE[HE[2JE[1;1HOK 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-44E[6;1H]\_[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-44E[8;1H]\_[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-44E[10;1H]\_[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

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo

asdfhereasdf
asdfagainasdf

-0-
ffo
bob
__ooooo
koooo__
mooooooE[34;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
mooooooE[44;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
mooooooE[54;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
Test
Test ENDE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lENE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25lEE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h""""" Write the results """""""""""""E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/\%#=1^Results/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 1018 lines, 18459 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test65.in" 95 lines, 2153 charactersE[1;1HTest 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'E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for floating point and logical operators.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 89 lines, 2067 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[34ME[1;60rE[26;1H:$put =printf('%g', round(0.456))
:$put =printf('%g', round(4.5))
:$put =printf('%g', round(-4.50))
:$put ='sqrt'
:$put =printf('%g', sqrt(100))
:echo sqrt(-4.01)
:$put ='str2float'
:$put =printf('%g', str2float('1e40'))
:$put ='trunc'
:$put =printf('%g', trunc(1.456))
:$put =printf('%g', trunc(-5.456))
:$put =printf('%g', trunc(4.000))
:$put ='float2nr'
:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'
:$put =and(127, 127)
:$put =and(127, 16)
:$put =and(127, 128)
:$put ='OR'
:$put =or(16, 7)
:$put =or(8, 7)
:$put =or(0, 123)
:$put ='XOR'
:$put =xor(127, 127)
:$put =xor(127, 16)
:$put =xor(127, 128)
:$put ='invert'
:$put =and(invert(127), 65535)
:$put =and(invert(16), 65535)
:$put =and(invert(128), 65535)
:$put =invert(1.0)
:/^Results/,$wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has("float")E[?25l
:  E[?12lE[?25h:  e! test.ok
E[?25l:  E[?12lE[?25h:  wq! test.out
E[?25l:  E[?12lE[?25h:endifE[1;1HE[3LE[?25lE[1;1H:$put =string({'x': 1.234, 'y': -2.0e20})
:$put ='list'
:$put =string([-123.4, 2.0e-20])E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =printf('%f', 123.456)E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HResults of test65:
123.456000E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%e', 123.456)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1.234560e+02E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', 123.456)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H123.456E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h" check we don't crash on division by zeroE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hecho 1.0 / 0.0E[?25linfE[60;4HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put ='+='E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H+=E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet v = 1.234E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet v += 6.543E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =printf('%g', v)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H7.777E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet v = 1.234E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet v += 5E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =printf('%g', v)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H6.234E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet a = 5E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet a += 3.333E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(a)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H8.333E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='=='E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H==E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet v = 1.234E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =v == 1.234E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =v == 1.2341E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='add-subtract'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hadd-subtractE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', 4 + 1.234)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H5.234E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', 1.234 - 8)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-6.766E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='mult-div'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hmult-divE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', 4 * 1.234)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H4.936E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', 4.0 / 1234)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0.003241E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='dict'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdictE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string({'x': 1.234, 'y': -2.0e20})E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{'x': 1.234, 'y': -2.0e20}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='list'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlistE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string([-123.4, 2.0e-20])E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H[-123.4, 2.0e-20]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='abs'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HabsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%d', abs(1456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1456E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%d', abs(-4))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H4E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%d', abs([1, 2, 3]))E[?25lE[1mE[37mE[41mE745: Using a List as a NumberE[mE[60;32HE[KE[1;59rE[59;1H
E[1;60rE[59;1H-1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', abs(14.56))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H14.56E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', abs(-54.32))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H54.32E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='ceil'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HceilE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', ceil(1.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H2.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', ceil(-5.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-5.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', ceil(-4.000))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-4.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='floor'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HfloorE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', floor(1.856))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', floor(-5.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-6.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', floor(4.0))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H4.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='log10'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hlog10E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', log10(1000))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H3.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', log10(0.01000))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-2.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='pow'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HpowE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', pow(3, 3.0))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H27.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', pow(2, 16))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H65536.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='round'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HroundE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', round(0.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', round(4.5))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H5.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', round(-4.50))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-5.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='sqrt'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HsqrtE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', sqrt(100))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H10.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hecho sqrt(-4.01)E[?25l-nanE[60;5HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put ='str2float'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hstr2floatE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', str2float('1e40'))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1.0e40E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='trunc'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HtruncE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', trunc(1.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', trunc(-5.456))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-5.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =printf('%g', trunc(4.000))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H4.0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='float2nr'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hfloat2nrE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =float2nr(123.456)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H123E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =float2nr(-123.456)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H-123E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='AND'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HANDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(127, 127)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H127E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(127, 16)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H16E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(127, 128)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='OR'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HORE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =or(16, 7)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H23E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =or(8, 7)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H15E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =or(0, 123)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H123E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='XOR'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HXORE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =xor(127, 127)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =xor(127, 16)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H111E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =xor(127, 128)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H255E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='invert'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HinvertE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(invert(127), 65535)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H65408E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(invert(16), 65535)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H65519E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =and(invert(128), 65535)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H65407E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =invert(1.0)E[?25lE[1mE[37mE[41mE805: Using a Float as a NumberE[1;59rE[mE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^Results/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 73 lines, 430 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test66.in" 33 lines, 509 charactersE[2;1HTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
feE[34m^VE[m4jRE[34m^[E[mugvr1:'<,'>w! test.out
/^abcdefgh
E[34m^VE[m4jI    E[34m^[E[mj<<11|D
7|aE[13CE[34m^[E[m
7|aE[16CE[34m^[E[m
7|aE[13CE[34m^[E[m4k13|E[34m^VE[m4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
E[34m^VE[m4kI    E[34m^[E[mj<<
7|aE[13CE[34m^[E[m
7|aE[37CE[34m^[E[m
7|aE[21CE[34m^[E[m4k13|E[34m^VE[m4j3<
:$-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
E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 16 lines, 234 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[21;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^oneE[?25lE[23;1HE[?12lE[?25honE[?25lE[?12lE[?25hE[?25lE[7me
E[monE[7me
E[monE[7me
E[monE[7me
E[monE[?12lE[?25hE[?25lE[60;1H4 fewer linesE[23;59rE[23;1HE[4ME[1;60rE[23;1HE[KE[56;1HE[1mE[34m~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[60;1H4 fewer linesE[23;1HE[?12lE[?25hE[?25lE[60;3Hmore lines; before #1  0 seconds agoE[24;59rE[24;1HE[4LE[1;60rE[23;1Hone two three
one two three
one two three
one two three
one two threeE[60;1HE[KE[24;1HE[?12lE[?25hE[?25lE[23;3HE[7me
E[monE[7me
E[monE[7me
E[monE[7me
E[monE[?12lE[?25hE[?25lE[23;3H1
on1
on1
on1
on1E[23;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h'<,'>w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 5 lines, 70 characters writtenE[23;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^abcdefghE[?25lE[29;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[7ma
a
a
a
E[?12lE[?25hE[?25lE[mE[29;1Ha
a
a
aE[29;1H    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyzE[29;1HE[?12lE[?25h
E[?25labcdefghijklmnopqrstuvwxyzE[30;27HE[KE[30;1HE[?12lE[?25hE[10CE[?25lE[30;11HE[KE[30;10HE[?12lE[?25hE[31;10HE[?25lc         defghijklmnopqrstuvwxyzE[31;16HE[?12lE[?25hE[32;16HE[32;7HE[?25lc            defghijklmnopqrstuvwxyzE[32;19HE[?12lE[?25hE[33;19HE[33;7HE[?25lc         defghijklmnopqrstuvwxyzE[33;16HE[?12lE[?25hE[29;16HE[?25lE[?12lE[?25hE[?25lE[7miE[31;13H E[32;13H E[33;13HE[?12lE[?25hE[?25lE[mE[60;1H5 lines <ed 1 timeE[29;13HiE[31;13HdefghijklmnopqrstuvwxyzE[31;36HE[KE[32;13HdefghijklmnopqrstuvwxyzE[32;36HE[KE[33;13HdefghijklmnopqrstuvwxyzE[33;36HE[KE[29;13HE[?12lE[?25hE[30;10HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-5,$w >> test.outE[?25l"test.out"E[60;12HE[KE[60;12H6 lines, 151 characters appendedE[30;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-4,$s/\s\+//gE[?25l7 substitutions on 4 linesE[29;1HabcdefghijklmnopqrstuvwxyzE[29;27HE[KE[31;1HabcdefghijklmnopqrstuvwxyzE[31;27HE[KE[32;1HabcdefghijklmnopqrstuvwxyzE[32;27HE[KE[33;1HabcdefghijklmnopqrstuvwxyzE[33;27HE[KE[33;1HE[?12lE[?25hE[?25lE[?12lE[?25hE[?25lE[30;1HE[7ma
a
a
aE[29;1HE[?12lE[?25hE[?25lE[m
a
a
a
aE[29;1H    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyzE[29;1HE[?12lE[?25h
E[?25labcdefghijE[30;11HE[KE[30;1HE[?12lE[?25h
    abE[?25lc         defghijklmnopqrstuvwxyzE[31;16HE[?12lE[?25hE[32;16HE[32;7HE[?25lc                       E[10CdefghijklmnopqrstuvwxyzE[32;40HE[?12lE[?25hE[33;30HE[33;7HE[?25lc                 defghijklmnopqrstuvwxyzE[33;24HE[?12lE[?25hE[29;24HE[29;13HE[?25lE[?12lE[?25hE[?25lE[7miE[31;13H E[32;13H E[33;13HE[?12lE[?25hE[?25lE[mE[60;1H5 lines <ed 3 timesE[60;20HE[KE[29;13HiE[31;13HdefghijklmnopqrstuvwxyzE[31;36HE[KE[32;13H    defghijklmnopqrstuvwxyzE[32;41HE[KE[33;13HdefghijklmnopqrstuvwxyzE[33;36HE[KE[29;13HE[?12lE[?25hE[30;10HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$-4,$w >> test.outE[?25l"test.out"E[60;12HE[KE[60;12H5 lines, 147 characters appendedE[30;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test67.in" 33 lines, 1109 charactersE[1;1HTest that groups and patterns are tested correctly when calling exists() for
autocommands.

STARTTEST
:so small.vim
:let results=[]
:augroup auexists
:augroup END
:call add(results, "##BufEnter: " . exists("##BufEnter"))
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:au BufEnter * let g:entered=1
:call add(results, "#BufEnter: " . exists("#BufEnter"))
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:augroup auexists
:au BufEnter * let g:entered=1
:augroup END
:call add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:au BufEnter *.test let g:entered=1
:call add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))
:edit testfile.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:au BufEnter <buffer> let g:entered=1
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:edit testfile2.test
:call add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))
:e test.out
:call append(0, results)
:$d
:w
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest that groups and patterns are tested correctly when calling exists() forE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 27 lines, 998 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet results=[]E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25haugroup auexistsE[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25haugroup ENDE[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "##BufEnter: " . exists("##BufEnter"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter: " . exists("#BufEnter"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufEnter * let g:entered=1E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter: " . exists("#BufEnter"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25haugroup auexistsE[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufEnter * let g:entered=1E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25haugroup ENDE[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufEnter *.test let g:entered=1E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))E[?25lE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hedit testfile.testE[?25l"testfile.test" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hau BufEnter <buffer> let g:entered=1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hedit testfile2.testE[?25l"testfile2.test" [New File]E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he test.outE[?25l"test.out" [New File]E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, results)E[?25lE[1;59rE[1;1HE[10LE[1;60rE[1;1H##BufEnter: 1
#BufEnter: 0
#BufEnter: 1
#auexists#BufEnter: 0
#auexists#BufEnter: 1
#BufEnter#*.test: 0
#BufEnter#*.test: 1
#BufEnter#<buffer>: 0
#BufEnter#<buffer>: 1
#BufEnter#<buffer>: 0E[60;1HE[KE[11;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$dE[?25lE[11;1HE[1mE[34m~                                                                                               E[10;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" [New File] 10 lines, 190 characters writtenE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test68.in" 117 lines, 930 charactersE[1;1HTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa bE[34m^[E[m
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllabE[34m^[E[m
ENDTEST

{
a  b

a
}

STARTTEST
/^{/+1
:set tw=3 fo=t
gqgqo
a E[34m^V^A^[E[m
ENDTEST

{
a E[34m^AE[m
}

STARTTEST
/^{/+1
:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a bE[34m^[E[m
ENDTEST

{
a b
#a b
}

STARTTEST
/^{/+1
:set tw=5 fo=tcn comments=:#
A bE[34m^[E[mjA bE[34m^[E[m
ENDTEST

{E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for text formatting.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 4 lines, 48 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[10;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[11;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noai tw=2 fo=tE[?25lE[13;1HE[?12lE[?25hE[?25la
bE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[17;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 38 characters writtenE[18;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[18;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[21;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[22;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[24;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ai tw=2 fo=twE[?25lE[24;1HE[?12lE[?25hE[?25lE[25;59rE[25;1HE[LE[1;60rE[24;4HE[KE[25;1HbE[60;1HE[KE[25;1HE[?12lE[?25h

a E[?25lE[28;59rE[28;1HE[LE[1;60rE[28;1HbE[?12lE[?25h
E[?25lE[60;1H/^STARTTESTE[31;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H4 lines, 34 characters writtenE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[32;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[36;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[37;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=3 fo=tE[?25lE[39;1HE[?12lE[?25hE[?25lE[40;59rE[40;1HE[LE[1;60rE[39;3HE[KE[40;1HE[34m^AE[mE[60;1HE[KE[40;1HE[?12lE[?25h

  E[?25lE[41;59rE[41;1HE[3LE[1;60rE[42;1Ha
E[34m^AE[?12lE[?25h
E[?25lE[60;1HE[m/^STARTTESTE[46;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5 lines, 58 characters writtenE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[47;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=2 fo=tcq1 comments=:#E[?25lE[55;1HE[?12lE[?25h
E[?25lE[57;1HE[KE[58;1Ha b
#a bE[59;5HE[KE[59;4HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 46 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set tw=5 fo=tcn comments=:#
A bE[34m^[E[mjA bE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
  1 aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=5 fo=tcn comments=:#E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;5HbE[60;1HE[KE[59;5HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H# 1 aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H#   bE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 40 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set tw=5 fo=qn comments=:#
gwap
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
# 1 a bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=5 fo=qn comments=:#E[?25lE[59;1HE[?12lE[?25hE[?25lE[59;7HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H#   bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1H}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 40 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set tw=5 fo=q2 comments=:#
gwap
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
# xE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=5 fo=q2 comments=:#E[?25lE[59;1HE[?12lE[?25hE[?25l# x aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H#   bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1H}

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+2E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 26 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set tw& fo=a
I^^E[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+2E[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;1H{
   1aa
   2bbE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw& fo=aE[?25lE[59;1HE[?12lE[?25hE[?25lE[57;3H1aa ^^2bb }E[58;4HE[KE[59;1HSTARTTESTE[57;8HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H/^STARTTESTE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/mno pqr/E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 69 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yzE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hmno pqr/E[?25lE[60;9HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H/* abc def ghi jkl
 *    mno pqr stuE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
:E[?12lE[?25hsetl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/E[?25lE[59;7HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2H*    vwx yzE[60;1HE[KE[59;12HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;2H*/E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^#/E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 47 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:setl tw=12 fo=tqnc comments=:#
A foobarE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^#/E[?25lE[60;4HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1H# 1 xxxxxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hsetl tw=12 fo=tqnc comments=:#E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H#   foobarE[60;1HE[KE[59;10HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[59;1H
E[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:g/^STARTTEST/.,/^ENDTEST/dE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2 lines, 56 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[59;19HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:1;/^Results/,$wq! test.outE[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hg/^STARTTEST/.,/^ENDTEST/dE[?25l58 fewer linesE[60;15HE[KE[1;1H#   foobarE[2;5HE[KE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1;/^Results/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 68 lines, 254 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test69.in" 159 lines, 1385 charactersE[1;1HTest 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
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼ºE[34m^[E[m
ENDTEST

{
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º
}

STARTTEST
/^{/+1
:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹E[34m^[E[m
ENDTEST

{
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
}

STARTTEST
/^{/+1
:set tw=2 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
aï¼¸
abï¼¸
abcï¼¸
abï¼¸ c
abï¼¸ï¼¹E[34m^[E[m
ENDTESTE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for multi-byte text formatting.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 2 lines, 34 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[8;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset encoding=utf-8E[?25lE[27mE[mE[HE[2JE[1;1HTest 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
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼ºE[34m^[E[m
ENDTEST

{
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º
}

STARTTEST
/^{/+1
:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹E[34m^[E[m
ENDTEST

{
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
}

STARTTEST
/^{/+1
:set tw=2 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
aï¼¸
abï¼¸
abcï¼¸
abï¼¸ c
abï¼¸ï¼¹E[34m^[E[m
ENDTESTE[9;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[12;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5 lines, 58 characters writtenE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[13;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[18;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[21;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=2 fo=tE[?25lE[21;1HE[?12lE[?25h
E[?25lE[23;59rE[23;1HE[LE[1;60rE[22;5HE[KE[23;1Hï¼¸ï¼¹ï¼ºE[60;1HE[KE[23;1HE[?12lE[?25hE[?25lE[24;59rE[24;1HE[2LE[1;60rE[25;1HE[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lï¼¹E[?12lE[?25hE[?25lE[26;59rE[26;1HE[LE[1;60rE[25;5Hï¼º
abc E[?12lE[?25hE[?25lE[27;59rE[27;1HE[LE[1;60rE[27;1Hï¼¸E[?12lE[?25hE[?25lï¼¹E[?12lE[?25hE[?25lï¼ºE[?12lE[?25h
E[?25lE[60;1H/^STARTTESTE[30;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H8 lines, 80 characters writtenE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[31;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset tw=1 fo=tmE[?25lE[42;1HE[?12lE[?25h
E[?25lE[44;59rE[44;1HE[LE[1;60rE[43;3HE[KE[44;1HaE[60;1HE[KE[44;1HE[?12lE[?25h
E[?25lE[46;59rE[46;1HE[LE[1;60rE[45;4HE[KE[46;1HaE[?12lE[?25h
E[?25lE[48;59rE[48;1HE[LE[1;60rE[47;3HE[KE[48;1Hï¼¹E[?12lE[?25h
E[?25lE[50;59rE[50;1HE[LE[1;60rE[49;4HE[KE[50;1Hï¼¹E[?12lE[?25hE[?25lE[51;59rE[51;1HE[2LE[1;60rE[52;1HE[?12lE[?25hE[?25lE[53;59rE[53;1HE[LE[1;60rE[52;1Hï¼¸
E[?12lE[?25hE[?25lE[54;59rE[54;1HE[2LE[1;60rE[53;1Hï¼¸
a
E[?12lE[?25hE[?25lE[56;59rE[56;1HE[2LE[1;60rE[55;1Hï¼¸
a
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25l
ï¼¹
E[?12lE[?25hE[?25lï¼¸ E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H13 lines, 140 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[13ME[1;60rE[47;1H:set tw=2 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
aï¼¸
abï¼¸
abcï¼¸
abï¼¸ c
abï¼¸ï¼¹E[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
ï¼¸E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=2 fo=tmE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3HE[KE[59;1HaE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;4HE[KE[59;1HaE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3HE[KE[59;1Hï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ ï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;4HE[KE[59;1Hï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Haï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1Hï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Habï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3HE[KE[59;1Hï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Habcï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;4HE[KE[59;1Hï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Habï¼¸ cE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[57;3HE[KE[58;1Hï¼¸
cE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Habï¼¸ï¼¹E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[57;3HE[KE[58;1Hï¼¸
ï¼¹E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;1Hï¼¸
E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[57;1Hï¼¸
a
E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[57;1Hï¼¸
a
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¹
E[?12lE[?25hE[?25lï¼¸ E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¹
aE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸
abE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸
abcE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸
abE[?12lE[?25hE[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;1Hï¼¸
c
abE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5 lines, 47 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[5ME[1;60rE[55;1H:set ai tw=2 fo=tm
gqgqjgqgqo
ï¼¸
ï¼¸aE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
  ï¼¸E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset ai tw=2 fo=tmE[?25lE[59;1HE[?12lE[?25h  E[?25lE[1;59rE[59;1H
E[1;60rE[59;3Hï¼¸aE[60;1HE[KE[59;3HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;5HE[KE[59;3HaE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;3HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸
  E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸
  aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5 lines, 53 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[5ME[1;60rE[55;1H:set noai tw=2 fo=tm
gqgqjgqgqo
  ï¼¸
  ï¼¸aE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
  ï¼¸E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset noai tw=2 fo=tmE[?25lE[59;1HE[?12lE[?25h  E[?25lE[1;59rE[59;1H
E[1;60rE[59;3Hï¼¸aE[60;1HE[KE[59;3HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;5HE[KE[59;1HaE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;3HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸
  E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸
aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H13 lines, 169 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[13ME[1;60rE[47;1H:set tw=2 fo=cqm comments=n:ï¼¸
gqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸aï¼¹
ï¼¸ï¼¹
ï¼¸ï¼¹ï¼º
ï¼¸ ï¼¹
ï¼¸ ï¼¹ï¼º
ï¼¸ï¼¸
ï¼¸ï¼¸a
ï¼¸ï¼¸ï¼¹E[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
ï¼¸E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=2 fo=cqm comments=n:ï¼¸E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸aï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;4HE[KE[59;1Hï¼¸ï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¹ï¼ºE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;5HE[KE[59;1Hï¼¸ï¼ºE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ ï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ ï¼¹ï¼ºE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;6HE[KE[59;1Hï¼¸ ï¼ºE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¸aE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï¼¸ï¼¸ï¼¹E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;1Hï¼¸
E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;1Hï¼¸a
E[?12lE[?25hE[?25lï¼¸aE[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸ï¼¹
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¹
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lï¼¹E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸ï¼º
E[?12lE[?25hE[?25lï¼¸ E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;4Hï¼¹
E[?12lE[?25hE[?25lï¼¸ E[?12lE[?25hE[?25lï¼¹E[?12lE[?25hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hï¼¸ ï¼º
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;3Hï¼¸a
E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lï¼¸E[?12lE[?25hE[?25lï¼¹E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 30 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set tw=2 fo=tm
Rï¼¸aE[34m^[E[m
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset tw=2 fo=tmE[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;1Hï¼¸
aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^{/+1E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H3 lines, 34 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[57;1H:set mps+=E[34m^VE[mu2018:E[34m^VE[mu2019
d%
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^{/+1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1H{
â€˜ two three â€™ fourE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset mps+=^â€˜:^â€™E[?25lE[59;1HE[?12lE[?25hE[?25l fourE[59;7HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[59;1H
E[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H/^ra testE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2 lines, 16 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1HjVjra
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^ra testE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hra testE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hï½bbï½E[?12lE[?25hE[?25lE[2CE[7mbbï½ E[?12lE[?25hE[?25lE[1;59rE[mE[59;1H
E[1;60rE[58;1HE[7mï½E[m
ï½E[7mï½b E[?12lE[?25hE[?25lE[mE[58;1HaaaaE[58;5HE[KE[59;1HaaaE[7m E[mE[59;4HE[KE[58;1HE[?12lE[?25h
E[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:g/^STARTTEST/.,/^ENDTEST/dE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2 lines, 56 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[59;19HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:1;/^Results/,$wq! test.outE[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hg/^STARTTEST/.,/^ENDTEST/dE[?25l83 fewer linesE[60;15HE[KE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1;/^Results/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 151 lines, 604 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test70.in" 63 lines, 1501 charactersE[1;1HSmoke 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!
ENDTESTE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HSmoke test for MzScheme interface and mzeval() functionE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 55 lines, 1398 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mzscheme.vimE[?25l"test.ok" E[60;11HE[KE[60;11H6 lines, 94 characters
"test.out" [New File] 6 lines, 94 characters written
E[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test71.in" 67 lines, 1209 charactersE[1;1HTest 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
barbarE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for encryption.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 60 lines, 1082 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[7ME[1;60rE[53;1H: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!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=latin1E[?25lE[27mE[mE[HE[2JE[1;1H: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
E[?12lE[?25hE[?25l
:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hr test71a.inE[?25l"test71a.in" 14 lines, 314 charactersE[2;1HE[KE[3;1Hstart of textE[3;14HE[KE[4;1H01234567890123456789012345678901234567E[4;39HE[KE[5;1Hline 2  foo bar blahE[5;21HE[KE[6;1Hline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[6;38HE[KE[7;1Hend of textE[7;12HE[KE[8;1HE[KE[9;1Hstart of cm=zip bytesE[9;22HE[KE[10;1HVimCrypt~01!E[34m^F^\E[mlV'Þ}MgE[34m| E[mê£V©çE[34m^GE[mE#3E[34m~NE[m2UéE[34m~WE[mE[10;43HE[KE[11;1Hend of cm=zip bytesE[11;20HE[KE[12;1HE[KE[13;1Hstart of cm=blowfish bytesE[13;27HE[KE[14;1HVimCrypt~02!k)¾E[34m^W~WE[m#E[34m^VE[mÝSE[34m~\E[mõ=ºàÈ#¥M´E[34m~FE[mJÃAÍ¥M´E[34m~FE[m!E[34m~@^U~[E[mõE[34m^OE[máÒE[34m^Y~B^V~XE[m÷E[34m^ME[mÚE[14;71HE[KE[15;1Hend of cm=blowfish bytesE[15;25HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of text/+1E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet text_lines = getline('.', line('.') + 2)E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of cm=zip bytes/+1E[?25lE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cm0_bytes = getline('.', '.')E[?25lE[10;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start of cm=blowfish bytes/+1E[?25lE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cm1_bytes = getline('.', '.')E[?25lE[14;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, text_lines)E[?25lE[1;59rE[1;1HE[3LE[1;60rE[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[60;1HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$dE[?25lE[4;1HE[1mE[34m~                                                                                               E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hXE[?25lE[60;1HE[KE[60;1HEnter encryption key: E[?12lE[?25h******
E[?25lEnter same key again: E[?12lE[?25h******
E[1;1HE[2LE[?25lE[1;1H01234567890123456789012345678901234567
line 2  foo bar blahE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[New File][crypted] 3 lines, 98 characters writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [crypted] 3 lines, 98 charactersE[1;1HE[2LE[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[3;38HE[KE[60;1HE[KE[60;1H"Xtestfile" [crypted] 3 lines, 98 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cm0_read_back = getline('.', '$')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset key=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cryptmethod=blowfishE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" If the blowfish test fails 'cryptmethod' will be 'zip' now.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%s/^/\=&cryptmethod == 'blowfish' ? "OK " : "blowfish test failed "/E[?25l3 substitutions on 3 linesE[60;27HE[KE[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 E[27CxxxE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hXE[?25lE[60;1HE[KE[60;1HEnter encryption key: E[?12lE[?25h******
E[?25lEnter same key again: E[?12lE[?25h******
E[1;1HE[2LE[?25lE[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blahE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[blowfish] 3 lines, 107 characters writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [blowfish] 3 lines, 107 charactersE[1;1HE[2LE[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[3;41HE[KE[60;1HE[KE[60;1H"Xtestfile" [blowfish] 3 lines, 107 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cm1_read_back = getline('.', '$')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset bin noeol key=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, cm0_bytes)E[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1HVimCrypt~01!E[34m^F^\E[mlV'Þ}MgE[34m| E[mê£V©çE[34m^GE[mE#3E[34m~NE[m2UéE[34m~WE[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$dE[?25lE[2;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=latin1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[Incomplete last line] 1 line, 36 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobinE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [crypted] 2 lines, 24 charactersE[1;1HE[2LE[1;1H1234567890
aábbccddeëffE[60;1HE[KE[60;1H"Xtestfile" [crypted] 2 lines, 24 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cm0_read_bin = getline('.', '$')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset bin noeol key=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, cm1_bytes)E[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1HVimCrypt~02!k)¾E[34m^W~WE[m#E[34m^VE[mÝSE[34m~\E[mõ=ºàÈ#¥M´E[34m~FE[mJÃAÍ¥M´E[34m~FE[m!E[34m~@^U~[E[mõE[34m^OE[máÒE[34m^Y~B^V~XE[m÷E[34m^ME[mÚE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$dE[?25lE[2;1HE[1mE[34m~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset fenc=latin1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H[Incomplete last line] 1 line, 55 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25lE[1;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobinE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [blowfish] 2 lines, 27 charactersE[1;1HE[2LE[1;1Hasdfasdfasdf
0001112223333E[60;1HE[KE[60;1H"Xtestfile" [blowfish] 2 lines, 27 charactersE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, cm0_read_bin)E[?25lE[1;59rE[1;1HE[2LE[1;60rE[1;1H1234567890
aábbccddeëffE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall append(0, cm1_read_back)E[?25lE[1;59rE[1;1HE[3LE[1;60rE[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[60;1HE[KE[6;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall append(0, cm0_read_back)E[?25lE[1;59rE[1;1HE[3LE[1;60rE[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxE[60;1HE[KE[9;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset key= fenc=latin1E[?25lE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 10 lines, 256 characters writtenE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test72.in" 115 lines, 1707 charactersE[1;1HTests 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 lineE[34m^[E[m: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
tenE[34m^[E[m: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
E[34m^[E[mu:e! Xtestfile
:set undofile ul=100
uuuuuu:w >>test.outE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for undo file.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 104 lines, 1510 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[51ME[1;60rE[9;1H:" And now with encryption, cryptmethod=zip
:e! Xtestfile
:set undofile cm=zip
ggdGimonday
tuesday
wednesday
thursday
fridayE[34m^[E[m: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
junE[34m^[E[m:set ul=100
kk0ifoo E[34m^[E[m:set ul=100
dd:set ul=100
ibar E[34m^[E[m: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!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test 'undofile': first a simple one-line change.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfo visualbellE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100 undofile nomoreE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestfileE[?25l"Xtestfile" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1Hthis is one lineE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[1;16HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/one/ONE/E[?25lE[1;9HONEE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset ul=100E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtestfile" [New] 1L, 17C writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25l"test72.in" 115L, 1707CE[1;1HE[34m^[E[mu:e! Xtestfil
:set undofile ul=100E[2;21HE[KE[3;1Huuuuuu:w >>test.outE[3;20HE[KE[4;1H:" And now with encryption, cryptmethod=zipE[4;44HE[KE[5;1H:e! XtestfileE[5;14HE[KE[6;1H:set undofile cm=zipE[6;21HE[KE[7;1HggdGimondayE[7;12HE[KE[8;1HtuesdayE[8;8HE[KE[9;1HwednesdayE[9;10HE[KE[10;1HthursdayE[10;9HE[KE[11;1HfridayE[34m^[E[m:set ul=100E[11;20HE[KE[12;1Hkkkdd:set ul=100E[12;17HE[KE[13;1Hdd:set ul=100E[13;14HE[KE[14;1Hdd:set ul=100E[14;14HE[KE[15;1H:XE[15;3HE[KE[16;1HfoobarE[16;7HE[KE[17;1HfoobarE[17;7HE[KE[18;1H:w!E[18;4HE[KE[19;1H:bwipe!E[19;8HE[KE[20;1H:e XtestfileE[20;13HE[KE[21;1HfoobarE[21;7HE[KE[22;1H:set key=E[22;10HE[KE[23;1Huu:w >>test.outE[23;16HE[KE[24;1H:"E[24;3HE[KE[25;1H:"E[25;3HE[KE[26;1H:" With encryption, cryptmethod=blowfishE[26;41HE[KE[27;1H:e! XtestfileE[27;14HE[KE[28;1H:set undofile cm=blowfishE[28;26HE[KE[29;1HggdGijanE[29;9HE[KE[30;1HfebE[30;4HE[KE[31;1HmarE[31;4HE[KE[32;1HaprE[32;4HE[KE[33;1HjunE[34m^[E[m:set ul=100E[33;17HE[KE[34;1Hkk0ifoo E[34m^[E[m:set ul=100E[34;22HE[KE[35;1Hdd:set ul=100E[35;14HE[KE[36;1Hibar E[34m^[E[m:set ul=100E[36;19HE[KE[37;1H:XE[37;3HE[KE[38;1HfoobarE[38;7HE[KE[39;1HfoobarE[39;7HE[KE[40;1H:w!E[40;4HE[KE[41;1H:bwipe!E[41;8HE[KE[42;1H:e XtestfileE[42;13HE[KE[43;1HfoobarE[43;7HE[KE[44;1H:set key=E[44;10HE[KE[45;1H/barE[45;5HE[KE[46;1H:.w >>test.outE[46;15HE[KE[47;1Hu:.w >>test.outE[47;16HE[KE[48;1Hu:.w >>test.outE[48;16HE[KE[49;1Hu:.w >>test.outE[49;16HE[KE[50;1H:"E[50;3HE[KE[51;1H:" Rename the undo file so that it gets cleaned up.E[51;52HE[KE[52;1H:call rename(".Xtestfile.un~", "Xtestundo")E[52;44HE[KE[53;1H:qa!E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1H1111 -----E[56;11HE[KE[57;1H2222 -----E[57;11HE[KE[58;1HE[KE[59;1H123456789E[59;10HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" 1L, 17CE[1;1Hthis is ONE lin
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1H1 change; before #2  0 seconds agoE[1;9HoneE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 1L, 17C writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test 'undofile', change in original file fails checkE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noundofileE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H1L, 17CE[1;9HONEE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/line/Line/E[?25lE[1;13HLE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtestfile" 1L, 17C writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset undofileE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25l"test72.in" 115L, 1707CE[1;1HE[34m^[E[mu:e! Xtestfil
:set undofile ul=100E[2;21HE[KE[3;1Huuuuuu:w >>test.outE[3;20HE[KE[4;1H:" And now with encryption, cryptmethod=zipE[4;44HE[KE[5;1H:e! XtestfileE[5;14HE[KE[6;1H:set undofile cm=zipE[6;21HE[KE[7;1HggdGimondayE[7;12HE[KE[8;1HtuesdayE[8;8HE[KE[9;1HwednesdayE[9;10HE[KE[10;1HthursdayE[10;9HE[KE[11;1HfridayE[34m^[E[m:set ul=100E[11;20HE[KE[12;1Hkkkdd:set ul=100E[12;17HE[KE[13;1Hdd:set ul=100E[13;14HE[KE[14;1Hdd:set ul=100E[14;14HE[KE[15;1H:XE[15;3HE[KE[16;1HfoobarE[16;7HE[KE[17;1HfoobarE[17;7HE[KE[18;1H:w!E[18;4HE[KE[19;1H:bwipe!E[19;8HE[KE[20;1H:e XtestfileE[20;13HE[KE[21;1HfoobarE[21;7HE[KE[22;1H:set key=E[22;10HE[KE[23;1Huu:w >>test.outE[23;16HE[KE[24;1H:"E[24;3HE[KE[25;1H:"E[25;3HE[KE[26;1H:" With encryption, cryptmethod=blowfishE[26;41HE[KE[27;1H:e! XtestfileE[27;14HE[KE[28;1H:set undofile cm=blowfishE[28;26HE[KE[29;1HggdGijanE[29;9HE[KE[30;1HfebE[30;4HE[KE[31;1HmarE[31;4HE[KE[32;1HaprE[32;4HE[KE[33;1HjunE[34m^[E[m:set ul=100E[33;17HE[KE[34;1Hkk0ifoo E[34m^[E[m:set ul=100E[34;22HE[KE[35;1Hdd:set ul=100E[35;14HE[KE[36;1Hibar E[34m^[E[m:set ul=100E[36;19HE[KE[37;1H:XE[37;3HE[KE[38;1HfoobarE[38;7HE[KE[39;1HfoobarE[39;7HE[KE[40;1H:w!E[40;4HE[KE[41;1H:bwipe!E[41;8HE[KE[42;1H:e XtestfileE[42;13HE[KE[43;1HfoobarE[43;7HE[KE[44;1H:set key=E[44;10HE[KE[45;1H/barE[45;5HE[KE[46;1H:.w >>test.outE[46;15HE[KE[47;1Hu:.w >>test.outE[47;16HE[KE[48;1Hu:.w >>test.outE[48;16HE[KE[49;1Hu:.w >>test.outE[49;16HE[KE[50;1H:"E[50;3HE[KE[51;1H:" Rename the undo file so that it gets cleaned up.E[51;52HE[KE[52;1H:call rename(".Xtestfile.un~", "Xtestundo")E[52;44HE[KE[53;1H:qa!E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1H1111 -----E[56;11HE[KE[57;1H2222 -----E[57;11HE[KE[58;1HE[KE[59;1H123456789E[59;10HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" 1L, 17CE[1;1Hthis is ONE Lin
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" TODO: this beepsE[?25lE[1;1HE[?12lE[?25hE[?5hE[?5lE[?25lE[60;1HAlready at oldest changeE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 17C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test 'undofile', add 10 lines, delete 6 lines, undo 3E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset undofileE[?25lE[1;1HE[?12lE[?25hE[?25lE[1;1HE[KE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1Hone
twoE[2;4HE[KE[3;1HthreeE[3;6HE[KE[4;1HfourE[4;5HE[KE[5;1HfiveE[5;5HE[KE[6;1HsixE[6;4HE[KE[7;1HsevenE[7;6HE[KE[8;1HeightE[8;6HE[KE[9;1HnineE[9;5HE[KE[10;1HtenE[10;4HE[KE[10;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[10;3HE[?12lE[?25hE[3;1HE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"Xtestfile" 4L, 17C writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25l"test72.in" 115L, 1707CE[1;1HE[34m^[E[mu:e! Xtestfile
:set undofile ul=100
uuuuuu:w >>test.out
:" And now with encryption, cryptmethod=zip
:e! XtestfileE[5;14HE[KE[6;1H:set undofile cm=zipE[6;21HE[KE[7;1HggdGimondayE[7;12HE[KE[8;1HtuesdayE[8;8HE[KE[9;1HwednesdayE[9;10HE[KE[10;1HthursdayE[10;9HE[KE[11;1HfridayE[34m^[E[m:set ul=100E[11;20HE[KE[12;1Hkkkdd:set ul=100E[12;17HE[KE[13;1Hdd:set ul=100E[13;14HE[KE[14;1Hdd:set ul=100E[14;14HE[KE[15;1H:XE[15;3HE[KE[16;1HfoobarE[16;7HE[KE[17;1HfoobarE[17;7HE[KE[18;1H:w!E[18;4HE[KE[19;1H:bwipe!E[19;8HE[KE[20;1H:e XtestfileE[20;13HE[KE[21;1HfoobarE[21;7HE[KE[22;1H:set key=E[22;10HE[KE[23;1Huu:w >>test.outE[23;16HE[KE[24;1H:"E[24;3HE[KE[25;1H:"E[25;3HE[KE[26;1H:" With encryption, cryptmethod=blowfishE[26;41HE[KE[27;1H:e! XtestfileE[27;14HE[KE[28;1H:set undofile cm=blowfishE[28;26HE[KE[29;1HggdGijanE[29;9HE[KE[30;1HfebE[30;4HE[KE[31;1HmarE[31;4HE[KE[32;1HaprE[32;4HE[KE[33;1HjunE[34m^[E[m:set ul=100E[33;17HE[KE[34;1Hkk0ifoo E[34m^[E[m:set ul=100E[34;22HE[KE[35;1Hdd:set ul=100E[35;14HE[KE[36;1Hibar E[34m^[E[m:set ul=100E[36;19HE[KE[37;1H:XE[37;3HE[KE[38;1HfoobarE[38;7HE[KE[39;1HfoobarE[39;7HE[KE[40;1H:w!E[40;4HE[KE[41;1H:bwipe!E[41;8HE[KE[42;1H:e XtestfileE[42;13HE[KE[43;1HfoobarE[43;7HE[KE[44;1H:set key=E[44;10HE[KE[45;1H/barE[45;5HE[KE[46;1H:.w >>test.outE[46;15HE[KE[47;1Hu:.w >>test.outE[47;16HE[KE[48;1Hu:.w >>test.outE[48;16HE[KE[49;1Hu:.w >>test.outE[49;16HE[KE[50;1H:"E[50;3HE[KE[51;1H:" Rename the undo file so that it gets cleaned up.E[51;52HE[KE[52;1H:call rename(".Xtestfile.un~", "Xtestundo")E[52;44HE[KE[53;1H:qa!E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1H1111 -----E[56;11HE[KE[57;1H2222 -----E[57;11HE[KE[58;1HE[KE[59;1H123456789E[59;10HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" 4L, 17CE[1;1HoneE[1;4HE[KE[2;1HtwoE[2;4HE[KE[3;1HnineE[3;5HE[KE[4;1HtenE[4;4HE[KE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1H1 more line; before #7  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HeightE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #6  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HsevenE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #5  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HsixE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H7L, 33C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test that reading the undofiles when setting undofile worksE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noundofile ul=0E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[4;59rE[4;1HE[LE[1;60rE[3;1HE[KE[4;1HsixuE[?12lE[?25hsE[60;1HE[KE[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1H1 line less; before #8  0 seconds agoE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25he! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H4L, 17CE[3;1Hnine
tenE[4;4HE[KE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset undofile ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #7  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HeightE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #6  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HsevenE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #5  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HsixE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #4  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HfiveE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #3  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HfourE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #2  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1HthreeE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H10L, 49C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" And now with encryption, cryptmethod=zipE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;13H4L, 17CE[3;1HninE[3;5HE[KE[4;1HtenE[4;4HE[KE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset undofile cm=zipE[?25lE[3;1HE[?12lE[?25hE[1;1HE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1Hmonday
tuesdayE[2;8HE[KE[3;1HwednesdayE[3;10HE[KE[4;1HthursdayE[4;9HE[KE[5;1HfridayE[5;7HE[KE[5;6HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[5;6HE[?12lE[?25hE[4;6HE[3;6HE[2;6HE[?25lE[2;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[2;1HE[?12lE[?25hE[?25lE[2;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[2;1HE[?12lE[?25hE[?25lE[2;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hXE[?25lE[60;1HE[KE[60;1HEnter encryption key: E[?12lE[?25h******
E[?25lEnter same key again: E[?12lE[?25h******
E[1;1HE[2LE[?25lE[1;1Hmonday
fridayE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw!E[?25l"Xtestfile" [crypted] 2L, 14C writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25l"test72.in" 115L, 1707CE[1;1HE[34m^[E[mu:e! Xtestfile
:set undofile ul=100
uuuuuu:w >>test.outE[3;20HE[KE[4;1H:" And now with encryption, cryptmethod=zipE[4;44HE[KE[5;1H:e! XtestfileE[5;14HE[KE[6;1H:set undofile cm=zipE[6;21HE[KE[7;1HggdGimondayE[7;12HE[KE[8;1HtuesdayE[8;8HE[KE[9;1HwednesdayE[9;10HE[KE[10;1HthursdayE[10;9HE[KE[11;1HfridayE[34m^[E[m:set ul=100E[11;20HE[KE[12;1Hkkkdd:set ul=100E[12;17HE[KE[13;1Hdd:set ul=100E[13;14HE[KE[14;1Hdd:set ul=100E[14;14HE[KE[15;1H:XE[15;3HE[KE[16;1HfoobarE[16;7HE[KE[17;1HfoobarE[17;7HE[KE[18;1H:w!E[18;4HE[KE[19;1H:bwipe!E[19;8HE[KE[20;1H:e XtestfileE[20;13HE[KE[21;1HfoobarE[21;7HE[KE[22;1H:set key=E[22;10HE[KE[23;1Huu:w >>test.outE[23;16HE[KE[24;1H:"E[24;3HE[KE[25;1H:"E[25;3HE[KE[26;1H:" With encryption, cryptmethod=blowfishE[26;41HE[KE[27;1H:e! XtestfileE[27;14HE[KE[28;1H:set undofile cm=blowfishE[28;26HE[KE[29;1HggdGijanE[29;9HE[KE[30;1HfebE[30;4HE[KE[31;1HmarE[31;4HE[KE[32;1HaprE[32;4HE[KE[33;1HjunE[34m^[E[m:set ul=100E[33;17HE[KE[34;1Hkk0ifoo E[34m^[E[m:set ul=100E[34;22HE[KE[35;1Hdd:set ul=100E[35;14HE[KE[36;1Hibar E[34m^[E[m:set ul=100E[36;19HE[KE[37;1H:XE[37;3HE[KE[38;1HfoobarE[38;7HE[KE[39;1HfoobarE[39;7HE[KE[40;1H:w!E[40;4HE[KE[41;1H:bwipe!E[41;8HE[KE[42;1H:e XtestfileE[42;13HE[KE[43;1HfoobarE[43;7HE[KE[44;1H:set key=E[44;10HE[KE[45;1H/barE[45;5HE[KE[46;1H:.w >>test.outE[46;15HE[KE[47;1Hu:.w >>test.outE[47;16HE[KE[48;1Hu:.w >>test.outE[48;16HE[KE[49;1Hu:.w >>test.outE[49;16HE[KE[50;1H:"E[50;3HE[KE[51;1H:" Rename the undo file so that it gets cleaned up.E[51;52HE[KE[52;1H:call rename(".Xtestfile.un~", "Xtestundo")E[52;44HE[KE[53;1H:qa!E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1H1111 -----E[56;11HE[KE[57;1H2222 -----E[57;11HE[KE[58;1HE[KE[59;1H123456789E[59;10HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [crypted] 2L, 14CE[1;1HE[2LE[1;1Hmonday
friday
E[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[60;1H"Xtestfile" [crypted] 2L, 14CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset key=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #11  0 seconds agoE[2;59rE[2;1HE[LE[1;60rE[2;1HthursdayE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #10  0 seconds agoE[2;59rE[2;1HE[LE[1;60rE[2;1HwednesdayE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H4L, 33C appendedE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" With encryption, cryptmethod=blowfishE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestfileE[?25l"Xtestfile" E[60;13HE[KE[60;1HNeed encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h*************************
E[?25l"Xtestfile" [noeol][crypted] 1L, 14CE[1;1HE[2LE[1;1H;E[34m~HE[mÙ6àE[34m^]E[mQÖE[34m^CE[m4E[34m~]E[m¤E[34m~EE[mû
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[mE[60;1HE[KE[60;1H"Xtestfile" [noeol][crypted] 1L, 14CE[1;1HE[?12lE[?25hE[?25lE[1;1HE[KE[60;1H--No lines in buffer--E[60;23HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1Hjan
febE[2;4HE[KE[3;1HmarE[3;4HE[KE[4;1HaprE[4;4HE[KE[5;1HjunE[5;4HE[KE[5;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[5;3HE[?12lE[?25hE[4;3HE[3;3HE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[3;1Hfoo marE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;4HE[?12lE[?25hE[?25lE[3;59rE[59;1H
E[1;60rE[59;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[3;1Hbar aprE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset ul=100E[?25lE[3;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hXE[?25lE[60;1HE[KE[60;1HEnter encryption key: E[?12lE[?25h******
E[?25lEnter same key again: E[?12lE[?25h******
E[1;1HE[2LE[?25lE[1;1Hjan
febE[60;1HE[KE[3;4HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw!E[?25l"Xtestfile" [crypted] 4L, 20C writtenE[3;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbwipe!E[?25l"test72.in" 115L, 1707CE[1;1HE[34m^[E[mu:e! Xtestfile
:set undofile ul=100
uuuuuu:w >>test.out
:" And now with encryption, cryptmethod=zip
:e! XtestfileE[5;14HE[KE[6;1H:set undofile cm=zipE[6;21HE[KE[7;1HggdGimondayE[7;12HE[KE[8;1HtuesdayE[8;8HE[KE[9;1HwednesdayE[9;10HE[KE[10;1HthursdayE[10;9HE[KE[11;1HfridayE[34m^[E[m:set ul=100E[11;20HE[KE[12;1Hkkkdd:set ul=100E[12;17HE[KE[13;1Hdd:set ul=100E[13;14HE[KE[14;1Hdd:set ul=100E[14;14HE[KE[15;1H:XE[15;3HE[KE[16;1HfoobarE[16;7HE[KE[17;1HfoobarE[17;7HE[KE[18;1H:w!E[18;4HE[KE[19;1H:bwipe!E[19;8HE[KE[20;1H:e XtestfileE[20;13HE[KE[21;1HfoobarE[21;7HE[KE[22;1H:set key=E[22;10HE[KE[23;1Huu:w >>test.outE[23;16HE[KE[24;1H:"E[24;3HE[KE[25;1H:"E[25;3HE[KE[26;1H:" With encryption, cryptmethod=blowfishE[26;41HE[KE[27;1H:e! XtestfileE[27;14HE[KE[28;1H:set undofile cm=blowfishE[28;26HE[KE[29;1HggdGijanE[29;9HE[KE[30;1HfebE[30;4HE[KE[31;1HmarE[31;4HE[KE[32;1HaprE[32;4HE[KE[33;1HjunE[34m^[E[m:set ul=100E[33;17HE[KE[34;1Hkk0ifoo E[34m^[E[m:set ul=100E[34;22HE[KE[35;1Hdd:set ul=100E[35;14HE[KE[36;1Hibar E[34m^[E[m:set ul=100E[36;19HE[KE[37;1H:XE[37;3HE[KE[38;1HfoobarE[38;7HE[KE[39;1HfoobarE[39;7HE[KE[40;1H:w!E[40;4HE[KE[41;1H:bwipe!E[41;8HE[KE[42;1H:e XtestfileE[42;13HE[KE[43;1HfoobarE[43;7HE[KE[44;1H:set key=E[44;10HE[KE[45;1H/barE[45;5HE[KE[46;1H:.w >>test.outE[46;15HE[KE[47;1Hu:.w >>test.outE[47;16HE[KE[48;1Hu:.w >>test.outE[48;16HE[KE[49;1Hu:.w >>test.outE[49;16HE[KE[50;1H:"E[50;3HE[KE[51;1H:" Rename the undo file so that it gets cleaned up.E[51;52HE[KE[52;1H:call rename(".Xtestfile.un~", "Xtestundo")E[52;44HE[KE[53;1H:qa!E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1H1111 -----E[56;11HE[KE[57;1H2222 -----E[57;11HE[KE[58;1HE[KE[59;1H123456789E[59;10HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he XtestfileE[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: E[?12lE[?25h******
E[?25l"Xtestfile" [crypted] 4L, 20CE[1;1HE[2LE[1;1Hjan
feb
bar aprE[3;8HE[KE[4;1HjunE[4;4HE[KE[5;1HE[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[60;1H"Xtestfile" [crypted] 4L, 20CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset key=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hbarE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 8C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1H1 change; before #15  0 seconds agoE[3;1HapE[3;5HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 4C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1H1 more line; before #14  0 seconds agoE[3;59rE[3;1HE[LE[1;60rE[3;1Hfoo marE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 8C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1H1 change; before #13  0 seconds agoE[3;1HmarE[3;5HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w >>test.outE[?25l"test.out" E[60;12HE[KE[60;12H1L, 4C appendedE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Rename the undo file so that it gets cleaned up.E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall rename(".Xtestfile.un~", "Xtestundo")E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test73.in" 176 lines, 3863 charactersE[1;1HTests 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 GrailE[34m^[E[m:w
:e Xfind/in/file.txt
SJimmy HoffaE[34m^[E[m:w
:e Xfind/in/stuff.txt
SAnother Holy GrailE[34m^[E[m:w
:e Xfind/in/path/file.txt
SE.T.E[34m^[E[m:wE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for find completion.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 171 lines, 3816 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:w
:e foo/y/bar/voyager.txt
SVoyager 2E[34m^[E[m: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E[?12lE[?25h
E[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Do all test in a separate window to avoid E211 when we recursivelyE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" delete the Xfind directory during cleanupE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" This will cause a few errors, do it silently.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset visualbellE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp viminfo+=nviminfoE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! DeleteDirectory(dir)E[?25l
:  E[?12lE[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("dos32")
E[?25l:    E[?12lE[?25h:  exec "silent !rmdir /Q /S " . a:dir
E[?25l:    E[?12lE[?25h: else
E[?25l:    E[?12lE[?25h:  exec "silent !rm -rf " . a:dir
E[?25l:    E[?12lE[?25h: endif
E[?25l:  E[?12lE[?25h:endfunE[1;1HE[6LE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:w
:e foo/y/bar/voyager.txt
SVoyager 2E[34m^[E[m:w
:exec "set path=" . cwd . "/Xfind/**"
:find voyagerE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h" On windows a stale "Xfind" directory may exist, remove it so thatE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" we start from a clean state.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall DeleteDirectory("Xfind")E[?25lE[?1lE>E[?12lE[?25hE[?1049lE[?1049hE[?1hE=E[59;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"E[32;32HE[KE[33;2Hfind file      E[33;17HE[KE[34;2Hexec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"E[36;30HE[KE[37;2Hset path=./pathE[37;17HE[KE[38;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[39;15HE[KE[40;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[41;18HE[KE[42;2Hexec "w >>" . test_out
:"E[43;3HE[KE[44;4HTest that completion works when path=.,,E[45;4HE[KE[46;2Hset path=.,,
:" Open Jimmy Hoffa file
:e in/file.txtE[48;15HE[KE[49;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[51;17HE[KE[52;2Hexec "w >>" . test_out
:qE[53;3HE[KE[54;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!E[56;5HE[KE[57;1HENDTESTE[58;1HE[KE[59;1HE[7mtest73.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet cwd=getcwd()E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet test_out = cwd . '/test.out'E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('Xfind')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd XfindE[?25l/sources/vim74/src/testdir/XfindE[59;1HE[7m/sources/vim74/src/testdir/test73.inE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind ...E[?25lE[60;7HE[KE[60;7HE[?5hE[?5lE[?12lE[?25hE[?25lE[1mE[37mE[41mE345: Can't find file "" in pathE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w! " . test_outE[?25l"/sources/vim74/src/testdir/test.out" [New] 0L, 0C writtenE[30;1HE[1mE[7m/sources/vim74/src/testdir/test.outE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:wE[2;15HE[KE[3;1H:e foo/y/bar/voyager.txtE[3;25HE[KE[4;1HSVoyager 2E[34m^[E[m:wE[4;15HE[KE[5;1H:exec "set path=" . cwd . "/Xfind/**"E[5;38HE[KE[6;1H:find voyager   E[6;17HE[KE[7;1H:exec "w >>" . test_outE[7;24HE[KE[8;1H:find voyager           E[8;25HE[KE[9;1H:exec "w >>" . test_outE[9;24HE[KE[10;1H:"E[10;3HE[KE[11;1H:" When current directory is .../foo/y/bar they should be shortened to (inE[11;75HE[KE[12;1H:" order of appearance):E[12;25HE[KE[13;1H:"E[13;3HE[KE[14;1H:"    ./voyager.txtE[14;20HE[KE[15;1H:"    x/bar/voyager.txtE[15;24HE[KE[16;1H:cd fooE[16;8HE[KE[17;1H:cd yE[17;6HE[KE[18;1H:cd barE[18;8HE[KE[19;1H:find voyager   E[19;17HE[KE[20;1H:exec "w >> " . test_outE[20;25HE[KE[21;1H:find voyager           E[21;25HE[KE[22;1H:exec "w >> " . test_outE[22;25HE[KE[23;1H:" Check the opposite too:E[23;27HE[KE[24;1H:cd ..E[24;7HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:cd xE[26;6HE[KE[27;1H:cd barE[27;8HE[KE[28;1H:find voyager   E[28;17HE[KE[29;1H:exec "w >> " . test_outE[29;25HE[KE[30;1H:find voyager           E[30;25HE[KE[31;2Hexec "w >> " . test_outE[31;25HE[KE[32;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file      E[34;17HE[KE[35;2Hexec "w >>" . test_outE[35;25HE[KE[36;2H" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./pathE[38;18HE[KE[39;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[40;15HE[KE[41;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[42;17HE[KE[43;2Hexec "w >>" . test_outE[44;4HE[KE[45;4HTest that completion works when path=.,,
:"E[46;3HE[KE[47;2Hset path=.,,E[47;15HE[KE[48;2H" Open Jimmy Hoffa file
:e in/file.txtE[49;16HE[KE[50;2Hexec "w >>" . test_outE[50;24HE[KE[51;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[52;17HE[KE[53;2Hexec "w >>" . test_out
:qE[54;3HE[KE[55;2Hexec "cd " . cwdE[55;18HE[KE[56;2Hcall DeleteDirectory("Xfind")
:qa!E[57;5HE[KE[58;1HENDTESTE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"E[32;32HE[KE[33;2Hfind file      E[33;17HE[KE[34;2Hexec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"E[36;30HE[KE[37;2Hset path=./pathE[37;17HE[KE[38;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[39;15HE[KE[40;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[41;18HE[KE[42;2Hexec "w >>" . test_out
:"E[43;3HE[KE[44;4HTest that completion works when path=.,,E[45;4HE[KE[46;2Hset path=.,,
:" Open Jimmy Hoffa file
:e in/file.txtE[48;15HE[KE[49;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[51;17HE[KE[52;2Hexec "w >>" . test_out
:qE[53;3HE[KE[54;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!E[56;5HE[KE[57;1HENDTESTE[58;1HE[KE[59;1HE[7m/sources/vim74/src/testdir/test73.in                                                            E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind ...E[?25lE[60;7HE[KE[60;7HE[?5hE[?5lE[?12lE[?25hE[?25lE[1mE[37mE[41mE32: No file nameE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:wE[2;15HE[KE[3;1H:e foo/y/bar/voyager.txtE[3;25HE[KE[4;1HSVoyager 2E[34m^[E[m:wE[4;15HE[KE[5;1H:exec "set path=" . cwd . "/Xfind/**"E[5;38HE[KE[6;1H:find voyager   E[6;17HE[KE[7;1H:exec "w >>" . test_outE[7;24HE[KE[8;1H:find voyager           E[8;25HE[KE[9;1H:exec "w >>" . test_outE[9;24HE[KE[10;1H:"E[10;3HE[KE[11;1H:" When current directory is .../foo/y/bar they should be shortened to (inE[11;75HE[KE[12;1H:" order of appearance):E[12;25HE[KE[13;1H:"E[13;3HE[KE[14;1H:"    ./voyager.txtE[14;20HE[KE[15;1H:"    x/bar/voyager.txtE[15;24HE[KE[16;1H:cd fooE[16;8HE[KE[17;1H:cd yE[17;6HE[KE[18;1H:cd barE[18;8HE[KE[19;1H:find voyager   E[19;17HE[KE[20;1H:exec "w >> " . test_outE[20;25HE[KE[21;1H:find voyager           E[21;25HE[KE[22;1H:exec "w >> " . test_outE[22;25HE[KE[23;1H:" Check the opposite too:E[23;27HE[KE[24;1H:cd ..E[24;7HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:cd xE[26;6HE[KE[27;1H:cd barE[27;8HE[KE[28;1H:find voyager   E[28;17HE[KE[29;1H:exec "w >> " . test_outE[29;25HE[KE[30;1H:find voyager           E[30;25HE[KE[31;2Hexec "w >> " . test_outE[31;25HE[KE[32;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file      E[34;17HE[KE[35;2Hexec "w >>" . test_outE[35;25HE[KE[36;2H" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./pathE[38;18HE[KE[39;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[40;15HE[KE[41;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[42;17HE[KE[43;2Hexec "w >>" . test_outE[44;4HE[KE[45;4HTest that completion works when path=.,,
:"E[46;3HE[KE[47;2Hset path=.,,E[47;15HE[KE[48;2H" Open Jimmy Hoffa file
:e in/file.txtE[49;16HE[KE[50;2Hexec "w >>" . test_outE[50;24HE[KE[51;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[52;17HE[KE[53;2Hexec "w >>" . test_out
:qE[54;3HE[KE[55;2Hexec "cd " . cwdE[55;18HE[KE[56;2Hcall DeleteDirectory("Xfind")
:qa!E[57;5HE[KE[58;1HENDTESTE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"E[32;32HE[KE[33;2Hfind file      E[33;17HE[KE[34;2Hexec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"E[36;30HE[KE[37;2Hset path=./pathE[37;17HE[KE[38;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[39;15HE[KE[40;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[41;18HE[KE[42;2Hexec "w >>" . test_out
:"E[43;3HE[KE[44;4HTest that completion works when path=.,,E[45;4HE[KE[46;2Hset path=.,,
:" Open Jimmy Hoffa file
:e in/file.txtE[48;15HE[KE[49;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[51;17HE[KE[52;2Hexec "w >>" . test_out
:qE[53;3HE[KE[54;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!E[56;5HE[KE[57;1HENDTESTE[58;1HE[KE[59;1HE[7m/sources/vim74/src/testdir/test73.in                                                            E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=.,,E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind ...E[?25lE[60;7HE[KE[60;7HE[?5hE[?5lE[?12lE[?25hE[?25lE[1mE[37mE[41mE32: No file nameE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:wE[2;15HE[KE[3;1H:e foo/y/bar/voyager.txtE[3;25HE[KE[4;1HSVoyager 2E[34m^[E[m:wE[4;15HE[KE[5;1H:exec "set path=" . cwd . "/Xfind/**"E[5;38HE[KE[6;1H:find voyager   E[6;17HE[KE[7;1H:exec "w >>" . test_outE[7;24HE[KE[8;1H:find voyager           E[8;25HE[KE[9;1H:exec "w >>" . test_outE[9;24HE[KE[10;1H:"E[10;3HE[KE[11;1H:" When current directory is .../foo/y/bar they should be shortened to (inE[11;75HE[KE[12;1H:" order of appearance):E[12;25HE[KE[13;1H:"E[13;3HE[KE[14;1H:"    ./voyager.txtE[14;20HE[KE[15;1H:"    x/bar/voyager.txtE[15;24HE[KE[16;1H:cd fooE[16;8HE[KE[17;1H:cd yE[17;6HE[KE[18;1H:cd barE[18;8HE[KE[19;1H:find voyager   E[19;17HE[KE[20;1H:exec "w >> " . test_outE[20;25HE[KE[21;1H:find voyager           E[21;25HE[KE[22;1H:exec "w >> " . test_outE[22;25HE[KE[23;1H:" Check the opposite too:E[23;27HE[KE[24;1H:cd ..E[24;7HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:cd xE[26;6HE[KE[27;1H:cd barE[27;8HE[KE[28;1H:find voyager   E[28;17HE[KE[29;1H:exec "w >> " . test_outE[29;25HE[KE[30;1H:find voyager           E[30;25HE[KE[31;2Hexec "w >> " . test_outE[31;25HE[KE[32;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file      E[34;17HE[KE[35;2Hexec "w >>" . test_outE[35;25HE[KE[36;2H" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./pathE[38;18HE[KE[39;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[40;15HE[KE[41;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[42;17HE[KE[43;2Hexec "w >>" . test_outE[44;4HE[KE[45;4HTest that completion works when path=.,,
:"E[46;3HE[KE[47;2Hset path=.,,E[47;15HE[KE[48;2H" Open Jimmy Hoffa file
:e in/file.txtE[49;16HE[KE[50;2Hexec "w >>" . test_outE[50;24HE[KE[51;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[52;17HE[KE[53;2Hexec "w >>" . test_out
:qE[54;3HE[KE[55;2Hexec "cd " . cwdE[55;18HE[KE[56;2Hcall DeleteDirectory("Xfind")
:qa!E[57;5HE[KE[58;1HENDTESTE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"E[32;32HE[KE[33;2Hfind file      E[33;17HE[KE[34;2Hexec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"E[36;30HE[KE[37;2Hset path=./pathE[37;17HE[KE[38;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[39;15HE[KE[40;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[41;18HE[KE[42;2Hexec "w >>" . test_out
:"E[43;3HE[KE[44;4HTest that completion works when path=.,,E[45;4HE[KE[46;2Hset path=.,,
:" Open Jimmy Hoffa file
:e in/file.txtE[48;15HE[KE[49;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[51;17HE[KE[52;2Hexec "w >>" . test_out
:qE[53;3HE[KE[54;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!E[56;5HE[KE[57;1HENDTESTE[58;1HE[KE[59;1HE[7m/sources/vim74/src/testdir/test73.in                                                            E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=./**E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind ...E[?25lE[60;7HE[KE[60;7HE[?5hE[?5lE[?12lE[?25hE[?25lE[1mE[37mE[41mE32: No file nameE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:wE[2;15HE[KE[3;1H:e foo/y/bar/voyager.txtE[3;25HE[KE[4;1HSVoyager 2E[34m^[E[m:wE[4;15HE[KE[5;1H:exec "set path=" . cwd . "/Xfind/**"E[5;38HE[KE[6;1H:find voyager   E[6;17HE[KE[7;1H:exec "w >>" . test_outE[7;24HE[KE[8;1H:find voyager           E[8;25HE[KE[9;1H:exec "w >>" . test_outE[9;24HE[KE[10;1H:"E[10;3HE[KE[11;1H:" When current directory is .../foo/y/bar they should be shortened to (inE[11;75HE[KE[12;1H:" order of appearance):E[12;25HE[KE[13;1H:"E[13;3HE[KE[14;1H:"    ./voyager.txtE[14;20HE[KE[15;1H:"    x/bar/voyager.txtE[15;24HE[KE[16;1H:cd fooE[16;8HE[KE[17;1H:cd yE[17;6HE[KE[18;1H:cd barE[18;8HE[KE[19;1H:find voyager   E[19;17HE[KE[20;1H:exec "w >> " . test_outE[20;25HE[KE[21;1H:find voyager           E[21;25HE[KE[22;1H:exec "w >> " . test_outE[22;25HE[KE[23;1H:" Check the opposite too:E[23;27HE[KE[24;1H:cd ..E[24;7HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:cd xE[26;6HE[KE[27;1H:cd barE[27;8HE[KE[28;1H:find voyager   E[28;17HE[KE[29;1H:exec "w >> " . test_outE[29;25HE[KE[30;1H:find voyager           E[30;25HE[KE[31;2Hexec "w >> " . test_outE[31;25HE[KE[32;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file      E[34;17HE[KE[35;2Hexec "w >>" . test_outE[35;25HE[KE[36;2H" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./pathE[38;18HE[KE[39;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[40;15HE[KE[41;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[42;17HE[KE[43;2Hexec "w >>" . test_outE[44;4HE[KE[45;4HTest that completion works when path=.,,
:"E[46;3HE[KE[47;2Hset path=.,,E[47;15HE[KE[48;2H" Open Jimmy Hoffa file
:e in/file.txtE[49;16HE[KE[50;2Hexec "w >>" . test_outE[50;24HE[KE[51;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[52;17HE[KE[53;2Hexec "w >>" . test_out
:qE[54;3HE[KE[55;2Hexec "cd " . cwdE[55;18HE[KE[56;2Hcall DeleteDirectory("Xfind")
:qa!E[57;5HE[KE[58;1HENDTESTE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"E[32;32HE[KE[33;2Hfind file      E[33;17HE[KE[34;2Hexec "w >>" . test_out
:" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"E[36;30HE[KE[37;2Hset path=./pathE[37;17HE[KE[38;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[39;15HE[KE[40;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[41;18HE[KE[42;2Hexec "w >>" . test_out
:"E[43;3HE[KE[44;4HTest that completion works when path=.,,E[45;4HE[KE[46;2Hset path=.,,
:" Open Jimmy Hoffa file
:e in/file.txtE[48;15HE[KE[49;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[51;17HE[KE[52;2Hexec "w >>" . test_out
:qE[53;3HE[KE[54;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!E[56;5HE[KE[57;1HENDTESTE[58;1HE[KE[59;1HE[7m/sources/vim74/src/testdir/test73.in                                                            E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" We shouldn't find any file at this point, test.out must be empty.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('in')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd inE[?25l/sources/vim74/src/testdir/Xfind/inE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('path')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "cd " . cwdE[?25l/sources/vim74/src/testdirE[59;1HE[7mtest73.in                           E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xfind/file.txtE[?25l"Xfind/file.txt" [New File]E[30;1HE[1mE[7mXfind/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HHoly GrailE[30;16HE[1mE[7m[+]E[1;10HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"Xfind/file.txt" [New] 1L, 11C writtenE[30;16HE[1mE[7m    E[1;10HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xfind/in/file.txtE[?25l"Xfind/in/file.txt" [New File]E[1;1HE[KE[30;7HE[1mE[7min/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HJimmy HoffaE[30;19HE[1mE[7m[+]E[1;11HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"Xfind/in/file.txt" [New] 1L, 12C writtenE[30;19HE[1mE[7m    E[1;11HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xfind/in/stuff.txtE[?25l"Xfind/in/stuff.txt" [New File]E[1;1HE[KE[30;10HE[1mE[7mstuff.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HAnother Holy GrailE[30;20HE[1mE[7m[+]E[1;18HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"Xfind/in/stuff.txt" [New] 1L, 19C writtenE[30;20HE[1mE[7m    E[1;18HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he Xfind/in/path/file.txtE[?25l"Xfind/in/path/file.txt" [New File]E[1;1HE[KE[30;10HE[1mE[7mpath/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HE.T.E[30;24HE[1mE[7m[+]E[1;4HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"Xfind/in/path/file.txt" [New] 1L, 5C writtenE[30;24HE[1mE[7m    E[1;4HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=Xfind/**E[?25lE[1;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25hE[?25l"Xfind/file.txt" E[60;18HE[KE[60;18H1L, 11CE[1;1HHoly GrailE[30;7HE[1mE[7mfile.txtf         E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25hE[?25l"Xfind/in/file.txt" 1L, 12CE[1;1HJimmy HoffaE[30;7HE[1mE[7min/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25h...E[?25lE[60;7Hpath/file.txtE[60;20HE[KE[60;20HE[?12lE[?25hE[?25l"Xfind/in/path/file.txt" 1L, 5CE[1;1HE.T.E[1;5HE[KE[30;10HE[1mE[7mpath/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Rerun the previous three find completions, using fullpath in 'path'E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "set path=" . cwd . "/Xfind/**"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25hE[?25l"Xfind/file.txt" E[60;18HE[KE[60;18H1L, 11CE[1;1HHoly GrailE[30;7HE[1mE[7mfile.txtf         E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" .  test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25hE[?25l"Xfind/in/file.txt" 1L, 12CE[1;1HJimmy HoffaE[30;7HE[1mE[7min/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25h...E[?25lE[60;7Hpath/file.txtE[60;20HE[KE[60;20HE[?12lE[?25hE[?25l"Xfind/in/path/file.txt" 1L, 5CE[1;1HE.T.E[1;5HE[KE[30;10HE[1mE[7mpath/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Same steps again, using relative and fullpath items that point to the sameE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" recursive location.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" This is to test that there are no duplicates in the completion list.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "set path+=Xfind/**"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25hE[?25l"Xfind/file.txt" E[60;18HE[KE[60;18H1L, 11CE[1;1HHoly GrailE[30;7HE[1mE[7mfile.txtf         E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" .  test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25hE[?25l"Xfind/in/file.txt" 1L, 12CE[1;1HJimmy HoffaE[30;7HE[1mE[7min/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25h...E[?25lE[60;7Hpath/file.txtE[60;20HE[KE[60;20HE[?12lE[?25hE[?25l"Xfind/in/path/file.txt" 1L, 5CE[1;1HE.T.E[1;5HE[KE[30;10HE[1mE[7mpath/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./Xfind/file.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hin/file.txtE[60;18HE[KE[60;18HE[?12lE[?25hE[?25l"Xfind/in/file.txt" 1L, 12CE[1;1HJimmy HoffaE[30;10HE[1mE[7mfile.txte      E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" Test find completion for directory of current buffer, which at this pointE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" is Xfind/in/file.txt.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset path=.E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind st...E[?25luff.txtE[?12lE[?25hE[?25l"Xfind/in/stuff.txt" 1L, 19CE[1;1HAnother Holy GrailE[30;10HE[1mE[7mstuff.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" .  test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test find completion for empty path item ",," which is the current directoryE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd XfindE[?25l/sources/vim74/src/testdir/XfindE[30;1HE[1mE[7min/stuff.txtf       E[mE[59;1HE[7m/sources/vim74/src/testdir/test73.inE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=,,E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind f...E[?25lile.txtE[?12lE[?25h...E[?25lE[60;15HE[KE[60;15HE[?12lE[?25hE[?25l"file.txt" E[60;12HE[KE[60;12H1L, 11CE[1;1HHoly GrailE[1;11HE[KE[30;1HE[1mE[7mfile.txt.     E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test shortening ofE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    foo/x/bar/voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    foo/y/bar/voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" When current directory is above foo/ they should be shortened to (in orderE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" of appearance):E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    x/bar/voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    y/bar/voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('foo')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd fooE[?25l/sources/vim74/src/testdir/Xfind/fooE[30;1HE[1mE[7m/sources/vim74/src/testdir/Xfind/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('x')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('y')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd xE[?25l/sources/vim74/src/testdir/Xfind/foo/xE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('bar')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdir/Xfind/fooE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd yE[?25l/sources/vim74/src/testdir/Xfind/foo/yE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall mkdir('bar')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdir/Xfind/fooE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdir/XfindE[30;1HE[1mE[7mfile.txt/                                  E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h" We should now be in the Xfind directoryE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he foo/x/bar/voyager.txtE[?25l"foo/x/bar/voyager.txt" [New File]E[1;1HE[KE[30;2HE[1mE[7moo/x/bar/voyager.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HVoyager 1E[30;23HE[1mE[7m[+]E[1;9HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"foo/x/bar/voyager.txt" [New] 1L, 10C writtenE[30;23HE[1mE[7m    E[1;9HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he foo/y/bar/voyager.txtE[?25l"foo/y/bar/voyager.txt" [New File]E[1;1HE[KE[30;5HE[1mE[7my/E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[1;1HVoyager 2E[30;23HE[1mE[7m[+]E[1;9HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwE[?25l"foo/y/bar/voyager.txt" [New] 1L, 10C writtenE[30;23HE[1mE[7m    E[1;9HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "set path=" . cwd . "/Xfind/**"E[?25lE[1;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7Hx/bar/voyager.txtE[?5hE[?5lE[?12lE[?25hE[?25l"foo/x/bar/voyager.txt" 1L, 10CE[1;9H1E[30;5HE[1mE[7mx/E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7Hx/bar/voyager.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7HyE[60;24HE[KE[60;24HE[?12lE[?25hE[?25l"foo/y/bar/voyager.txt" 1L, 10CE[1;9H2E[30;5HE[1mE[7my/E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" When current directory is .../foo/y/bar they should be shortened to (inE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" order of appearance):E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    ./voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    x/bar/voyager.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd fooE[?25l/sources/vim74/src/testdir/Xfind/fooE[30;1HE[1mE[7my/bar/voyager.txt.     E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcd yE[?25l/sources/vim74/src/testdir/Xfind/foo/yE[30;1HE[1mE[7mbar/voyager.txt   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcd barE[?25l/sources/vim74/src/testdir/Xfind/foo/y/barE[30;1HE[1mE[7mvoyager.txt.     E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7H./voyager.txtE[?5hE[?5lE[?12lE[?25hE[?25l"voyager.txt" E[60;15HE[KE[60;15H1L, 10CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >> " . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7H./voyager.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hx/bar/voyager.txtE[?12lE[?25hE[?25l"/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10CE[1;9H1E[30;1HE[1mE[7m/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >> " . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check the opposite too:E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdir/Xfind/foo/yE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/src/testdir/Xfind/fooE[30;1HE[1mE[7mx/bar/voyager.txtc                                      E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcd xE[?25l/sources/vim74/src/testdir/Xfind/foo/xE[30;1HE[1mE[7mbar/voyager.txt   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcd barE[?25l/sources/vim74/src/testdir/Xfind/foo/x/barE[30;1HE[1mE[7mvoyager.txt.     E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7H./voyager.txtE[?5hE[?5lE[?12lE[?25hE[?25l"voyager.txt" E[60;15HE[KE[60;15H1L, 10CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >> " . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind voyager...E[?25lE[60;7H./voyager.txtE[?5hE[?5lE[?12lE[?25h...E[?25lE[60;7Hy/bar/voyager.txtE[?12lE[?25hE[?25l"/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10CE[1;9H2E[30;1HE[1mE[7m/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >> " . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Check for correct handling of shorten_fname()'s behavior on windowsE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "cd " . cwd . "/Xfind/in"E[?25l/sources/vim74/src/testdir/Xfind/inE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25lE[60;7H./file.txtE[?5hE[?5lE[?12lE[?25hE[?25l"file.txt" E[60;12HE[KE[60;12H1L, 12CE[1;1HJimmy HoffaE[30;1HE[1mE[7mfile.txt/                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test for relative to current buffer 'path' itemE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "cd " . cwd . "/Xfind/"E[?25l/sources/vim74/src/testdir/XfindE[30;1HE[1mE[7min/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset path=./pathE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Open the file where Jimmy Hoffa is foundE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he in/file.txtE[?25l"in/file.txt" 1L, 12CE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Find the file containing 'E.T.' in the Xfind/in/path directoryE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind file...E[?25ltxtE[?12lE[?25hE[?25l"in/path/file.txt" 1L, 5CE[1;1HE.T.E[1;5HE[KE[30;4HE[1mE[7mpath/file.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test that completion works when path=.,,E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset path=.,,E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Open Jimmy Hoffa fileE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he in/file.txtE[?25l"in/file.txt" 1L, 12CE[1;1HJimmy HoffaE[30;4HE[1mE[7mfile.txte      E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Search for the file containing Holy Grail in same directory as in/path.txtE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfind stu...E[?25lff.txtE[?12lE[?25hE[?25l"in/stuff.txt" 1L, 19CE[1;1HAnother Holy GrailE[30;4HE[1mE[7mstuff.txtE[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hexec "w >>" . test_outE[?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appendedE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqE[?25lE[1;1H:e foo/x/bar/voyager.txt
SVoyager 1E[34m^[E[m:wE[2;15HE[KE[3;1H:e foo/y/bar/voyager.txtE[3;25HE[KE[4;1HSVoyager 2E[34m^[E[m:wE[4;15HE[KE[5;1H:exec "set path=" . cwd . "/Xfind/**"E[5;38HE[KE[6;1H:find voyager   E[6;17HE[KE[7;1H:exec "w >>" . test_outE[7;24HE[KE[8;1H:find voyager           E[8;25HE[KE[9;1H:exec "w >>" . test_outE[9;24HE[KE[10;1H:"E[10;3HE[KE[11;1H:" When current directory is .../foo/y/bar they should be shortened to (inE[11;75HE[KE[12;1H:" order of appearance):E[12;25HE[KE[13;1H:"E[13;3HE[KE[14;1H:"    ./voyager.txtE[14;20HE[KE[15;1H:"    x/bar/voyager.txtE[15;24HE[KE[16;1H:cd fooE[16;8HE[KE[17;1H:cd yE[17;6HE[KE[18;1H:cd barE[18;8HE[KE[19;1H:find voyager   E[19;17HE[KE[20;1H:exec "w >> " . test_outE[20;25HE[KE[21;1H:find voyager           E[21;25HE[KE[22;1H:exec "w >> " . test_outE[22;25HE[KE[23;1H:" Check the opposite too:E[23;27HE[KE[24;1H:cd ..E[24;7HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:cd xE[26;6HE[KE[27;1H:cd barE[27;8HE[KE[28;1H:find voyager   E[28;17HE[KE[29;1H:exec "w >> " . test_outE[29;25HE[KE[30;1H:find voyager           E[30;25HE[KE[31;2Hexec "w >> " . test_outE[31;25HE[KE[32;2H" Check for correct handling of shorten_fname()'s behavior on windows
:exec "cd " . cwd . "/Xfind/in"
:find file      E[34;17HE[KE[35;2Hexec "w >>" . test_outE[35;25HE[KE[36;2H" Test for relative to current buffer 'path' item
:exec "cd " . cwd . "/Xfind/"
:set path=./pathE[38;18HE[KE[39;2H" Open the file where Jimmy Hoffa is found
:e in/file.txtE[40;15HE[KE[41;2H" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file      E[42;17HE[KE[43;2Hexec "w >>" . test_outE[44;4HE[KE[45;4HTest that completion works when path=.,,
:"E[46;3HE[KE[47;2Hset path=.,,E[47;15HE[KE[48;2H" Open Jimmy Hoffa file
:e in/file.txtE[49;16HE[KE[50;2Hexec "w >>" . test_outE[50;24HE[KE[51;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       E[52;17HE[KE[53;2Hexec "w >>" . test_out
:qE[54;3HE[KE[55;2Hexec "cd " . cwdE[55;18HE[KE[56;2Hcall DeleteDirectory("Xfind")
:qa!E[57;5HE[KE[58;1HENDTESTE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexec "cd " . cwdE[?25l/sources/vim74/src/testdirE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall DeleteDirectory("Xfind")E[?25lE[?1lE>E[?12lE[?25hE[?1049lE[?1049hE[?1hE=E[59;1HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test74.in" 36 lines, 822 charactersE[1;1H" 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
E[1mE[34m~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1H" Tests for storing global variables in the .viminfo file vim: set ft=vim:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 30 lines, 723 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[34;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Do all test in a separate window to avoid E211 when we recursivelyE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" delete the Xfind directory during cleanupE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" This will cause a few errors, do it silently.E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset visualbellE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp viminfo+=!,nviminfoE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000}E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" store a really long list, so line wrapping will occur in viminfo fileE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet MY_GLOBAL_LIST=range(1,100)E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwv! XviminfoE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet MY_GLOBAL_DICTE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hunlet MY_GLOBAL_LISTE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hrv! XviminfoE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall delete('Xviminfo')E[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif exists("MY_GLOBAL_DICT")E[?25l
:  E[?12lE[?25h:redir >> test.out
E[?25l:  E[?12lE[?25h:echo MY_GLOBAL_DICT
E[?25l{'foo': 1, 'longvarible': 1000, 'bar': 0}
:  E[?12lE[?25h:redir end
E[?25l:  E[?12lE[?25h:endifE[1;1HE[5LE[?25lE[1;1H" 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 recursivelyE[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hif exists("MY_GLOBAL_LIST")E[?25l
:  E[?12lE[?25h:redir >> test.out
E[?25l:  E[?12lE[?25h:echo MY_GLOBAL_LIST
E[?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]
:  E[?12lE[?25h:redir end
E[?25l:  E[?12lE[?25h:endifE[1;1HE[9LE[?25lE[1;1H" 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 visualbellE[60;1HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hredir >> test.outE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hecho "foobar"E[?25lfoobarE[60;7HE[KE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir endE[?25lE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hendifE[?25lE[1mE[37mE[41mE580: :endif without :ifE[35;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?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
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test75.in" 24 lines, 562 charactersE[1;1H" Tests for functions.

STARTTEST
:so small.vim
:set cpo-=<
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST

eof
E[1mE[34m~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1H" Tests for functions.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 18 lines, 515 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[22;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo-=<E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test maparg() with a string resultE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap foo<C-V> is<F4>fooE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hvnoremap <script> <buffer> <expr> <silent> bar isbarE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', maparg('foo<C-V>'))E[?25lE[25;1His<F4>fooE[25;10HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', string(maparg('foo<C-V>', '', 0, 1)))E[?25lE[26;1H{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr': 0, 'sid': 0, 'rrE[27;1Hhs': 'is<F4>foo', 'buffer': 0}E[27;31HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', string(maparg('bar', '', 0, 1)))E[?25lE[28;1H{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, 'sid': 0, 'rhs':  E[29;1H'isbar', 'buffer': 1}E[29;22HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap <buffer> <nowait> foo barE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', string(maparg('foo', '', 0, 1)))E[?25lE[30;1H{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, 'sid': 0, 'rhs':  E[31;1H'bar', 'buffer': 1}E[31;20HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap abc x<char-114>xE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', maparg('abc'))E[?25lE[32;1HxrxE[32;4HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap abc y<S-char-114>yE[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append('$', maparg('abc'))E[?25lE[33;1HyRyE[33;4HE[KE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^eof/+1,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 6 lines, 379 characters writtenE[23;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test76.failed test.ok test.out X* viminfo
cp test76.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 test76.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test76.in" 46 lines, 899 charactersE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)
:  if a:findstart
:    return 0
:  else
:    wincmd n
:    return ['onedef', 'oneDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteOne
/^one
AE[34m^X^U^N^[E[m:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
AE[34m^X^U^N^[E[m:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0
:  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
AE[34m^X^U^N^[E[m:/^+++/,/^three/w! test.out
:qa!
ENDTEST

+++
one
two
three
E[1mE[34m~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 37 lines, 810 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[41;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"Test that nothing happens if the 'completefunc' opensE[?25lE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"a new window (no completion, no crash)E[?25lE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! DummyCompleteOne(findstart, base)E[?25l
:  E[?12lE[?25h:  if a:findstart
E[?25l:    E[?12lE[?25h:    return 0
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    wincmd n
E[?25l:    E[?12lE[?25h:    return ['onedef', 'oneDEF']
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[7LE[?25lE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)E[60;1HE[KE[42;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsetlocal completefunc=DummyCompleteOneE[?25lE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^oneE[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[1mE[37mE[41mE839: Completion function changed windowE[m
E[1mE[37mE[41mPattern not foundE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[1;4HE[?25lE[mE[60;1HE[KE[60;1HE[32mPress ENTER or type command to continueE[?12lE[?25hE[1;4HE[mE[59;1HE[KE[60;1HE[KE[1;1HE[2LE[?25lE[1;1Hone
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name] [+]                                                                                   E[mE[31;4HendifE[31;9HE[KE[32;2HendfunctionE[32;13HE[KE[33;2Hsetlocal completefunc=DummyCompleteTwo
/^twoE[34;6HE[KE[35;1HAE[34m^X^U^N^[E[m:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0E[39;14HE[KE[40;2H  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
AE[34m^X^U^N^[E[m:/^+++/,/^three/w! test.out
:qa!E[47;5HE[KE[48;1HENDTESTE[48;8HE[KE[49;1HE[KE[50;1H+++E[50;4HE[KE[51;1HE[KE[52;1HtwoE[52;4HE[KE[53;1HthreeE[53;6HE[KE[59;1HE[7mtest76.in [+]                                                                                   E[mE[60;1HE[KE[1;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hq!E[?25lE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :E[2;1HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;1H:"Test that nothing happens if the 'completefunc' opensE[4;56HE[KE[5;1H:"a new window (no completion, no crash)E[5;41HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:function! DummyCompleteOne(findstart, base)E[7;45HE[KE[8;1H:  if a:findstartE[8;18HE[KE[9;1H:    return 0E[9;14HE[KE[10;1H:  elseE[10;8HE[KE[11;1H:    wincmd nE[11;14HE[KE[12;1H:    return ['onedef', 'oneDEF']E[12;33HE[KE[13;1H:  endifE[13;9HE[KE[14;1H:endfunctionE[14;13HE[KE[15;1H:setlocal completefunc=DummyCompleteOneE[15;40HE[KE[16;1H/^oneE[16;6HE[KE[17;1HAE[34m^X^U^N^[E[m:q!E[17;13HE[KE[18;1H:function! DummyCompleteTwo(findstart, base)E[18;45HE[KE[19;1H:  if a:findstartE[19;18HE[KE[20;1H:    wincmd nE[20;14HE[KE[21;1H:    return 0E[21;14HE[KE[22;1H:  elseE[22;8HE[KE[23;1H:    return ['twodef', 'twoDEF']E[23;33HE[KE[24;1H:  endifE[24;9HE[KE[25;1H:endfunctionE[25;13HE[KE[26;1H:setlocal completefunc=DummyCompleteTwoE[26;40HE[KE[27;1H/^twoE[27;6HE[KE[28;1HAE[34m^X^U^N^[E[m:q!E[28;13HE[KE[29;1H:"Test that 'completefunc' works when it's OK.E[29;47HE[KE[30;1H:function! DummyCompleteThree(findstart, base)E[30;47HE[KE[31;4Hif a:findstart
:    return 0
:  elseE[33;8HE[KE[34;1H:    return ['threedef', 'threeDEF']
:  endifE[35;9HE[KE[36;2HendfunctionE[36;13HE[KE[37;2Hsetlocal completefunc=DummyCompleteThreeE[37;42HE[KE[38;1H/^threeE[38;8HE[KE[39;1HAE[34m^X^U^N^[E[m:/^+++/,/^three/w! test.out
:qa!E[40;5HE[KE[41;1HENDTESTE[41;8HE[KE[42;1HE[KE[43;1H+++E[43;4HE[KE[44;1HE[KE[45;1HtwoE[45;4HE[KE[46;1HthreeE[46;6HE[KE[47;1HE[1mE[34m~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[59;1H~                                                                                               E[44;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! DummyCompleteTwo(findstart, base)E[?25l
:  E[?12lE[?25h:  if a:findstart
E[?25l:    E[?12lE[?25h:    wincmd n
E[?25l:    E[?12lE[?25h:    return 0
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    return ['twodef', 'twoDEF']
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[7LE[?25lE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vim
:function! DummyCompleteOne(findstart, base)E[60;1HE[KE[44;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsetlocal completefunc=DummyCompleteTwoE[?25lE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^twoE[?25lE[45;1HE[?12lE[?25hE[?25lE[60;1HE[1mE[37mE[41mE839: Completion function changed windowE[m
E[1mE[37mE[41mE764: Option 'completefunc' is not setE[m
E[32mPress ENTER or type command to continueE[?12lE[?25hE[mE[59;1HE[KE[60;1HE[KE[1;1HE[2LE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;4HendifE[31;9HE[KE[32;2HendfunctionE[32;13HE[KE[33;2Hsetlocal completefunc=DummyCompleteTwo
/^twoE[34;6HE[KE[35;1HAE[34m^X^U^N^[E[m:q!
:"Test that 'completefunc' works when it's OK.
:function! DummyCompleteThree(findstart, base)
:  if a:findstart
:    return 0E[39;14HE[KE[40;2H  else
:    return ['threedef', 'threeDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteThree
/^three
AE[34m^X^U^N^[E[m:/^+++/,/^three/w! test.out
:qa!E[47;5HE[KE[48;1HENDTESTE[48;8HE[KE[49;1HE[KE[50;1H+++E[50;4HE[KE[51;1HE[KE[52;1HtwoE[52;4HE[KE[53;1HthreeE[53;6HE[KE[59;1HE[7mtest76.in [+]                                                                                   E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hq!E[?25lE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :E[2;1HE[KE[3;1HSTARTTESTE[3;10HE[KE[4;1H:"Test that nothing happens if the 'completefunc' opensE[4;56HE[KE[5;1H:"a new window (no completion, no crash)E[5;41HE[KE[6;1H:so small.vimE[6;14HE[KE[7;1H:function! DummyCompleteOne(findstart, base)E[7;45HE[KE[8;1H:  if a:findstartE[8;18HE[KE[9;1H:    return 0E[9;14HE[KE[10;1H:  elseE[10;8HE[KE[11;1H:    wincmd nE[11;14HE[KE[12;1H:    return ['onedef', 'oneDEF']E[12;33HE[KE[13;1H:  endifE[13;9HE[KE[14;1H:endfunctionE[14;13HE[KE[15;1H:setlocal completefunc=DummyCompleteOneE[15;40HE[KE[16;1H/^oneE[16;6HE[KE[17;1HAE[34m^X^U^N^[E[m:q!E[17;13HE[KE[18;1H:function! DummyCompleteTwo(findstart, base)E[18;45HE[KE[19;1H:  if a:findstartE[19;18HE[KE[20;1H:    wincmd nE[20;14HE[KE[21;1H:    return 0E[21;14HE[KE[22;1H:  elseE[22;8HE[KE[23;1H:    return ['twodef', 'twoDEF']E[23;33HE[KE[24;1H:  endifE[24;9HE[KE[25;1H:endfunctionE[25;13HE[KE[26;1H:setlocal completefunc=DummyCompleteTwoE[26;40HE[KE[27;1H/^twoE[27;6HE[KE[28;1HAE[34m^X^U^N^[E[m:q!E[28;13HE[KE[29;1H:"Test that 'completefunc' works when it's OK.E[29;47HE[KE[30;1H:function! DummyCompleteThree(findstart, base)E[30;47HE[KE[31;4Hif a:findstart
:    return 0
:  elseE[33;8HE[KE[34;1H:    return ['threedef', 'threeDEF']
:  endifE[35;9HE[KE[36;2HendfunctionE[36;13HE[KE[37;2Hsetlocal completefunc=DummyCompleteThreeE[37;42HE[KE[38;1H/^threeE[38;8HE[KE[39;1HAE[34m^X^U^N^[E[m:/^+++/,/^three/w! test.out
:qa!E[40;5HE[KE[41;1HENDTESTE[41;8HE[KE[42;1HE[KE[43;1H+++E[43;4HE[KE[44;1HE[KE[45;1HtwoE[45;4HE[KE[46;1HthreeE[46;6HE[KE[47;1HE[1mE[34m~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[59;1H~                                                                                               E[45;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"Test that 'completefunc' works when it's OK.E[?25lE[45;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! DummyCompleteThree(findstart, base)E[?25l
:  E[?12lE[?25h:  if a:findstart
E[?25l:    E[?12lE[?25h:    return 0
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    return ['threedef', 'threeDEF']
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[6LE[?25lE[1;1HTests for completefunc/omnifunc. vim: set ft=vim :

STARTTEST
:"Test that nothing happens if the 'completefunc' opens
:"a new window (no completion, no crash)
:so small.vimE[60;1HE[KE[45;3HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsetlocal completefunc=DummyCompleteThreeE[?25lE[45;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^threeE[?25lE[46;1HE[?12lE[?25hE[?25lE[60;1HE[32mmatch 1 of 2E[46;9HE[mdef
E[30mE[47mthreedef       E[m
E[30mE[45mthreeDEF       E[46;9HE[mDEF
E[1mE[34m~              
~              E[mE[47;1HE[30mE[47mthreedef       E[m
E[30mE[45mthreeDEF       E[mE[60;7HE[32m2E[46;9HE[m
E[30mE[45mthreedef       E[m
E[30mE[47mthreeDEF       E[46;9HE[mE[60;1HE[KE[47;1HE[1mE[34m~              
~              E[46;8HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h/^+++/,/^three/w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 18 characters writtenE[46;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test77.failed test.ok test.out X* viminfo
cp test77.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 test77.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test77.in" 30 lines, 719 charactersE[1;1HInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.

We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
up the lines the checksum would differ.

cksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST
:so small.vim
:if !executable("cksum")
: e! test.ok
: w! test.out
: qa!
:endif
:set fileformat=unix undolevels=-1
ggdG
:let i = 1
:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
ggdd
:w! Xtest
:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HInserts 2 million lines with consecutive integers starting from 1E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 17 lines, 288 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[12;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[29;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !executable("cksum")E[?25l
:  E[?12lE[?25h: e! test.ok
E[?25l:  E[?12lE[?25h: w! test.out
E[?25l:  E[?12lE[?25h: qa!
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HInserts 2 million lines with consecutive integers starting from 1
(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
and writes its cksum to test.out.E[60;1HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset fileformat=unix undolevels=-1E[?25lE[30;1HE[?12lE[?25hE[1;1HE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[60;23HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet i = 1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwhile i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhileE[?25lE[2;1H1E[2;2HE[KE[3;1H2E[3;2HE[KE[4;1H3E[4;2HE[KE[5;1H4E[5;2HE[KE[6;1H5E[6;2HE[KE[7;1H6E[7;2HE[KE[8;1H7E[8;2HE[KE[9;1H8E[9;2HE[KE[10;1H9E[10;2HE[KE[11;1H10E[11;3HE[KE[12;1H11E[12;3HE[KE[13;1H12E[13;3HE[KE[14;1H13E[14;3HE[KE[15;1H14E[15;3HE[KE[16;1H15E[16;3HE[KE[17;1H16E[17;3HE[KE[18;1H17E[18;3HE[KE[19;1H18E[19;3HE[KE[20;1H19E[20;3HE[KE[21;1H20E[21;3HE[KE[22;1H21E[22;3HE[KE[23;1H22E[23;3HE[KE[24;1H23E[24;3HE[KE[25;1H24E[25;3HE[KE[26;1H25E[26;3HE[KE[27;1H26E[27;3HE[KE[28;1H27E[28;3HE[KE[29;1H28E[29;3HE[KE[30;1H29E[30;3HE[KE[31;1H30E[31;3HE[KE[32;1H31E[32;3HE[KE[33;1H32E[33;3HE[KE[34;1H33E[34;3HE[KE[35;1H34E[35;3HE[KE[36;1H35E[36;3HE[KE[37;1H36E[37;3HE[KE[38;1H37E[38;3HE[KE[39;1H38E[39;3HE[KE[40;1H39E[40;3HE[KE[41;1H40E[41;3HE[KE[42;1H41E[42;3HE[KE[43;1H42E[43;3HE[KE[44;1H43E[44;3HE[KE[45;1H44E[45;3HE[KE[46;1H45E[46;3HE[KE[47;1H46E[47;3HE[KE[48;1H47E[48;3HE[KE[49;1H48E[49;3HE[KE[50;1H49E[50;3HE[KE[51;1H50E[51;3HE[KE[52;1H51E[52;3HE[KE[53;1H52E[53;3HE[KE[54;1H53E[54;3HE[KE[55;1H54E[55;3HE[KE[56;1H55E[56;3HE[KE[57;1H56E[57;3HE[KE[58;1H57E[58;3HE[KE[59;1H58E[59;3HE[KE[1;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H59E[60;1HE[KE[1;1HE[?12lE[?25h
E[?25lE[60;1H:E[?12lE[?25hw! XtestE[?25l"Xtest" E[60;9HE[KE[60;9H[New File] 2000000 lines, 14888896 characters writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hr !cksum XtestE[?25lE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[1;1H1
2
3678979763 14888896 Xtest
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
58E[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hs/\s/ /gE[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformat&E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h.w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 26 characters writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test78.failed test.ok test.out X* viminfo
cp test78.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 test78.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test78.in" 46 lines, 1464 charactersE[1;1HInserts 10000 lines with text to fill the swap file with two levels of pointer
blocks.  Then recovers from the swap file and checks all text is restored.

We need about 10000 lines of 100 characters to get two levels of pointer
blocks.

STARTTEST
:so small.vim
:set nocp fileformat=unix undolevels=-1 viminfo+=nviminfo
:e! Xtest
ggdG
:let text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghiiE[13;1Hjklmnoparstuvwxyz0123456789"
:let i = 1
:let linecount = 10000
:while i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile
:preserve
:" get the name of the swap file
:redir => swapname
:swapname
:redir END
:let swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\11E[23;1H', '')
:" make a copy of the swap file in Xswap
:set bin
:exe 'sp ' . swapname
:w! Xswap
:echo swapname
:set nobin
:new
:only!
:bwipe! Xtest
:call rename('Xswap', swapname)
:recover Xtest
:call delete(swapname)
:new
:call append(0, 'recovery start')
:wincmd w
:let linedollar = line('$')
:if linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . ""E[41;1H lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i .  E[44;1H' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HInserts 10000 lines with text to fill the swap file with two levels of pointerE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 37 lines, 1208 characters writtenE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[8;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[49;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp fileformat=unix undolevels=-1 viminfo+=nviminfoE[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he! XtestE[?25l"Xtest" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh
E[59;96HiE[60;1Hjklmnoparstuvwxyz0123456789"E[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hlet i = 1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet linecount = 10000E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwhile i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhileE[?25lE[1;1H9972    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[2;1Harstuvwxyz0123456789E[2;21HE[KE[3;1H9973    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[4;1Harstuvwxyz0123456789E[4;21HE[KE[5;1H9974    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[6;1Harstuvwxyz0123456789E[6;21HE[KE[7;1H9975    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[8;1Harstuvwxyz0123456789E[8;21HE[KE[9;1H9976    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[10;1Harstuvwxyz0123456789E[10;21HE[KE[11;1H9977    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[12;1Harstuvwxyz0123456789E[12;21HE[KE[13;1H9978    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[14;1Harstuvwxyz0123456789E[14;21HE[KE[15;1H9979    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[16;1Harstuvwxyz0123456789E[16;21HE[KE[17;1H9980    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[18;1Harstuvwxyz0123456789E[18;21HE[KE[19;1H9981    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[20;1Harstuvwxyz0123456789E[20;21HE[KE[21;1H9982    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[22;1Harstuvwxyz0123456789E[22;21HE[KE[23;1H9983    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[24;1Harstuvwxyz0123456789E[24;21HE[KE[25;1H9984    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[26;1Harstuvwxyz0123456789E[26;21HE[KE[27;1H9985    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[28;1Harstuvwxyz0123456789E[28;21HE[KE[29;1H9986    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[30;1Harstuvwxyz0123456789E[30;21HE[KE[31;1H9987    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[32;1Harstuvwxyz0123456789E[32;21HE[KE[33;1H9988    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[34;1Harstuvwxyz0123456789E[34;21HE[KE[35;1H9989    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[36;1Harstuvwxyz0123456789E[36;21HE[KE[37;1H9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[38;1Harstuvwxyz0123456789E[38;21HE[KE[39;1H9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[40;1Harstuvwxyz0123456789E[40;21HE[KE[41;1H9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[42;1Harstuvwxyz0123456789E[42;21HE[KE[43;1H9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[44;1Harstuvwxyz0123456789E[44;21HE[KE[45;1H9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[46;1Harstuvwxyz0123456789E[46;21HE[KE[47;1H9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[48;1Harstuvwxyz0123456789E[48;21HE[KE[49;1H9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[50;1Harstuvwxyz0123456789E[50;21HE[KE[51;1H9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[52;1Harstuvwxyz0123456789E[52;21HE[KE[53;1H9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[54;1Harstuvwxyz0123456789E[54;21HE[KE[55;1H9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[56;1Harstuvwxyz0123456789E[56;21HE[KE[57;1H10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[58;1Harstuvwxyz0123456789E[58;21HE[KE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hpreserveE[?25lFile preservedE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" get the name of the swap fileE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir => swapnameE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hswapnameE[?25l.Xtest.swpE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir ENDE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][:cntrl:]]*$', '\
E[59;96H1E[60;1H', '')E[?25lE[1;1HE[LE[1;1H9972    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[2;1HaE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h" make a copy of the swap file in XswapE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset binE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe 'sp ' . swapnameE[?25l".Xtest.swp"E[60;14HE[KE[60;14H[noeol] 609L, 1228800CE[1;1Hb0VIM 7.4E[34m^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@^X^Y^@^@E[mrootE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^E[2;1H@^@^@^@^@^@^@^@^@^@^@^@^@^@E[mfrodoE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[3;1H^@^@^@E[m/sources/vim74/src/testdir/XtestE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[4;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[5;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[6;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[7;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[8;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[9;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[10;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[11;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[12;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[13;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[14;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[15;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[16;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[17;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[18;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[19;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[20;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[21;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^ME[mU3210E[34m^@^@^@^@E[m#"! E[34m^S^RE[mUE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[22;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[23;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[24;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[25;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[26;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[27;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[28;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[29;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@E[mE[30;1HE[1mE[7m.Xtest.swp                                                                                      E[mE[31;4H8E[91CppE[32;1Ha
9989E[91CppE[34;1Ha
9990E[91CppE[36;1Ha
9991E[91CppE[38;1Ha
9992E[91CppE[40;1Ha
9993E[91CppE[42;1Ha
9994E[91CppE[44;1Ha
9995E[91CppE[46;1Ha
9996E[91CppE[48;1Ha
9997E[91CppE[50;1Ha
9998E[91CppE[52;1Ha
9999E[91CppE[54;1Ha
10000E[90CppE[56;1HaE[57;1HE[KE[58;1HE[1mE[34m~                                                                                               E[mE[59;1HE[7mXtest [+]                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! XswapE[?25l"Xswap" E[60;9HE[KE[60;9H[New][noeol] 609L, 1228800C writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hecho swapnameE[?25l.Xtest.swE[60;11HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nobinE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[1mE[7m[No Name]                                                                                       E[mE[21;1Hb0VIM 7.4E[34m^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@^X^Y^@^@E[mrootE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^^E[22;1H@^@^@^@^@^@^@^@^@^@^@^@^@^@E[mfrodoE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[23;1H^@^@^@E[m/sources/vim74/src/testdir/XtestE[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[24;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[25;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[26;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[27;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[28;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[29;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[30;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[31;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[32;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[33;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[34;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[35;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[36;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[37;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[38;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@E[39;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@E[mE[40;1HE[7m.Xtest.swp                                                                                      E[mE[41;1H9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[42;1Harstuvwxyz0123456789
9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[44;1Harstuvwxyz0123456789
9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[46;1Harstuvwxyz0123456789
9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[48;1Harstuvwxyz0123456789
9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[50;1Harstuvwxyz0123456789
9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[52;1Harstuvwxyz0123456789
9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[54;1Harstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[56;1Harstuvwxyz0123456789

E[1mE[34m~                                                                                               E[mE[59;1HE[7mXtest [+]                                                                                       E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25honly!E[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hbwipe! XtestE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall rename('Xswap', swapname)E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hrecover XtestE[?25lUsing swap file ".Xtest.swp"
Original file "/sources/vim74/src/testdir/Xtest"
E[59;1H"/sources/vim74/src/testdir/Xtest" [New File]E[59;46HE[KE[60;1HRecovery completed. You should check if everything is OK.
(You might want to write out this file under another name
and run diff with the original file to check for changes)
You may want to delete the .swp file now.


E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall delete(swapname)E[?25lE[1;1HE[8LE[1;1H1E[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[2;1Harstuvwxyz0123456789
2E[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[4;1Harstuvwxyz0123456789
3E[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[6;1Harstuvwxyz0123456789
4E[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[8;1Harstuvwxyz0123456789
5       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[10;1Harstuvwxyz0123456789E[10;21HE[KE[11;1H6       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[12;1Harstuvwxyz0123456789E[12;21HE[KE[13;1H7       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[14;1Harstuvwxyz0123456789E[14;21HE[KE[15;1H8       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[16;1Harstuvwxyz0123456789E[16;21HE[KE[17;1H9       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[18;1Harstuvwxyz0123456789E[18;21HE[KE[19;1H10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[20;1Harstuvwxyz0123456789E[20;21HE[KE[21;1H11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[22;1Harstuvwxyz0123456789E[22;21HE[KE[23;1H12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[24;1Harstuvwxyz0123456789E[24;21HE[KE[25;1H13      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[26;1Harstuvwxyz0123456789E[26;21HE[KE[27;1H14      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[28;1Harstuvwxyz0123456789E[28;21HE[KE[29;1H15      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[30;1Harstuvwxyz0123456789E[30;21HE[KE[31;1H16      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[32;1Harstuvwxyz0123456789E[32;21HE[KE[33;1H17      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[34;1Harstuvwxyz0123456789E[34;21HE[KE[35;1H18      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[36;1Harstuvwxyz0123456789E[36;21HE[KE[37;1H19      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[38;1Harstuvwxyz0123456789E[38;21HE[KE[39;1H20      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[40;1Harstuvwxyz0123456789E[40;21HE[KE[41;1H21      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[42;1Harstuvwxyz0123456789E[42;21HE[KE[43;1H22      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[44;1Harstuvwxyz0123456789E[44;21HE[KE[45;1H23      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[46;1Harstuvwxyz0123456789E[46;21HE[KE[47;1H24      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[48;1Harstuvwxyz0123456789E[48;21HE[KE[49;1H25      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[50;1Harstuvwxyz0123456789E[50;21HE[KE[51;1H26      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[52;1Harstuvwxyz0123456789E[52;21HE[KE[53;1H27      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[54;1Harstuvwxyz0123456789E[54;21HE[KE[55;1H28      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[56;1Harstuvwxyz0123456789E[56;21HE[KE[57;1H29      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnoppE[58;1Harstuvwxyz0123456789E[58;21HE[KE[59;1H30      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopE[59;1HE[1mE[34m@                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2H E[93CppE[32;1Ha
2 E[93CppE[34;1Ha
3 E[93CppE[36;1Ha
4 E[93CppE[38;1Ha
5 E[93CppE[40;1Ha
6 E[93CppE[42;1Ha
7 E[93CppE[44;1Ha
8 E[93CppE[46;1Ha
9 E[93CppE[48;1Ha
10E[93CppE[50;1Ha
11E[93CppE[52;1Ha
12E[93CppE[54;1Ha
13E[93CppE[56;1Ha
14E[93CppE[58;1Ha
E[7mXtest [+]                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(0, 'recovery start')E[?25lE[1;29rE[1;1HE[LE[1;60rE[1;1Hrecovery startE[30;11HE[1mE[7m[+]E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hwincmd wE[?25lE[30;1HE[7m[No Name] [+]E[mE[1mE[7m E[mE[7m                                                                                   E[mE[59;1HE[1mE[7mXtest [+]                                                                                       E[31;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet linedollar = line('$')E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected " . linecount . 
E[59;96H"E[60;1H lines but found only " . linedollar) | exe 'wincmd w' | let linecount = linedollar | endifE[?25lE[1;1HE[LE[1;1Hrecovery startE[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hlet i = 1E[?25lE[31;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwhile i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call append(line('$'), i .
' differs') | exe 'wincmd w' | endif | let i += 1 | endwhileE[?25lE[1;1HE[LE[1;1Hrecovery startE[60;1HE[KE[31;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hq!E[?25lE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), 'recovery end')E[?25lE[3;1Hrecovery endE[3;13HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 3L, 29C writtenE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test79.failed test.ok test.out X* viminfo
cp test79.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 test79.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test79.in" 226 lines, 2713 charactersE[1;1HTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

Results of test71:

STARTTEST
:set magic
:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/
j:s/I/\lII/
j:s/J/\LJ\EJ/
j:s/K/\Uk\ek/
j:s/L/E[34m^V^ME[m/
j:s/M/\r/
j:s/N/\E[34m^V^ME[m/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/E[34m^V^@E[m/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_1:
A
B
C123456789
D
E
F
G
H
I
J
K
lLl
mMm
nNn
oOo
pPp
qQq
rRr
sSs
tTtE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for *sub-replace-special* and *sub-replace-expression* on :substitute.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 1 line, 14 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H25 lines, 347 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[12;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[37;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magicE[?25lE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[38;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/A/&&/E[?25lE[40;2HAE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/B/\&/E[?25lE[41;1H&E[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/E[?25lE[42;11H987654321E[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/D/d/E[?25lE[43;1HdE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/E/~/E[?25lE[44;1HdE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/F/\~/E[?25lE[45;1H~E[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/G/\ugg/E[?25lE[46;2HgE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/H/\Uh\Eh/E[?25lE[47;2HhE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/I/\lII/E[?25lE[48;1HiIE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/J/\LJ\EJ/E[?25lE[49;1HjJE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/K/\Uk\ek/E[?25lE[50;2HkE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/L/^E[34m^ME[m/E[?25lE[52;59rE[52;1HE[LE[1;60rE[51;2HE[KE[52;1HlE[60;1HE[KE[52;1HE[?12lE[?25h
E[?25lE[60;1H:E[?12lE[?25hs/M/\r/E[?25lE[54;59rE[54;1HE[LE[1;60rE[53;2HE[KE[54;1HmE[60;1HE[KE[54;1HE[?12lE[?25h
E[?25lE[60;1H:E[?12lE[?25hs/N/\^E[34m^ME[m/E[?25lE[55;2HE[34m^ME[mnE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/O/\n/E[?25lE[56;2HE[34m^@E[moE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/P/\b/E[?25lE[57;2HE[34m^HE[mpE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/Q/\t/E[?25lE[58;2H       qE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hs/R/\\/E[?25lE[59;2H\E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HsSsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/S/\c/E[?25lE[59;2HcE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HtTtE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/T/^E[34m^@E[m/E[?25lE[59;2HE[34m^@E[mtE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HUE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/U/\L\uuUu\l\EU/E[?25lE[59;2HuuUE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HVE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/V/\U\lVvV\u\Ev/E[?25lE[59;1HvVVvE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set nomagicE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H25 lines, 351 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[25ME[1;60rE[35;1H:set cpo&
/^TEST/
j:s/A/&&/
j:s/B/\&/
j:s/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/
j:s/D/d/
j:s/E/~/
j:s/F/\~/
j:s/G/\ugg/
j:s/H/\Uh\Eh/
j:s/I/\lII/
j:s/J/\LJ\EJ/
j:s/K/\Uk\ek/
j:s/L/E[34m^V^ME[m/
j:s/M/\r/
j:s/N/\E[34m^V^ME[m/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/E[34m^V^@E[m/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nomagicE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_2:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAE[?12lE[?25hE[?25l
:E[?12lE[?25hs/A/&&/E[?25lE[59;1H&&E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HBE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/B/\&/E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HC123456789E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/E[?25lE[59;11H987654321E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/D/d/E[?25lE[59;1HdE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HEE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/E/~/E[?25lE[59;1H~E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HFE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/F/\~/E[?25lE[59;1H~E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HGE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/G/\ugg/E[?25lE[59;2HgE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HHE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/H/\Uh\Eh/E[?25lE[59;2HhE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HIE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/I/\lII/E[?25lE[59;1HiIE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HJE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/J/\LJ\EJ/E[?25lE[59;1HjJE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HKE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/K/\Uk\ek/E[?25lE[59;2HkE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlLlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/L/^E[34m^ME[m/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HmMmE[?12lE[?25hE[?25l
:E[?12lE[?25hs/M/\r/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HmE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HnNnE[?12lE[?25hE[?25l
:E[?12lE[?25hs/N/\^E[34m^ME[m/E[?25lE[59;2HE[34m^ME[mnE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HoOoE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/O/\n/E[?25lE[59;2HE[34m^@E[moE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HpPpE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/P/\b/E[?25lE[59;2HE[34m^HE[mpE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HqQqE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/Q/\t/E[?25lE[59;2H       qE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HrRrE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/R/\\/E[?25lE[59;2H\E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HsSsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/S/\c/E[?25lE[59;2HcE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HtTtE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/T/^E[34m^@E[m/E[?25lE[59;2HE[34m^@E[mtE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HUE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/U/\L\uuUu\l\EU/E[?25lE[59;2HuuUE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HVE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/V/\U\lVvV\u\Ev/E[?25lE[59;1HvVVvE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set magic&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H15 lines, 203 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[15ME[1;60rE[45;1H:set cpo&
/^TEST/
j:s/A/\='\'/
j:s/B/\='\\'/
j:s/C/\='E[34m^V^ME[m'/
j:s/D/\='\E[34m^V^ME[m'/
j:s/E/\='\\E[34m^V^ME[m'/
j:s/F/\='\r'/
j:s/G/\='E[34m^V^@E[m'/
j:s/H/\='\E[34m^V^@E[m'/
j:s/I/\='\\E[34m^V^@E[m'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_3:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HaAaE[?12lE[?25hE[?25l
:E[?12lE[?25hs/A/\='\'/E[?25lE[59;2H\E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HbBbE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/B/\='\\'/E[?25lE[59;2H\\bE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcCcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/C/\='^E[34m^ME[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdDdE[?12lE[?25hE[?25l
:E[?12lE[?25hs/D/\='\^E[34m^ME[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\E[58;3HE[KE[59;1HdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HeEeE[?12lE[?25hE[?25l
:E[?12lE[?25hs/E/\='\\^E[34m^ME[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\\
eE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HfFfE[?12lE[?25hE[?25l
:E[?12lE[?25hs/F/\='\r'/E[?25lE[59;2H\rfE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HgGgE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/G/\='^E[34m^@E[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HgE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HhHhE[?12lE[?25hE[?25l
:E[?12lE[?25hs/H/\='\^E[34m^@E[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\E[58;3HE[KE[59;1HhE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HiIiE[?12lE[?25hE[?25l
:E[?12lE[?25hs/I/\='\\^E[34m^@E[m'/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\\
iE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HjJjE[?12lE[?25hE[?25l
:E[?12lE[?25hs/J/\='\n'/E[?25lE[59;2H\njE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HkKkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/K/\="\r"/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlLlE[?12lE[?25hE[?25l
:E[?12lE[?25hs/L/\="\n"/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set magic&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H15 lines, 611 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[15ME[1;60rE[45;1H:set cpo&
/^TEST/
j:s/A/\=substitute(submatch(0), '.', '\', '')/
j:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', 'E[34m^V^ME[m', '')/
j:s/D/\=substitute(submatch(0), '.', '\E[34m^V^ME[m', '')/
j:s/E/\=substitute(submatch(0), '.', '\\E[34m^V^ME[m', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', 'E[34m^V^@E[m', '')/
j:s/H/\=substitute(submatch(0), '.', '\E[34m^V^@E[m', '')/
j:s/I/\=substitute(submatch(0), '.', '\\E[34m^V^@E[m', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_4:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HaAaE[?12lE[?25hE[?25l
:E[?12lE[?25hs/A/\=substitute(submatch(0), '.', '\', '')/E[?25lE[59;2H\E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HbBbE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/B/\=substitute(submatch(0), '.', '\\', '')/E[?25lE[59;2H\E[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcCcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/C/\=substitute(submatch(0), '.', '^E[34m^ME[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdDdE[?12lE[?25hE[?25l
:E[?12lE[?25hs/D/\=substitute(submatch(0), '.', '\^E[34m^ME[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HeEeE[?12lE[?25hE[?25l
:E[?12lE[?25hs/E/\=substitute(submatch(0), '.', '\\^E[34m^ME[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\E[58;3HE[KE[59;1HeE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HfFfE[?12lE[?25hE[?25l
:E[?12lE[?25hs/F/\=substitute(submatch(0), '.', '\r', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HfE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HgGgE[?12lE[?25hE[?25l
:E[?12lE[?25hs/G/\=substitute(submatch(0), '.', '^E[34m^@E[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HgE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HhHhE[?12lE[?25hE[?25l
:E[?12lE[?25hs/H/\=substitute(submatch(0), '.', '\^E[34m^@E[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HhE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HiIiE[?12lE[?25hE[?25l
:E[?12lE[?25hs/I/\=substitute(submatch(0), '.', '\\^E[34m^@E[m', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2H\E[58;3HE[KE[59;1HiE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HjJjE[?12lE[?25hE[?25l
:E[?12lE[?25hs/J/\=substitute(submatch(0), '.', '\n', '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HjE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HkKkE[?12lE[?25hE[?25l
:E[?12lE[?25hs/K/\=substitute(submatch(0), '.', "\r", '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlLlE[?12lE[?25hE[?25l
:E[?12lE[?25hs/L/\=substitute(submatch(0), '.', "\n", '')/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set magic&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H4 lines, 222 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[5ME[1;60rE[55;1H:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) . submatch(8) . ssE[58;1Hubmatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)/
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_5:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HA123456789E[?12lE[?25hE[?25l
:E[?12lE[?25hs/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) . submatch(8) . s
E[59;96HuE[60;1Hbmatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)/E[?25lE[1;1HE[LE[1;1HiE[59;11H987654321E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set magic&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H8 lines, 80 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[8ME[1;60rE[52;1H/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST/E[?25lE[60;7HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_6:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset cpo+=/E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/A/a/E[?25lE[59;1HaE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HBE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/B/%/E[?25lE[59;1HaE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo-=/E[?25lE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HCE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/C/c/E[?25lE[59;1HcE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HDE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/D/%/E[?25lE[59;1H%E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[2ME[1;60rE[59;1HSTARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:set magic&E[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H8 lines, 164 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[8ME[1;60rE[52;1H:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^TEST_7/E[?25lE[60;9HE[KE[60;1HE[1;59rE[59;1H
E[1;60rE[59;1HTEST_7:E[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAE[34m^ME[mAE[?12lE[?25hE[?25l
:E[?12lE[?25hs/A./\=submatch(0)/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HAE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HBE[34m^@E[mBE[?12lE[?25hE[?25l
:E[?12lE[?25hs/B./\=submatch(0)/E[?25lE[1;59rE[59;1H
E[1;60rE[58;2HE[KE[59;1HBE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^Q$E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HQE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/Q[^\n]Q/\=submatch(0)."foobar"/E[?25lE[1mE[37mE[41mE486: Pattern not found: Q[^\n]QE[mE[60;33HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Avoid :s error breaks dotest map on Windows.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[1;59rE[1;1HE[3ME[1;60rE[57;1HQ

STARTTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:g/^STARTTEST/.,/^ENDTEST/dE[?12lE[?25hE[?25l
:set ff=unix cpo-=AE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H2 lines, 56 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[59;1HE[?12lE[?25hE[?25l
/ENDTESTE[60;10HE[KE[60;1HE[59;19HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:1;/^Results/,$wq! test.outE[60;1HE[KE[59;19HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hg/^STARTTEST/.,/^ENDTEST/dE[?25l121 fewer linesE[60;16HE[KE[1;1HeE[1;2HE[KE[2;1Hf\rf
g
g
h\
h
i\\
i
j\nj
kE[10;2HE[KE[11;1HkE[11;2HE[KE[12;1HlE[12;2HE[KE[13;1HlE[13;2HE[KE[14;1HE[KE[15;1HE[KE[16;1HTEST_4:
a\a
b\bE[18;4HE[KE[19;1HcE[19;2HE[KE[20;1Hc
dE[21;2HE[KE[22;1HdE[22;2HE[KE[23;1He\E[23;3HE[KE[24;1HeE[24;2HE[KE[25;1HfE[25;2HE[KE[26;1HfE[26;2HE[KE[27;1HgE[27;2HE[KE[28;1HgE[28;2HE[KE[29;1HhE[29;2HE[KE[30;1HhE[30;2HE[KE[31;1Hi\
iE[32;2HE[KE[33;1Hj
j
k
k
l
lE[38;2HE[KE[39;1HE[KE[40;1HE[KE[41;1HTEST_5:E[41;8HE[KE[42;1HA123456789987654321E[42;20HE[KE[43;1HE[KE[44;1HE[KE[45;1HTEST_6:E[45;8HE[KE[46;1HaE[46;2HE[KE[47;1HaE[47;2HE[KE[48;1Hc
%E[49;2HE[KE[50;1HE[KE[51;1HE[KE[52;1HTEST_7:
A
A
B
B
QE[57;2HE[KE[58;1HQE[58;2HE[KE[59;1HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h1;/^Results/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 124 lines, 421 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test80.failed test.ok test.out X* viminfo
cp test80.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 test80.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test80.in" 180 lines, 5272 charactersE[1;1HTest for *sub-replace-special* and *sub-replace-expression* on substitue().
Test for submatch() on substitue().
Test for *:s%* on :substitute.

STARTTEST
:so small.vim
ENDTEST

TEST_1:

STARTTEST
:set magic
:set cpo&
:$put =\"\n\nTEST_1:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\\E[18;1H4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')
:$put =substitute('I', 'I', '\lII', '')
:$put =substitute('J', 'J', '\LJ\EJ', '')
:$put =substitute('K', 'K', '\Uk\ek', '')
:$put =substitute('lLl', 'L', 'E[34m^V^ME[m', '')
:$put =substitute('mMm', 'M', '\r', '')
:$put =substitute('nNn', 'N', '\E[34m^V^ME[m', '')
:$put =substitute('oOo', 'O', '\n', '')
:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\\E[53;1H4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')
:$put =substitute('I', 'I', '\lII', '')E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for *sub-replace-special* and *sub-replace-expression* on substitue().E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[5;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 1 line, 14 characters writtenE[6;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[6;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[11;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H29 lines, 1142 characters writtenE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[12;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[42;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magicE[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_1:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1HSTARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('A', 'A', '&&', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAAE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('B', 'B', '\&', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H&E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5
E[59;96H\E[60;1H4\3\2\1', '')E[?25lE[1;1HE[LE[1;1H:set cpo+=/
:$put =substitute('A', 'A', 'a', '')E[3;20HB', 'B', '%
:set cpo-=/E[4;12HE[KE[5;2H$put =substitute('C', 'C', 'c', '')E[6;20HD', 'D', '%
/^TEST_7E[7;9HE[KE[8;1HENDTESTE[8;8HE[KE[9;1HE[KE[10;1HTEST_7:E[11;1HE[KE[12;1HSTARTTEST
:set magic&E[14;6Hcpo&E[14;10HE[KE[15;2H$put =\"\n\nTEST_7:\"E[16;8Hsubstitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')E[17;19H\"B\nB\", 'B
/^TEST_8E[18;9HE[KE[19;1HENDTESTE[19;8HE[KE[20;1HE[KE[21;1HTEST_8:E[22;1HE[KE[23;1HSTARTTEST
:set magic&E[25;6Hcpo&E[25;10HE[KE[26;2H$put =\"\n\nTEST_8:\"E[27;8H',,X'E[27;13HE[KE[28;2Hs/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'E[29;13HE[KE[30;2Hs/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'E[31;14HE[KE[32;1H:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:E[33;12HE[KE[34;1HENDTESTE[34;8HE[KE[35;1HE[KE[36;1HTEST_9:E[37;1HE[KE[38;1HSTARTTEST
:set magic&E[40;6Hcpo&E[40;10HE[KE[41;2H$put =\"\n\nTEST_9:\"E[42;8H'xxx'E[42;13HE[KE[43;2Hs/x/X/gcE[43;10HE[KE[44;1Hyyq/^TEST_10:
ENDTESTE[45;8HE[KE[46;1HE[KE[47;1HTEST_10:E[48;1HE[KE[49;1HSTARTTEST
:/^Results/,$wq! test.out
ENDTESTE[51;8HE[KE[52;1HE[KE[53;1HResults of test72:E[54;1HE[KE[56;1HTEST_1:
AAE[57;3HE[KE[58;1H&E[58;2HE[KE[59;1HC123456789987654321E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('D', 'D', 'd', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('E', 'E', '~', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H~E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('F', 'F', '\~', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H~E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('G', 'G', '\ugg', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HGgE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('H', 'H', '\Uh\Eh', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HHhE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('I', 'I', '\lII', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HiIE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('J', 'J', '\LJ\EJ', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HjJE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('K', 'K', '\Uk\ek', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HKkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('lLl', 'L', '^E[34m^ME[m', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlE[34m^ME[mlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('mMm', 'M', '\r', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HmE[34m^ME[mmE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('nNn', 'N', '\^E[34m^ME[m', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HnE[34m^ME[mnE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('oOo', 'O', '\n', '')E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Ho
oE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('pPp', 'P', '\b', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HpE[34m^HE[mpE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('qQq', 'Q', '\t', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HqE[7CqE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('rRr', 'R', '\\', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hr\rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('sSs', 'S', '\c', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HscsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('uUu', 'U', \"\n\", '')E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hu
uE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('vVv', 'V', \"\b\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HvE[34m^HE[mvE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('wWw', 'W', \"\\\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hw\wE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('xXx', 'X', \"\r\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HxE[34m^ME[mxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HYyyYE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HzZZzE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_2E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\\E[4;1H4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')
:$put =substitute('I', 'I', '\lII', '')
:$put =substitute('J', 'J', '\LJ\EJ', '')
:$put =substitute('K', 'K', '\Uk\ek', '')
:$put =substitute('lLl', 'L', 'E[34m^V^ME[m', '')
:$put =substitute('mMm', 'M', '\r', '')
:$put =substitute('nNn', 'N', '\E[34m^V^ME[m', '')
:$put =substitute('oOo', 'O', '\n', '')
:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('xXx', 'X', \"\r\", '')
:$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')
:$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')
/^TEST_2
ENDTEST

TEST_2:

STARTTEST
:set nomagic
:set cpo&
:$put =\"\n\nTEST_2:\"
:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\\E[39;1H4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')
:$put =substitute('I', 'I', '\lII', '')
:$put =substitute('J', 'J', '\LJ\EJ', '')
:$put =substitute('K', 'K', '\Uk\ek', '')
:$put =substitute('lLl', 'L', 'E[34m^V^ME[m', '')
:$put =substitute('mMm', 'M', '\r', '')
:$put =substitute('nNn', 'N', '\E[34m^V^ME[m', '')
:$put =substitute('oOo', 'O', '\n', '')
:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H29 lines, 1144 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[4ME[1;60rE[56;1H:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nomagicE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_2:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1H:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
u
u
vE[34m^HE[mv
w\w
xE[34m^ME[mx
YyyY
zZZz


TEST_2:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('A', 'A', '&&', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAAE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('B', 'B', '\&', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H&E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5
E[59;96H\E[60;1H4\3\2\1', '')E[?25lE[1;1HE[LE[1;1Ha:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:E[3;12HE[KE[4;1HENDTESTE[4;8HE[KE[5;1HE[KE[6;1HTEST_9:E[7;1HE[KE[8;1HSTARTTEST
:set magic&E[10;6Hcpo&E[10;10HE[KE[11;2H$put =\"\n\nTEST_9:\"E[12;8H'xxx'E[12;13HE[KE[13;2Hs/x/X/gcE[13;10HE[KE[14;1Hyyq/^TEST_10:
ENDTESTE[15;8HE[KE[16;1HE[KE[17;1HTEST_10:E[18;1HE[KE[19;1HSTARTTEST
:/^Results/,$wq! test.out
ENDTESTE[21;8HE[KE[22;1HE[KE[23;1HResults of test72:E[24;1HE[KE[26;1HTEST_1:
AAE[27;3HE[KE[28;1H&E[28;2HE[KE[29;1HC123456789987654321
dE[30;2HE[KE[31;1H~

Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[2Cm
nE[2Cn
oE[41;2HE[KE[43;1HpE[34m^HE[mp
q       q
r\rE[45;9HE[KE[46;1Hscs
uE[47;2HE[KE[49;1HvE[34m^HE[mv
w\wE[50;4HE[KE[51;1HxE[34m^ME[mx
YyyY
zZZzE[54;1HE[KE[56;1HTEST_2:
AAE[57;3HE[KE[58;1H&E[58;2HE[KE[59;1HC123456789987654321E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('D', 'D', 'd', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('E', 'E', '~', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H~E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('F', 'F', '\~', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H~E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('G', 'G', '\ugg', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HGgE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('H', 'H', '\Uh\Eh', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HHhE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('I', 'I', '\lII', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HiIE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('J', 'J', '\LJ\EJ', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HjJE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('K', 'K', '\Uk\ek', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HKkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('lLl', 'L', '^E[34m^ME[m', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HlE[34m^ME[mlE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('mMm', 'M', '\r', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HmE[34m^ME[mmE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('nNn', 'N', '\^E[34m^ME[m', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HnE[34m^ME[mnE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('oOo', 'O', '\n', '')E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Ho
oE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('pPp', 'P', '\b', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HpE[34m^HE[mpE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('qQq', 'Q', '\t', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HqE[7CqE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('rRr', 'R', '\\', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hr\rE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('sSs', 'S', '\c', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HscsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('tTt', 'T', \"\r\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HtE[34m^ME[mtE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('uUu', 'U', \"\n\", '')E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hu
uE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('vVv', 'V', \"\b\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HvE[34m^HE[mvE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('wWw', 'W', \"\\\", '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hw\wE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('X', 'X', '\L\uxXx\l\EX', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HXxxXE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HyYYyE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_3E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H:$put =substitute('A', 'A', '&&', '')
:$put =substitute('B', 'B', '\&', '')
:$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\0\9\8\7\6\5\\E[4;1H4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')
:$put =substitute('I', 'I', '\lII', '')
:$put =substitute('J', 'J', '\LJ\EJ', '')
:$put =substitute('K', 'K', '\Uk\ek', '')
:$put =substitute('lLl', 'L', 'E[34m^V^ME[m', '')
:$put =substitute('mMm', 'M', '\r', '')
:$put =substitute('nNn', 'N', '\E[34m^V^ME[m', '')
:$put =substitute('oOo', 'O', '\n', '')
:$put =substitute('pPp', 'P', '\b', '')
:$put =substitute('qQq', 'Q', '\t', '')
:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')E[11C| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')E[9C| $put =y
:let y = substitute('cCc', 'C', '\="E[34m^V^ME[m"', '')E[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\E[34m^V^ME[m"', '')E[7C| $put =y
:let y = substitute('eEe', 'E', '\="\\\\E[34m^V^ME[m"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')E[10C| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')E[10C| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')E[11C| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')E[11C| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')E[7C| $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "E[34m^V^ME[m", "")', '')     | $put =y
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\E[34m^V^ME[m", "")', '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\E[34m^V^ME[m", "")', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '')      | $put =y
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H13 lines, 642 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[46;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_3:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1H&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
u
u
vE[34m^HE[mv
w\w
xE[34m^ME[mx
YyyY
zZZz


TEST_2:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet y = substitute('aAa', 'A', '\="\\"', '')           | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Ha\aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hb\\bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('cCc', 'C', '\="^E[34m^ME[m"', '')         | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcE[34m^ME[mcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('dDd', 'D', '\="\\^E[34m^ME[m"', '')       | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hd\E[34m^ME[mdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('eEe', 'E', '\="\\\\^E[34m^ME[m"', '')     | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1He\\E[34m^ME[meE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('fFf', 'F', '\="\\r"', '')          | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hf\rfE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('jJj', 'J', '\="\\n"', '')          | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hj\njE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('kKk', 'K', '\="\r"', '')           | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HkE[34m^ME[mkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('lLl', 'L', '\="\n"', '')           | $put =yE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hl
lE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_4E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H:$put =substitute('rRr', 'R', '\\', '')
:$put =substitute('sSs', 'S', '\c', '')
:$put =substitute('tTt', 'T', \"\r\", '')
:$put =substitute('uUu', 'U', \"\n\", '')
:$put =substitute('vVv', 'V', \"\b\", '')
:$put =substitute('wWw', 'W', \"\\\", '')
:$put =substitute('X', 'X', '\L\uxXx\l\EX', '')
:$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')
/^TEST_3
ENDTEST

TEST_3:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_3:\"
:let y = substitute('aAa', 'A', '\="\\"', '')E[11C| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')E[9C| $put =y
:let y = substitute('cCc', 'C', '\="E[34m^V^ME[m"', '')E[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\E[34m^V^ME[m"', '')E[7C| $put =y
:let y = substitute('eEe', 'E', '\="\\\\E[34m^V^ME[m"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')E[10C| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')E[10C| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')E[11C| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')E[11C| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')E[7C| $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "E[34m^V^ME[m", "")', '')     | $put =y
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\E[34m^V^ME[m", "")', '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\E[34m^V^ME[m", "")', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '')      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '')      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')E[7C| $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')E[7C| $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0))E[55;1H . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((E[56;1H3) . submatch(2) . submatch(1)', '')
/^TEST_6
ENDTEST

E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H13 lines, 912 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[46;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[47;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_4:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1Ho
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
u
u
vE[34m^HE[mv
w\w
xE[34m^ME[mx
YyyY
zZZz


TEST_2:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')       | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Ha\aE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '')     | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hb\bE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^E[34m^ME[m", "")', '')     | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcE[34m^ME[mcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^E[34m^ME[m", "")', '')   | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdE[34m^ME[mdE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^E[34m^ME[m", "")', '') | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1He\E[34m^ME[meE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '')      | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HfE[34m^ME[mfE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '')      | $put =yE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hj
jE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')       | $put =yE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HkE[34m^ME[mkE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hlet y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')       | $put =yE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hl
lE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_5E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H:let y = substitute('bBb', 'B', '\="\\\\"', '')E[9C| $put =y
:let y = substitute('cCc', 'C', '\="E[34m^V^ME[m"', '')E[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\E[34m^V^ME[m"', '')E[7C| $put =y
:let y = substitute('eEe', 'E', '\="\\\\E[34m^V^ME[m"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')E[10C| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')E[10C| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')E[11C| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')E[11C| $put =y
/^TEST_4
ENDTEST

TEST_4:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')E[7C| $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "E[34m^V^ME[m", "")', '')     | $put =y
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\E[34m^V^ME[m", "")', '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\E[34m^V^ME[m", "")', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '')      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '')      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')E[7C| $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')E[7C| $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0))E[37;1H . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((E[38;1H3) . submatch(2) . submatch(1)', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H5 lines, 283 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[40;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[41;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[41;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[41;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_5:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[2;1HTEST_2:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
a\a
b\b
cE[34m^ME[mc
dE[34m^ME[md
e\E[34m^ME[me
fE[34m^ME[mf
j
j
kE[34m^ME[mk
l
l


TEST_5:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0
E[59;96H)E[60;1H . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch
E[59;96H(E[60;1H3) . submatch(2) . submatch(1)', '')E[?25lE[1;1HE[2LE[1;1HTEST_2:
AA
&E[3;2HE[KE[4;1HC123456789987654321
dE[5;2HE[KE[6;1H~

Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[2Cm
nE[2Cn
oE[16;2HE[KE[18;1HpE[34m^HE[mp
q       q
r\rE[20;9HE[KE[21;1Hscs
tE[34m^ME[mt
uE[23;2HE[KE[25;1HvE[34m^HE[mv
w\wE[26;4HE[KE[27;1HXxxX
yYYyE[29;1HE[KE[31;1HTEST_3:
a\aE[32;4HE[KE[33;1Hb\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rfE[37;5HE[KE[38;1Hj\nj
kE[34m^ME[mk
lE[40;2HE[KE[42;1HE[KE[44;1HTEST_4:
a\aE[45;4HE[KE[46;1Hb\b
cE[34m^ME[mc
dE[2Cd
e\E[34m^ME[me
fE[34m^ME[mfE[50;5HE[KE[51;1HjE[51;2HE[KE[53;1HkE[34m^ME[mk
lE[54;2HE[KE[56;1HE[KE[58;1HTEST_5:
A123456789987654321E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_6E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[2;1HSTARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_4:\"
:let y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')E[7C| $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '')     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "E[34m^V^ME[m", "")', '')     | $put =y
:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\E[34m^V^ME[m", "")', '')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\E[34m^V^ME[m", "")', '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', '')      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', '')      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')E[7C| $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')E[7C| $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0))E[25;1H . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((E[26;1H3) . submatch(2) . submatch(1)', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H9 lines, 216 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[42;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_6:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1HC123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
a\a
b\b
cE[34m^ME[mc
dE[34m^ME[md
e\E[34m^ME[me
fE[34m^ME[mf
j
j
kE[34m^ME[mk
l
l


TEST_5:
A123456789987654321


TEST_6:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo+=/E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('A', 'A', 'a', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HaE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('B', 'B', '%', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H%E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset cpo-=/E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('C', 'C', 'c', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HcE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute('D', 'D', '%', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H%E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_7E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)', '\=submatch(0))E[11;1H . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch((E[12;1H3) . submatch(2) . submatch(1)', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H6 lines, 162 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_7:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1HjJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
a\a
b\b
cE[34m^ME[mc
dE[34m^ME[md
e\E[34m^ME[me
fE[34m^ME[mf
j
j
kE[34m^ME[mk
l
l


TEST_5:
A123456789987654321


TEST_6:
a
%
c
%


TEST_7:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =substitute('A^E[34m^ME[mA', 'A.', '\=submatch(0)', '')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HAE[34m^ME[mAE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HB
BE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_8E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST
E[31msearch hit BOTTOM, continuing at TOPE[29;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[31;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H10 lines, 186 characters writtenE[32;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[32;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[42;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[43;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_8:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1Ho
pE[34m^HE[mp
qE[7Cq
r\r
scs
tE[34m^ME[mt
u
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
a\a
b\b
cE[34m^ME[mc
dE[34m^ME[md
e\E[34m^ME[me
fE[34m^ME[mf
j
j
kE[34m^ME[mk
l
l


TEST_5:
A123456789987654321


TEST_6:
a
%
c
%


TEST_7:
AE[34m^ME[mA
B
B


TEST_8:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =',,X'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H,,XE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(^\|,\)\ze\(,\|X\)/\1N/gE[?25lE[59;1HN,,NXE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =',,Y'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H,,YE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(^\|,\)\ze\(,\|Y\)/\1N/gcE[?25lE[59;1HE[7m,E[m
E[32mreplace with \1N (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;1HN,,NYE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =',,Z'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H,,ZE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/\(^\|,\)\ze\(,\|Z\)/\1N/gcE[?25lE[59;1HE[7m,E[m
E[32mreplace with \1N (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;1HN,E[7m,E[mZ
E[32mreplace with \1N (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;3H,NZE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_9:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('AE[34m^V^ME[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H6 lines, 82 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset magic&E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo&E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =\"\n\nTEST_9:\"E[?25l3 more linesE[60;13HE[KE[27mE[mE[HE[2JE[1;1Hu
u
vE[34m^HE[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
cE[34m^ME[mc
d\E[34m^ME[md
e\\E[34m^ME[me
f\rf
j\nj
kE[34m^ME[mk
l
l


TEST_4:
a\a
b\b
cE[34m^ME[mc
dE[34m^ME[md
e\E[34m^ME[me
fE[34m^ME[mf
j
j
kE[34m^ME[mk
l
l


TEST_5:
A123456789987654321


TEST_6:
a
%
c
%


TEST_7:
AE[34m^ME[mA
B
B


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more linesE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put ='xxx'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HxxxE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hs/x/X/gcE[?25lE[59;1HE[7mxE[m
E[32mreplace with X (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;1HXE[7mxE[m
E[32mreplace with X (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;2HXE[7mxE[m
E[32mreplace with X (y/n/a/q/l/^E/^Y)?E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1HE[59;3HxE[?12lE[?25hE[?25l
/E[?12lE[?25h^TEST_10:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[27mE[mE[HE[2JE[1;1H/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
yy/^TEST_9:
ENDTEST

TEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
C123456789987654321
d
~
~
Gg
Hh
iI
jJ
Kk
lE[34m^ME[ml
mE[34m^ME[mm
nE[34m^ME[mn
o
o
pE[34m^HE[mp
qE[7Cq
r\r
scs
E[31msearch hit BOTTOM, continuing at TOPE[30;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H1 line, 26 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[34;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[35;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^Results/,$wq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 115 lines, 454 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test81.failed test.ok test.out X* viminfo
cp test81.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 test81.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test81.in" 22 lines, 308 charactersE[1;1HTest for t movement command and 'cpo-;' setting

STARTTEST
:set nocompatible viminfo+=nviminfo
:set cpo-=;
/firstline/
j0tt;D
0fz;D
$Fy;D
$Ty;D:set cpo+=;
j0tt;;D
$Ty;;D:?firstline?+1,$w! test.out
:qa!
ENDTEST

firstline
aaa two three four
    zzz
yyy
bbb yee yoo four
ccc two three four
ddd yee yoo four
E[1mE[34m~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for t movement command and 'cpo-;' settingE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 10 lines, 143 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[14;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[15;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocompatible viminfo+=nviminfoE[?25lE[15;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo-=;E[?25lE[15;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25hfirstline/E[?25lE[60;11HE[KE[60;1HE[16;1HE[?12lE[?25h
aaa twoE[?25lE[17;9HE[KE[17;7HE[?12lE[?25hE[18;7H    zE[?25lE[18;6HE[KE[18;5HE[?12lE[?25h
yyy  E[?25lE[19;2HE[KE[19;1HE[?12lE[?25h
E[15CE[?25lE[20;6HE[KE[20;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpo+=;E[?25lE[20;5HE[?12lE[?25h
ccc cccE[?25lE[21;5HE[KE[21;3HE[?12lE[?25h
ddE[13CE[?25lE[22;10HE[KE[22;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h?firstline?+1,$w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New] 6L, 36C writtenE[22;9HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test82.failed test.ok test.out X* viminfo
cp test82.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 test82.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test82.in" 103 lines, 3165 charactersE[1;1HTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

STARTTEST
:so small.vim
:if !has("multi_byte")
: e! test.ok
: w! test.out
: qa!
:endif
:set enc=utf8
ggdG
:
:function! Ch(a, op, b, expected)
:  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
:    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))E[17;1H:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)
:  if a:result == 0
:    call Ch(a:a, '==?', a:b, 1)
:    call Ch(a:a, '!=?', a:b, 0)
:    call Ch(a:a, '<=?', a:b, 1)
:    call Ch(a:a, '>=?', a:b, 1)
:    call Ch(a:a, '<?', a:b, 0)
:    call Ch(a:a, '>?', a:b, 0)
:  elseif a:result > 0
:    call Ch(a:a, '==?', a:b, 0)
:    call Ch(a:a, '!=?', a:b, 1)
:    call Ch(a:a, '<=?', a:b, 0)
:    call Ch(a:a, '>=?', a:b, 1)
:    call Ch(a:a, '<?', a:b, 0)
:    call Ch(a:a, '>?', a:b, 1)
:  else
:    call Ch(a:a, '==?', a:b, 0)
:    call Ch(a:a, '!=?', a:b, 1)
:    call Ch(a:a, '<=?', a:b, 1)
:    call Ch(a:a, '>=?', a:b, 0)
:    call Ch(a:a, '<?', a:b, 1)
:    call Ch(a:a, '>?', a:b, 0)
:  endif
:endfunction
:
:function! Check(a, b, result)
:  call Chk(a:a, a:b, a:result)
:  call Chk(a:b, a:a, -a:result)
:endfunction
:
:function! LT(a, b)
:  call Check(a:a, a:b, -1)
:endfunction
:
:function! GT(a, b)
:  call Check(a:a, a:b, 1)
:endfunction
:E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 97 lines, 3054 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[49ME[1;60rE[11;1H:function! EQ(a, b)
:  call Check(a:a, a:b, 0)
:endfunction
:
:let b:passed=0
:call EQ('', '')
:call LT('', 'a')
:call EQ('abc', 'abc')
:call EQ('Abc', 'abC')
:call LT('ab', 'abc')
:call LT('AB', 'abc')
:call LT('ab', 'aBc')
:call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xxE[24;1Hd0\x95\xd0\xbd')
:call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xxE[26;1Hd0\xb5\xd0\xbd')
:call EQ('\xe2\x84\xaa', 'k')
:call LT('\xe2\x84\xaa', 'kkkkkk')
:call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
:call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
:call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6''E[32;1H)
:call EQ('Abc\x80', 'AbC\x80')
:call LT('Abc\x80', 'AbC\x81')
:call LT('Abc', 'AbC\x80')
:call LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad character
:call LT('\xc3XYZ', '\xc3xyz')
:call EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)
:call GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\xbd\x9a after follE[40;1Hding, second string is illegal and was left unchanged, then the strings were bytewise compared
:call LT('\xc3', '\xc3\x83')
:call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
:for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endforE[44;1H:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',  E[45;1Hn)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',  E[47;1Hn)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defgE[34m^[E[mgg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has("multi_byte")E[?25l
:  E[?12lE[?25h: e! test.ok
E[?25l:  E[?12lE[?25h: w! test.out
E[?25l:  E[?12lE[?25h: qa!
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:
:function! LT(a, b)
:  call Check(a:a, a:b, -1)
:endfunctionE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset enc=utf8E[?25lE[27mE[mE[HE[2JE[1;1H:
:function! LT(a, b)
:  call Check(a:a, a:b, -1)
:endfunction
:
:function! GT(a, b)
:  call Check(a:a, a:b, 1)
:endfunction
:
:function! EQ(a, b)
:  call Check(a:a, a:b, 0)
:endfunction
:
:let b:passed=0
:call EQ('', '')
:call LT('', 'a')
:call EQ('abc', 'abc')
:call EQ('Abc', 'abC')
:call LT('ab', 'abc')
:call LT('AB', 'abc')
:call LT('ab', 'aBc')
:call EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\xxE[23;1Hd0\x95\xd0\xbd')
:call LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\xxE[25;1Hd0\xb5\xd0\xbd')
:call EQ('\xe2\x84\xaa', 'k')
:call LT('\xe2\x84\xaa', 'kkkkkk')
:call EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')
:call LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')
:call EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6''E[31;1H)
:call EQ('Abc\x80', 'AbC\x80')
:call LT('Abc\x80', 'AbC\x81')
:call LT('Abc', 'AbC\x80')
:call LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad character
:call LT('\xc3XYZ', '\xc3xyz')
:call EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)
:call GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\xbd\x9a after follE[39;1Hding, second string is illegal and was left unchanged, then the strings were bytewise compared
:call LT('\xc3', '\xc3\x83')
:call EQ('\xc3\xa3xYz', '\xc3\x83XyZ')
:for n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endforE[43;1H:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',  E[44;1Hn)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',  E[46;1Hn)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defgE[34m^[E[mgg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST
E[?12lE[?25hE[?25lE[1;59rE[1;1HE[50LE[1;60rE[1;1HTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)
Also test "g~ap".

STARTTEST
:so small.vim
:if !has("multi_byte")
: e! test.ok
: w! test.out
: qa!
:endif
:set enc=utf8
ggdG
:
:function! Ch(a, op, b, expected)
:  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
:    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expected))E[17;1H:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)
:  if a:result == 0
:    call Ch(a:a, '==?', a:b, 1)
:    call Ch(a:a, '!=?', a:b, 0)
:    call Ch(a:a, '<=?', a:b, 1)
:    call Ch(a:a, '>=?', a:b, 1)
:    call Ch(a:a, '<?', a:b, 0)
:    call Ch(a:a, '>?', a:b, 0)
:  elseif a:result > 0
:    call Ch(a:a, '==?', a:b, 0)
:    call Ch(a:a, '!=?', a:b, 1)
:    call Ch(a:a, '<=?', a:b, 0)
:    call Ch(a:a, '>=?', a:b, 1)
:    call Ch(a:a, '<?', a:b, 0)
:    call Ch(a:a, '>?', a:b, 1)
:  else
:    call Ch(a:a, '==?', a:b, 0)
:    call Ch(a:a, '!=?', a:b, 1)
:    call Ch(a:a, '<=?', a:b, 1)
:    call Ch(a:a, '>=?', a:b, 0)
:    call Ch(a:a, '<?', a:b, 1)
:    call Ch(a:a, '>?', a:b, 0)
:  endif
:endfunction
:
:function! Check(a, b, result)
:  call Chk(a:a, a:b, a:result)
:  call Chk(a:b, a:a, -a:result)
:endfunctionE[1;1HE[?12lE[?25hE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! Ch(a, op, b, expected)E[?25l
:  E[?12lE[?25h:  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
E[?25l:    E[?12lE[?25h:    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a:op, a:b, a:expe
E[59;96HcE[60;1Hted))
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    let b:passed += 1
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[7LE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! Chk(a, b, result)E[?25l
:  E[?12lE[?25h:  if a:result == 0
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '==?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '!=?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>?', a:b, 0)
E[?25l:    E[?12lE[?25h:  elseif a:result > 0
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '==?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '!=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<=?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>?', a:b, 1)
E[?25l:    E[?12lE[?25h:  else
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '==?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '!=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<=?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>=?', a:b, 0)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '<?', a:b, 1)
E[?25l:    E[?12lE[?25h:    call Ch(a:a, '>?', a:b, 0)
E[?25l:    E[?12lE[?25h:  endif
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[23LE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! Check(a, b, result)E[?25l
:  E[?12lE[?25h:  call Chk(a:a, a:b, a:result)
E[?25l:  E[?12lE[?25h:  call Chk(a:b, a:a, -a:result)
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[3LE[?25lE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! LT(a, b)E[?25l
:  E[?12lE[?25h:  call Check(a:a, a:b, -1)
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[2LE[?25lE[2;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! GT(a, b)E[?25l
:  E[?12lE[?25h:  call Check(a:a, a:b, 1)
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[2LE[?25lE[2;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction! EQ(a, b)E[?25l
:  E[?12lE[?25h:  call Check(a:a, a:b, 0)
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[2LE[?25lE[2;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet b:passed=0E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('', '')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('', 'a')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('abc', 'abc')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('Abc', 'abC')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('ab', 'abc')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('AB', 'abc')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('ab', 'aBc')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\xd0\xa3\xd0\xba\
E[59;96HxE[60;1Hd0\x95\xd0\xbd')E[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\xd1\x83\xd0\xba\
E[59;96HxE[60;1Hd0\xb5\xd0\xbd')E[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall EQ('\xe2\x84\xaa', 'k')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('\xe2\x84\xaa', 'kkkkkk')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\xaakk\xe2\x84\xa6
E[59;96H'E[60;1H)E[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall EQ('Abc\x80', 'AbC\x80')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('Abc\x80', 'AbC\x81')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('Abc', 'AbC\x80')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad characterE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall LT('\xc3XYZ', '\xc3xyz')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\xbd\x9a after fo
E[59;96HlE[60;1Hding, second string is illegal and was left unchanged, then the strings were bytewise comparedE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall LT('\xc3', '\xc3\x83')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall EQ('\xc3\xa3xYz', '\xc3\x83XyZ')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.2X', n)) | endfo
E[59;96HrE[60;1HE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfor n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',
n)) | endforE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hfor n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZ\xc2\x%.2XuVw',
n)) | endforE[?25lE[1;1HE[LE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall append(0, printf('%d checks passed', b:passed))E[?25lE[1;59rE[1;1HE[LE[1;60rE[1;1H3732 checks passedE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test that g~ap changes one paragraph only.E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1HE[KE[59;1HE[7mtest82.in [+]                                                                                   E[1;1HE[?12lE[?25hE[?25lE[mabcdE[2;1HE[KE[3;1HdefgE[3;5HE[KE[30;11HE[1mE[7m[+]E[3;4HE[?12lE[?25hE[1;1HE[?25lE[mABCDE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet lns = getline(1,3)E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[1;1H3732 checks passed

E[1mE[34m~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), lns)E[?25lE[3;1HABCDE[3;5HE[KE[4;1HE[KE[5;1HdefgE[5;5HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 5 lines, 31 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test83.failed test.ok test.out X* viminfo
cp test83.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 test83.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test83.in" 76 lines, 1265 charactersE[1;1HTests for tag search with !_TAG_FILE_ENCODING.

STARTTEST
:so mbyte.vim
:set enc=utf8
:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
: e! test.ok
: w! test.out
: qa!
:endif

:/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
:/^tags1$/+1,/^tags1-end$/-1w! Xtags1

ggdG

:call setline('.', 'Results of test83')

:" case1:
:new
:set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
: close
: put ='case1: failed'
:else
: close
: put ='case1: ok'
:endif

:" case2:
:new
:set tags=test83-tags2
:let v:errmsg = ''
:tag /.ï¼¢ï¼£
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case2: failed'
:else
: close
: put ='case2: ok'
:endif

:" case3:
:new
:set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case3: failed'
:else
: close
: put ='case3: ok'
:endif
:closeE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for tag search with !_TAG_FILE_ENCODING.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 58 lines, 1013 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[3ME[1;60rE[58;1H:wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset enc=utf8E[?25lE[27mE[mE[HE[2JE[1;1H:set enc=utf8
:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
: e! test.ok
: w! test.out
: qa!
:endif

:/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt
:/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt
:/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt
:/^tags1$/+1,/^tags1-end$/-1w! Xtags1

ggdG

:call setline('.', 'Results of test83')

:" case1:
:new
:set tags=Xtags1
:let v:errmsg = ''
:tag abcdefghijklmnopqrs
:if v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'
: close
: put ='case1: failed'
:else
: close
: put ='case1: ok'
:endif

:" case2:
:new
:set tags=test83-tags2
:let v:errmsg = ''
:tag /.ï¼¢ï¼£
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case2: failed'
:else
: close
: put ='case2: ok'
:endif

:" case3:
:new
:set tags=test83-tags3
:let v:errmsg = ''
:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case3: failed'
:else
: close
: put ='case3: ok'
:endif
:close

:wq! test.out
ENDTEST
E[?12lE[?25hE[?25l
:E[?12lE[?25hif !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"E[?25l
:  E[?12lE[?25h: e! test.ok
E[?25l:  E[?12lE[?25h: w! test.out
E[?25l:  E[?12lE[?25h: qa!
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1H:set enc=utf8
:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"
: e! test.ok
: w! test.outE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Htext for tags1E[?12lE[?25hE[?25l
:E[?12lE[?25h/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txtE[?25lE[31msearch hit BOTTOM, continuing at TOPE[mE[60;37HE[KE[60;1H"Xtags1.txt" E[60;14HE[KE[60;14H[New File] 2 lines, 35 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txtE[?25l"Xtags2.txt" E[60;14HE[KE[60;14H[New File] 2 lines, 25 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txtE[?25l"Xtags3.txt" E[60;14HE[KE[60;14H[New File] 2 lines, 25 characters writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^tags1$/+1,/^tags1-end$/-1w! Xtags1E[?25l"Xtags1" E[60;10HE[KE[60;10H[New File] 2 lines, 81 characters writtenE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HabcdefghijklmnopqrsE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[1;1HE[6LE[1;60rE[1;1HTests for tag search with !_TAG_FILE_ENCODING.

STARTTEST
:so mbyte.vim
:set enc=utf8
:if !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"E[1;1HE[?12lE[?25hE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall setline('.', 'Results of test83')E[?25lE[1;1HResults of test83E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" case1:E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1HResults of test83E[31;18HE[KE[59;1HE[7mtest83.in [+]                                                                                   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset tags=Xtags1E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet v:errmsg = ''E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htag abcdefghijklmnopqrsE[?25l"Xtags1.txt" E[60;14HE[KE[60;14H2 lines, 35 charactersE[1;1Htext for tags1
abcdefghijklmnopqrsE[2;20HE[KE[30;1HE[1mE[7mXtags1.txtE[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'E[?25l
:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case1: failed'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case1: ok'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[6LE[?25lE[1;1HResults of test83
case1: ok
E[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" case2:E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1Hcase1: okE[31;10HE[KE[59;1HE[7mtest83.in [+]                                                                                   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset tags=test83-tags2E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet v:errmsg = ''E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htag /.ï¼¢ï¼£E[?25l"Xtags2.txt" 2 lines, 25 charactersE[1;1Htext for tags2
ï¼¡ï¼¢ï¼£E[2;7HE[KE[30;1HE[1mE[7mXtags2.txtE[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'E[?25l
:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case2: failed'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case2: ok'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[6LE[?25lE[1;1HResults of test83
case1: ok
case2: ok
E[1mE[34m~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" case3:E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1Hcase1: okE[31;10HE[KE[32;1Hcase2: okE[32;10HE[KE[59;1HE[7mtest83.in [+]                                                                                   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset tags=test83-tags3E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet v:errmsg = ''E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htag abc50E[?25l"Xtags3.txt" 2 lines, 25 charactersE[1;1Htext for tags3
ï¼¡ï¼¢ï¼£E[2;7HE[KE[30;1HE[1mE[7mXtags3.txtE[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hif v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'E[?25l
:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case3: failed'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: close
E[?25l:  E[?12lE[?25h: put ='case3: ok'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[6LE[?25lE[1;1HResults of test83
case1: ok
case2: ok
case3: ok
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[4;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcloseE[?25lE[1mE[37mE[41mE37: No write since last change (add ! to override)E[4;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwq! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 4 lines, 48 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test84.failed test.ok test.out X* viminfo
cp test84.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 test84.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test84.in" 35 lines, 786 charactersE[1;1HTests for curswant not changing when setting an option

STARTTEST
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
:let target_option_names = split(@0)
:function TestCurswant(option_name)
:  normal! ggf8j
:  let curswant_before = winsaveview().curswant
:  execute 'let' '&'.a:option_name '=' '&'.a:option_name
:  let curswant_after = winsaveview().curswant
:  return [a:option_name, curswant_before, curswant_after]
:endfunction
:
:new
:put =['1234567890', '12345']
:1 delete _
:let result = []
:for option_name in target_option_names
:  call add(result, TestCurswant(option_name))
:endfor
:
:new
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

start target optionsE[32;9HtabstopE[33;9HtimeoutlenE[34;9Httimeoutlen
end target options
E[1mE[34m~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for curswant not changing when setting an optionE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 25 lines, 637 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[29;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start target options$/+1,/^end target options$/-1 yankE[?25l3 lines yankedE[60;15HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet target_option_names = split(@0)E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction TestCurswant(option_name)E[?25l
:  E[?12lE[?25h:  normal! ggf8j
E[?25l:  E[?12lE[?25h:  let curswant_before = winsaveview().curswant
E[?25l:  E[?12lE[?25h:  execute 'let' '&'.a:option_name '=' '&'.a:option_name
E[?25l:  E[?12lE[?25h:  let curswant_after = winsaveview().curswant
E[?25l:  E[?12lE[?25h:  return [a:option_name, curswant_before, curswant_after]
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[6LE[?25lE[1;1HTests for curswant not changing when setting an option

STARTTEST
:so small.vim
:/^start target options$/+1,/^end target options$/-1 yank
:let target_option_names = split(@0)E[60;1HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1H:1 delete _E[31;12HE[KE[32;1H:let result = []
:for option_name in target_option_names
:  call add(result, TestCurswant(option_name))
:endfoE[35;8HE[KE[36;1H:E[36;2HE[KE[37;1H:newE[37;5HE[KE[38;1H:put =map(copy(result), 'join(v:val, '' '')')E[38;46HE[KE[39;1H:1 delete _E[39;12HE[KE[40;1H:write test.outE[40;16HE[KE[41;1H:E[41;2HE[KE[42;1H:qall!E[42;7HE[KE[43;1HENDTESTE[43;8HE[KE[44;1HE[KE[45;1Hstart target optionsE[45;21HE[KE[46;1H        tabstopE[46;16HE[KE[47;1H        timeoutlenE[47;19HE[KE[48;1H        ttimeoutlenE[48;20HE[KE[49;1Hend target optionsE[49;19HE[KE[59;1HE[7mtest84.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =['1234567890', '12345']E[?25lE[2;1H1234567890E[2;11HE[KE[3;1H12345E[3;6HE[KE[30;11HE[1mE[7m[+]E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1 delete _E[?25lE[1;29rE[29;1H
E[1;60rE[29;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hlet result = []E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor option_name in target_option_namesE[?25l
:  E[?12lE[?25h:  call add(result, TestCurswant(option_name))
E[?25l:  E[?12lE[?25h:endforE[1;1HE[2LE[?25lE[1;1H1234567890
12345E[60;1HE[KE[2;5HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[2;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnewE[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[1mE[7m[No Name]                                                                                       E[mE[21;1H12345
E[1mE[34m~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[mE[40;1HE[7m[No Name] [+]                                                                                   E[mE[41;1H:
:new
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST

start target optionsE[51;9HtabstopE[52;9HtimeoutlenE[53;9Httimeoutlen
end target options
E[1mE[34m~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mtest84.in                                                                                       E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hput =map(copy(result), 'join(v:val, '' '')')E[?25l3 more linesE[60;13HE[KE[2;1Htabstop 7 4E[2;12HE[KE[3;1Htimeoutlen 7 7E[3;15HE[KE[4;1Httimeoutlen 7 7E[4;16HE[KE[20;11HE[1mE[7m[+]E[4;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1 delete _E[?25lE[1;19rE[19;1H
E[1;60rE[19;1HE[1mE[34m~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hwrite test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 3 lines, 43 characters writtenE[20;1HE[1mE[7mtest.out]      E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqall!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test85.failed test.ok test.out X* viminfo
cp test85.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 test85.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test85.in" 85 lines, 1868 charactersE[1;1HTest for Lua interface and luaeval() function

STARTTEST
:so small.vim
:so lua.vim
:set nocompatible viminfo+=nviminfo
:lua l = vim.list():add"item0":add"dictionary with list OK":add"item2"
:lua h = vim.dict(); h.list = l
:call garbagecollect()
/^1
:" change buffer contents
:lua curbuf = vim.buffer()
:lua curline = vim.eval"line('.')"
:lua curbuf[curline] = "1 changed line 1"
:" scalar test
:let tmp_string = luaeval('"string"')
:let tmp_1000 = luaeval('1000')
:if printf("%s%.0f", tmp_string, tmp_1000) == "string1000"
:let scalar_res = "OK"
:else
:let scalar_res = "FAILED"
:endif
:call append(search("^1"), "scalar test " . scalar_res)
:" dictionary containing a list
:let tmp = luaeval("h").list[1]
:/^2/put =tmp
:" circular list (at the same time test lists containing lists)
:lua l[2] = l
:let l2 = luaeval("h").list
:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED"
:endif
:call setline(search("^3"), "circular test " . res)

:let l = []
:lua l = vim.eval("l")
:lua l:add(123)
:lua l:add("abc")
:lua l:add(vim.eval("[1, 2, 3]"))
:lua l:add(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l:insert(123)
:lua l:insert("abc")
:lua l:insert(vim.eval("[1, 2, 3]"))
:lua l:insert(vim.eval("{'a':1, 'b':2, 'c':3}"))
:lua l[0] = l[0]
:lua l[1] = l[1]
:lua l[2] = l[2]
:lua l[3] = l[3]
:lua l[0] = 123
:lua l[1] = "abc"
:lua l[2] = vim.eval("[1, 2, 3]")
:lua l[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua l[3] = nil
:lua l[2] = nil
:lua l[1] = nil
:lua l[0] = nil
:lua l = nilE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for Lua interface and luaeval() functionE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 77 lines, 1775 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[22ME[1;60rE[38;1H:$put =string(l)

:let d = {}
:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso lua.vimE[?25l"test.ok" E[60;11HE[KE[60;11H7 lines, 206 characters
"test.out" [New File] 7 lines, 206 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test86.failed test.ok test.out X* viminfo
cp test86.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 test86.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test86.in" 1320 lines, 34942 charactersE[1;1HTests for various python features.     vim: set ft=vim :

NOTE: This will cause errors when run under valgrind.
This would require recompiling Python with:
  ./configure --without-pymalloc
See http://svn.python.org/view/python/trunk/Misc/README.valgrind?view=markup

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:if !has('python') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py import vim
:let l = []
:py l=vim.bindeval('l')
:py f=vim.bindeval('function("strlen")')
:" Extending List directly with different types
:py l.extend([1, "as'd", [1, 2, f, {'a': 1}]])
:$put =string(l)
:$put =string(l[-1])
:try
:  $put =string(l[-4])
:catch
:  $put =v:exception[:13]
:endtry
:" List assignment
:py l[0]=0
:$put =string(l)
:py l[-2]=f
:$put =string(l)
:"
:" Extending Dictionary directly with different types
:let d = {}
:fun d.f()
:  return 1
:endfun
py << EOF
d=vim.bindeval('d')
d['1']='asd'
d.update(b=[1, 2, f])
d.update((('-1', {'a': 1}),))
d.update({'0': -1})
dk = d.keys()
dv = d.values()
di = d.items()
cmpfun = lambda a, b: cmp(repr(a), repr(b))
dk.sort(cmpfun)
dv.sort(cmpfun)
di.sort(cmpfun)
EOF
:$put =pyeval('d[''f''](self={})')
:$put =pyeval('repr(dk)')
:$put =substitute(pyeval('repr(dv)'),'0x\x\+','','g')
:$put =substitute(pyeval('repr(di)'),'0x\x\+','','g')
:for [key, Val] in sort(items(d))
:  $put =string(key) . ' : ' . string(Val)
:  unlet key ValE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for various python features.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[8;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 1309 lines, 34649 characters writtenE[9;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[9;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1Hdel tmsss
EOF
:"
:" Test exceptions
:fun Exe(e)
:   execute a:e
:endfun
py << EOF
Exe = vim.bindeval('function("Exe")')
ee('vim.command("throw \'abcN\'")')
ee('Exe("throw \'def\'")')
ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
del Exe
EOF
:delfunction Exe
:"
:" Cleanup
py << EOF
del cb
del ee
del sys
del os
del vim
EOF
:endfun
:"
:fun RunTest()
:let checkrefs = !empty($PYTHONDUMPREFS)
:let start = getline(1, '$')
:for i in range(checkrefs ? 10 : 1)
:   if i != 0
:E[7C%d _
:E[7Ccall setline(1, start)
:   endif
:   call Test()
:   if i == 0
:E[7Clet result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST

start:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset encoding=latin1E[?25lE[27mE[mE[HE[2JE[1;1Hdel tmsss
EOF
:"
:" Test exceptions
:fun Exe(e)
:   execute a:e
:endfun
py << EOF
Exe = vim.bindeval('function("Exe")')
ee('vim.command("throw \'abcN\'")')
ee('Exe("throw \'def\'")')
ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
del Exe
EOF
:delfunction Exe
:"
:" Cleanup
py << EOF
del cb
del ee
del sys
del os
del vim
EOF
:endfun
:"
:fun RunTest()
:let checkrefs = !empty($PYTHONDUMPREFS)
:let start = getline(1, '$')
:for i in range(checkrefs ? 10 : 1)
:   if i != 0
:E[7C%d _
:E[7Ccall setline(1, start)
:   endif
:   call Test()
:   if i == 0
:E[7Clet result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST

start:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hset noswapfileE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('python') | e! test.ok | wq! test.out | endifE[?25l"test.ok" E[60;11HE[KE[60;11H1197 lines, 56672 characters
"test.out" [New File] 1197 lines, 56672 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test87.failed test.ok test.out X* viminfo
cp test87.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 test87.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test87.in" 1271 lines, 33847 charactersE[1;1HTests for various python features.     vim: set ft=vim :

STARTTEST
:so small.vim
:set noswapfile
:if !has('python3') | e! test.ok | wq! test.out | endif
:lang C
:fun Test()
:py3 import vim
:let l = []
:py3 l=vim.bindeval('l')
:py3 f=vim.bindeval('function("strlen")')
:" Extending List directly with different types
:py3 l+=[1, "as'd", [1, 2, f, {'a': 1}]]
:$put =string(l)
:$put =string(l[-1])
:try
:  $put =string(l[-4])
:catch
:  $put =v:exception[:13]
:endtry
:" List assignment
:py3 l[0]=0
:$put =string(l)
:py3 l[-2]=f
:$put =string(l)
:"
:" Extending Dictionary directly with different types
:let d = {}
:fun d.f()
:  return 1
:endfun
py3 << EOF
d=vim.bindeval('d')
d['1']='asd'
d.update(b=[1, 2, f])
d.update((('-1', {'a': 1}),))
d.update({'0': -1})
dk = d.keys()
dv = d.values()
di = d.items()
dk.sort(key=repr)
dv.sort(key=repr)
di.sort(key=repr)
EOF
:$put =py3eval('d[''f''](self={})')
:$put =py3eval('repr(dk)')
:$put =substitute(py3eval('repr(dv)'),'0x\x\+','','g')
:$put =substitute(py3eval('repr(di)'),'0x\x\+','','g')
:for [key, Val] in sort(items(d))
:  $put =string(key) . ' : ' . string(Val)
:  unlet key Val
:endfor
:py3 del dk
:py3 del di
:py3 del dv
:"
:" removing items with del
:py3 del l[2]E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for various python features.     vim: set ft=vim :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 1265 lines, 33763 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1Hdel tmsss
EOF
:"
:" Test exceptions
:fun Exe(e)
:   execute a:e
:endfun
py3 << EOF
Exe = vim.bindeval('function("Exe")')
ee('vim.command("throw \'abcN\'")')
ee('Exe("throw \'def\'")')
ee('vim.eval("Exe(\'throw \'\'ghi\'\'\')")')
ee('vim.eval("Exe(\'echoerr \'\'jkl\'\'\')")')
ee('vim.eval("Exe(\'xxx_non_existent_command_xxx\')")')
ee('vim.bindeval("Exe(\'xxx_non_existent_command_xxx\')")')
del Exe
EOF
:delfunction Exe
:"
:" Cleanup
py3 << EOF
del cb
del ee
del sys
del os
del vim
EOF
:endfun
:"
:fun RunTest()
:let checkrefs = !empty($PYTHONDUMPREFS)
:let start = getline(1, '$')
:for i in range(checkrefs ? 10 : 1)
:   if i != 0
:E[7C%d _
:E[7Ccall setline(1, start)
:   endif
:   call Test()
:   if i == 0
:E[7Clet result = getline(1, '$')
:   endif
:endfor
:if checkrefs
:   %d _
:   call setline(1, result)
:endif
:endfun
:"
:call RunTest()
:delfunction RunTest
:delfunction Test
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST

start:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noswapfileE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('python3') | e! test.ok | wq! test.out | endifE[?25l"test.ok" E[60;11HE[KE[60;11H1186 lines, 66350 characters
"test.out" [New File] 1186 lines, 66350 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test88.failed test.ok test.out X* viminfo
cp test88.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 test88.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test88.in" 88 lines, 1352 charactersE[1;1Hvim: set ft=vim

Tests for correct display (cursor column position) with +conceal and
tabulators.

STARTTEST
:so small.vim
:if !has('conceal')
   e! test.ok
   wq! test.out
:endif
:" Conceal settings.
:set conceallevel=2
:set concealcursor=nc
:syntax match test /|/ conceal
:" Save current cursor position. Only works in <expr> mode, can't be used
:" with :normal because it moves the cursor to the command line. Thanks to ZyX
:" <zyx.vim@gmail.com> for the idea to use an <expr> mapping.
:let positions = []
:nnoremap <expr> GG ":let positions += ['".screenrow().":".screencol()."']\n"
:" Start test.
/^start:
:normal ztj
GGk
:" We should end up in the same column when running these commands on the two
:" lines.
:normal ft
GGk
:normal $
GGk
:normal 0j
GGk
:normal ft
GGk
:normal $
GGk
:normal 0j0j
GGk
:" Same for next test block.
:normal ft
GGk
:normal $
GGk
:normal 0j
GGk
:normal ft
GGk
:normal $
GGk
:normal 0j0j
GGk
:" And check W with multiple tabs and conceals in a line.
:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1Hvim: set ft=vimE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 71 lines, 1119 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[19ME[1;60rE[41;1HGGk
:normal 0j
GGk
:normal W
GGk
:normal W
GGk
:normal W
GGk
:normal $
GGk
:set lbr
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('conceal')E[?25l
:  E[?12lE[?25h   e! test.ok
E[?25l"test.ok" 24 lines, 112 characters
:  E[?12lE[?25h   wq! test.out
E[?25l"test.out" [New File] 24 lines, 112 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test89.failed test.ok test.out X* viminfo
cp test89.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 test89.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test89.in" 71 lines, 1514 charactersE[1;1H- Some tests for setting 'number' and 'relativenumber'
  This is not all that useful now that the options are no longer reset when
  setting the other.
- Some tests for findfile() function

STARTTEST
:so small.vim
:set hidden nocp nu rnu viminfo+=nviminfo
:redir @a | set nu? rnu? | redir END
:e! xx
:redir @b | set nu? rnu? | redir END
:e! #
:$put ='results:'
:$put a
:$put b
:"
:set nonu nornu
:setglobal nu
:setlocal rnu
:redir @c | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setlocal nu
:redir @d | setglobal rnu? | redir END
:$put =':setlocal must NOT reset the other global value'
:$put c
:$put d
:"
:set nonu nornu
:setglobal nu
:setglobal rnu
:redir @e | setglobal nu? | redir END
:set nonu nornu
:setglobal rnu
:setglobal nu
:redir @f | setglobal rnu? | redir END
:$put =':setglobal MUST reset the other global value'
:$put e
:$put f
:"
:set nonu nornu
:set nu
:set rnu
:redir @g | setglobal nu? | redir END
:set nonu nornu
:set rnu
:set nu
:redir @h | setglobal rnu? | redir END
:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1H- Some tests for setting 'number' and 'relativenumber'E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 63 lines, 1305 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[11ME[1;60rE[49;1H:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset hidden nocp nu rnu viminfo+=nviminfoE[?25lE[1;1HE[33m 58 E[m:$put ='results:'
E[33m 57 E[m:$put a
E[33m 56 E[m:$put b
E[33m 55 E[m:"
E[33m 54 E[m:set nonu nornu
E[33m 53 E[m:setglobal nu
E[33m 52 E[m:setlocal rnu
E[33m 51 E[m:redir @c | setglobal nu? | redir END
E[33m 50 E[m:set nonu nornu
E[33m 49 E[m:setglobal rnu
E[33m 48 E[m:setlocal nu
E[33m 47 E[m:redir @d | setglobal rnu? | redir END
E[33m 46 E[m:$put =':setlocal must NOT reset the other global value'
E[33m 45 E[m:$put c
E[33m 44 E[m:$put d
E[33m 43 E[m:"
E[33m 42 E[m:set nonu nornu
E[33m 41 E[m:setglobal nu
E[33m 40 E[m:setglobal rnu
E[33m 39 E[m:redir @e | setglobal nu? | redir END
E[33m 38 E[m:set nonu nornu
E[33m 37 E[m:setglobal rnu
E[33m 36 E[m:setglobal nu
E[33m 35 E[m:redir @f | setglobal rnu? | redir END
E[33m 34 E[m:$put =':setglobal MUST reset the other global value'
E[33m 33 E[m:$put e
E[33m 32 E[m:$put f
E[33m 31 E[m:"
E[33m 30 E[m:set nonu nornu
E[33m 29 E[m:set nu
E[33m 28 E[m:set rnu
E[33m 27 E[m:redir @g | setglobal nu? | redir END
E[33m 26 E[m:set nonu nornu
E[33m 25 E[m:set rnu
E[33m 24 E[m:set nu
E[33m 23 E[m:redir @h | setglobal rnu? | redir END
E[33m 22 E[m:$put =':set MUST reset the other global value'
E[33m 21 E[m:$put g
E[33m 20 E[m:$put h
E[33m 19 E[m:"
E[33m 18 E[m:let cwd=getcwd()
E[33m 17 E[m:cd ..
E[33m 16 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done to
E[33m 15 E[m:" get above src/
E[33m 14 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
E[33m 13 E[m:$put =''
E[33m 12 E[m:$put ='Testing findfile'
E[33m 11 E[m:$put =''
E[33m 10 E[m:set ssl
E[33m  9 E[m:$put =findfile('test19.in','src/test*')
E[33m  8 E[m:exe "cd" cwd
E[33m  7 E[m:cd ..
E[33m  6 E[m:$put =findfile('test19.in','test*')
E[33m  5 E[m:$put =findfile('test19.in','testdir')
E[33m  4 E[m:exe "cd" cwd
E[33m  3 E[m:/^results/,$w! test.out
E[33m  2 E[m:q!
E[33m  1 E[mENDTEST
E[33m71  E[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hredir @a | set nu? rnu? | redir ENDE[?25lE[60;1HE[KE[60;1H  number
  relativenumber
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he! xxE[?25l"xx" [New File]E[1;1HE[2LE[1;1HE[33m1   E[m
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;3HE[KE[1;5HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hredir @b | set nu? rnu? | redir ENDE[?25lE[60;1HE[KE[60;1H  number
  relativenumber
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25he! #E[?25l"test89.in" line 71 of 71 --100%-- col 1E[1;1HE[2LE[1;1HE[33m 58 E[m:$put ='results:'
E[33m 57 E[m:$put a
E[33m 56 E[m:$put bE[3;12HE[KE[4;1HE[33m 55 E[m:"E[4;7HE[KE[5;1HE[33m 54 E[m:set nonu nornuE[5;20HE[KE[6;1HE[33m 53 E[m:setglobal nuE[6;18HE[KE[7;1HE[33m 52 E[m:setlocal rnuE[7;18HE[KE[8;1HE[33m 51 E[m:redir @c | setglobal nu? | redir ENDE[8;42HE[KE[9;1HE[33m 50 E[m:set nonu nornuE[9;20HE[KE[10;1HE[33m 49 E[m:setglobal rnuE[10;19HE[KE[11;1HE[33m 48 E[m:setlocal nuE[11;17HE[KE[12;1HE[33m 47 E[m:redir @d | setglobal rnu? | redir ENDE[12;43HE[KE[13;1HE[33m 46 E[m:$put =':setlocal must NOT reset the other global value'E[13;61HE[KE[14;1HE[33m 45 E[m:$put cE[14;12HE[KE[15;1HE[33m 44 E[m:$put dE[15;12HE[KE[16;1HE[33m 43 E[m:"E[16;7HE[KE[17;1HE[33m 42 E[m:set nonu nornuE[17;20HE[KE[18;1HE[33m 41 E[m:setglobal nuE[18;18HE[KE[19;1HE[33m 40 E[m:setglobal rnuE[19;19HE[KE[20;1HE[33m 39 E[m:redir @e | setglobal nu? | redir ENDE[20;42HE[KE[21;1HE[33m 38 E[m:set nonu nornuE[21;20HE[KE[22;1HE[33m 37 E[m:setglobal rnuE[22;19HE[KE[23;1HE[33m 36 E[m:setglobal nuE[23;18HE[KE[24;1HE[33m 35 E[m:redir @f | setglobal rnu? | redir ENDE[24;43HE[KE[25;1HE[33m 34 E[m:$put =':setglobal MUST reset the other global value'E[25;58HE[KE[26;1HE[33m 33 E[m:$put eE[26;12HE[KE[27;1HE[33m 32 E[m:$put fE[27;12HE[KE[28;1HE[33m 31 E[m:"E[28;7HE[KE[29;1HE[33m 30 E[m:set nonu nornuE[29;20HE[KE[30;1HE[33m 29 E[m:set nuE[30;12HE[KE[31;1HE[33m 28 E[m:set rnuE[31;13HE[KE[32;1HE[33m 27 E[m:redir @g | setglobal nu? | redir ENDE[32;42HE[KE[33;1HE[33m 26 E[m:set nonu nornuE[33;20HE[KE[34;1HE[33m 25 E[m:set rnuE[34;13HE[KE[35;1HE[33m 24 E[m:set nuE[35;12HE[KE[36;1HE[33m 23 E[m:redir @h | setglobal rnu? | redir ENDE[36;43HE[KE[37;1HE[33m 22 E[m:$put =':set MUST reset the other global value'E[37;52HE[KE[38;1HE[33m 21 E[m:$put gE[38;12HE[KE[39;1HE[33m 20 E[m:$put hE[39;12HE[KE[40;1HE[33m 19 E[m:"E[40;7HE[KE[41;1HE[33m 18 E[m:let cwd=getcwd()E[41;22HE[KE[42;1HE[33m 17 E[m:cd ..E[42;11HE[KE[43;1HE[33m 16 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done toE[43;84HE[KE[44;1HE[33m 15 E[m:" get above src/E[44;22HE[KE[45;1HE[33m 14 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[45;79HE[KE[46;1HE[33m 13 E[m:$put =''E[46;14HE[KE[47;1HE[33m 12 E[m:$put ='Testing findfile'E[47;30HE[KE[48;1HE[33m 11 E[m:$put =''E[48;14HE[KE[49;1HE[33m 10 E[m:set sslE[49;13HE[KE[50;1HE[33m  9 E[m:$put =findfile('test19.in','src/test*')E[50;45HE[KE[51;1HE[33m  8 E[m:exe "cd" cwdE[51;18HE[KE[52;1HE[33m  7 E[m:cd ..E[52;11HE[KE[53;1HE[33m  6 E[m:$put =findfile('test19.in','test*')E[53;41HE[KE[54;1HE[33m  5 E[m:$put =findfile('test19.in','testdir')E[54;43HE[KE[55;1HE[33m  4 E[m:exe "cd" cwdE[55;18HE[KE[56;1HE[33m  3 E[m:/^results/,$w! test.outE[56;29HE[KE[57;1HE[33m  2 E[m:q!E[57;8HE[KE[58;1HE[33m  1 E[mENDTESTE[58;12HE[KE[59;1HE[33m71  E[mE[59;5HE[KE[60;3HE[KE[60;1H"test89.in" line 71 of 71 --100%-- col 1E[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put ='results:'E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
72  E[mresults:E[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put aE[?25l3 more linesE[1;59rE[1;1HE[3ME[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 E[m  number
E[33m75  E[m  relativenumberE[60;1HE[KE[60;1H3 more linesE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put bE[?25l3 more linesE[1;59rE[1;1HE[3ME[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 E[m  number
E[33m78  E[m  relativenumberE[60;1HE[KE[60;1H3 more linesE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[1;1H:redir @c | setglobal nu? | redir ENDE[1;39HE[KE[2;1H:set nonu nornuE[2;16HE[KE[3;1H:setglobal rnuE[3;16HE[KE[4;1H:setlocal nuE[4;13HE[KE[5;1H:redir @d | setglobal rnu? | redir ENDE[5;40HE[KE[6;1H:$put =':setlocal must NOT reset the other global value'E[6;57HE[KE[7;1H:$put cE[7;8HE[KE[8;1H:$put dE[8;8HE[KE[9;1H:"E[9;3HE[KE[10;1H:set nonu nornuE[10;16HE[KE[11;1H:setglobal nuE[11;14HE[KE[12;1H:setglobal rnuE[12;16HE[KE[13;1H:redir @e | setglobal nu? | redir ENDE[13;39HE[KE[14;1H:set nonu nornuE[14;16HE[KE[15;1H:setglobal rnuE[15;16HE[KE[16;1H:setglobal nuE[16;14HE[KE[17;1H:redir @f | setglobal rnu? | redir ENDE[17;40HE[KE[18;1H:$put =':setglobal MUST reset the other global value'E[18;54HE[KE[19;1H:$put eE[19;8HE[KE[20;1H:$put fE[20;8HE[KE[21;1H:"E[21;3HE[KE[22;1H:set nonu nornuE[22;16HE[KE[23;1H:set nuE[23;8HE[KE[24;1H:set rnuE[24;10HE[KE[25;1H:redir @g | setglobal nu? | redir ENDE[25;39HE[KE[26;1H:set nonu nornuE[26;16HE[KE[27;1H:set rnuE[27;10HE[KE[28;1H:set nuE[28;8HE[KE[29;1H:redir @h | setglobal rnu? | redir ENDE[29;40HE[KE[30;1H:$put =':set MUST reset the other global value'E[30;48HE[KE[31;1H:$put gE[31;8HE[KE[32;1H:$put hE[32;8HE[KE[33;1H:"E[33;3HE[KE[34;1H:let cwd=getcwd()E[34;18HE[KE[35;1H:cd ..E[35;7HE[KE[36;1H:" Tests may be run from a shadow directory, so an extra cd needs to be done toE[36;80HE[KE[37;1H:" get above src/E[37;18HE[KE[38;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[38;75HE[KE[39;1H:$put =''E[39;11HE[KE[40;1H:$put ='Testing findfile'E[40;26HE[KE[41;1H:$put =''E[41;11HE[KE[42;1H:set sslE[42;10HE[KE[43;1H:$put =findfile('test19.in','src/test*')E[43;41HE[KE[44;1H:exe "cd" cwdE[44;15HE[KE[45;1H:cd ..E[45;7HE[KE[46;1H:$put =findfile('test19.in','test*')E[46;37HE[KE[47;1H:$put =findfile('test19.in','testdir')E[47;39HE[KE[48;1H:exe "cd" cwdE[48;15HE[KE[49;1H:/^results/,$w! test.ouE[49;25HE[KE[50;1H:q!E[50;4HE[KE[51;1HENDTESTE[51;8HE[KE[52;1HE[KE[53;1Hresults:E[53;9HE[KE[54;1HE[KE[55;1H  numberE[55;9HE[KE[56;1H  relativenumberE[56;17HE[KE[57;1HE[KE[58;1H  numberE[58;9HE[KE[59;1H  relativenumberE[59;17HE[KE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal nuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetlocal rnuE[?25lE[1;1HE[33m 58 E[m:redir @c | setglobal nu? | redir END
E[33m 57 E[m:set nonu nornu
E[33m 56 E[m:setglobal rnu
E[33m 55 E[m:setlocal nu
E[33m 54 E[m:redir @d | setglobal rnu? | redir END
E[33m 53 E[m:$put =':setlocal must NOT reset the other global value'
E[33m 52 E[m:$put c
E[33m 51 E[m:$put d
E[33m 50 E[m:"
E[33m 49 E[m:set nonu nornu
E[33m 48 E[m:setglobal nu
E[33m 47 E[m:setglobal rnu
E[33m 46 E[m:redir @e | setglobal nu? | redir END
E[33m 45 E[m:set nonu nornu
E[33m 44 E[m:setglobal rnu
E[33m 43 E[m:setglobal nu
E[33m 42 E[m:redir @f | setglobal rnu? | redir END
E[33m 41 E[m:$put =':setglobal MUST reset the other global value'
E[33m 40 E[m:$put e
E[33m 39 E[m:$put f
E[33m 38 E[m:"
E[33m 37 E[m:set nonu nornu
E[33m 36 E[m:set nu
E[33m 35 E[m:set rnu
E[33m 34 E[m:redir @g | setglobal nu? | redir END
E[33m 33 E[m:set nonu nornu
E[33m 32 E[m:set rnu
E[33m 31 E[m:set nu
E[33m 30 E[m:redir @h | setglobal rnu? | redir END
E[33m 29 E[m:$put =':set MUST reset the other global value'
E[33m 28 E[m:$put g
E[33m 27 E[m:$put h
E[33m 26 E[m:"
E[33m 25 E[m:let cwd=getcwd()
E[33m 24 E[m:cd ..
E[33m 23 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done to
E[33m 22 E[m:" get above src/
E[33m 21 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
E[33m 20 E[m:$put =''
E[33m 19 E[m:$put ='Testing findfile'
E[33m 18 E[m:$put =''
E[33m 17 E[m:set ssl
E[33m 16 E[m:$put =findfile('test19.in','src/test*')
E[33m 15 E[m:exe "cd" cwd
E[33m 14 E[m:cd ..
E[33m 13 E[m:$put =findfile('test19.in','test*')
E[33m 12 E[m:$put =findfile('test19.in','testdir')
E[33m 11 E[m:exe "cd" cwd
E[33m 10 E[m:/^results/,$w! test.out
E[33m  9 E[m:q!
E[33m  8 E[mENDTEST
E[33m  7 
  6 E[mresults:
E[33m  5 
  4 E[m  number
E[33m  3 E[m  relativenumber
E[33m  2 
  1 E[m  number
E[33m  0 E[m  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @c | setglobal nu? | redir ENDE[?25lE[60;1HE[KE[60;1H  numberE[59;7HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[1;1H:redir @c | setglobal nu? | redir ENDE[1;39HE[KE[2;1H:set nonu nornuE[2;16HE[KE[3;1H:setglobal rnuE[3;16HE[KE[4;1H:setlocal nuE[4;13HE[KE[5;1H:redir @d | setglobal rnu? | redir ENDE[5;40HE[KE[6;1H:$put =':setlocal must NOT reset the other global value'E[6;57HE[KE[7;1H:$put cE[7;8HE[KE[8;1H:$put dE[8;8HE[KE[9;1H:"E[9;3HE[KE[10;1H:set nonu nornuE[10;16HE[KE[11;1H:setglobal nuE[11;14HE[KE[12;1H:setglobal rnuE[12;16HE[KE[13;1H:redir @e | setglobal nu? | redir ENDE[13;39HE[KE[14;1H:set nonu nornuE[14;16HE[KE[15;1H:setglobal rnuE[15;16HE[KE[16;1H:setglobal nuE[16;14HE[KE[17;1H:redir @f | setglobal rnu? | redir ENDE[17;40HE[KE[18;1H:$put =':setglobal MUST reset the other global value'E[18;54HE[KE[19;1H:$put eE[19;8HE[KE[20;1H:$put fE[20;8HE[KE[21;1H:"E[21;3HE[KE[22;1H:set nonu nornuE[22;16HE[KE[23;1H:set nuE[23;8HE[KE[24;1H:set rnuE[24;10HE[KE[25;1H:redir @g | setglobal nu? | redir ENDE[25;39HE[KE[26;1H:set nonu nornuE[26;16HE[KE[27;1H:set rnuE[27;10HE[KE[28;1H:set nuE[28;8HE[KE[29;1H:redir @h | setglobal rnu? | redir ENDE[29;40HE[KE[30;1H:$put =':set MUST reset the other global value'E[30;48HE[KE[31;1H:$put gE[31;8HE[KE[32;1H:$put hE[32;8HE[KE[33;1H:"E[33;3HE[KE[34;1H:let cwd=getcwd()E[34;18HE[KE[35;1H:cd ..E[35;7HE[KE[36;1H:" Tests may be run from a shadow directory, so an extra cd needs to be done toE[36;80HE[KE[37;1H:" get above src/E[37;18HE[KE[38;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[38;75HE[KE[39;1H:$put =''E[39;11HE[KE[40;1H:$put ='Testing findfile'E[40;26HE[KE[41;1H:$put =''E[41;11HE[KE[42;1H:set sslE[42;10HE[KE[43;1H:$put =findfile('test19.in','src/test*')E[43;41HE[KE[44;1H:exe "cd" cwdE[44;15HE[KE[45;1H:cd ..E[45;7HE[KE[46;1H:$put =findfile('test19.in','test*')E[46;37HE[KE[47;1H:$put =findfile('test19.in','testdir')E[47;39HE[KE[48;1H:exe "cd" cwdE[48;15HE[KE[49;1H:/^results/,$w! test.ouE[49;25HE[KE[50;1H:q!E[50;4HE[KE[51;1HENDTESTE[51;8HE[KE[52;1HE[KE[53;1Hresults:E[53;9HE[KE[54;1HE[KE[55;1H  numberE[55;9HE[KE[56;1H  relativenumberE[56;17HE[KE[57;1HE[KE[58;1H  numberE[58;9HE[KE[59;1H  relativenumberE[59;17HE[KE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal rnuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetlocal nuE[?25lE[1;1HE[33m 20 E[m:redir @c | setglobal nu? | redir END
E[33m 21 E[m:set nonu nornu
E[33m 22 E[m:setglobal rnu
E[33m 23 E[m:setlocal nu
E[33m 24 E[m:redir @d | setglobal rnu? | redir END
E[33m 25 E[m:$put =':setlocal must NOT reset the other global value'
E[33m 26 E[m:$put c
E[33m 27 E[m:$put d
E[33m 28 E[m:"
E[33m 29 E[m:set nonu nornu
E[33m 30 E[m:setglobal nu
E[33m 31 E[m:setglobal rnu
E[33m 32 E[m:redir @e | setglobal nu? | redir END
E[33m 33 E[m:set nonu nornu
E[33m 34 E[m:setglobal rnu
E[33m 35 E[m:setglobal nu
E[33m 36 E[m:redir @f | setglobal rnu? | redir END
E[33m 37 E[m:$put =':setglobal MUST reset the other global value'
E[33m 38 E[m:$put e
E[33m 39 E[m:$put f
E[33m 40 E[m:"
E[33m 41 E[m:set nonu nornu
E[33m 42 E[m:set nu
E[33m 43 E[m:set rnu
E[33m 44 E[m:redir @g | setglobal nu? | redir END
E[33m 45 E[m:set nonu nornu
E[33m 46 E[m:set rnu
E[33m 47 E[m:set nu
E[33m 48 E[m:redir @h | setglobal rnu? | redir END
E[33m 49 E[m:$put =':set MUST reset the other global value'
E[33m 50 E[m:$put g
E[33m 51 E[m:$put h
E[33m 52 E[m:"
E[33m 53 E[m:let cwd=getcwd()
E[33m 54 E[m:cd ..
E[33m 55 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done to
E[33m 56 E[m:" get above src/
E[33m 57 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
E[33m 58 E[m:$put =''
E[33m 59 E[m:$put ='Testing findfile'
E[33m 60 E[m:$put =''
E[33m 61 E[m:set ssl
E[33m 62 E[m:$put =findfile('test19.in','src/test*')
E[33m 63 E[m:exe "cd" cwd
E[33m 64 E[m:cd ..
E[33m 65 E[m:$put =findfile('test19.in','test*')
E[33m 66 E[m:$put =findfile('test19.in','testdir')
E[33m 67 E[m:exe "cd" cwd
E[33m 68 E[m:/^results/,$w! test.out
E[33m 69 E[m:q!
E[33m 70 E[mENDTEST
E[33m 71 
 72 E[mresults:
E[33m 73 
 74 E[m  number
E[33m 75 E[m  relativenumber
E[33m 76 
 77 E[m  number
E[33m 78 E[m  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @d | setglobal rnu? | redir ENDE[?25lE[60;1HE[KE[60;1H  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25h$put =':setlocal must NOT reset the other global value'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[33m 79 E[m:setlocal must NOT reset the other global valueE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put cE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HE[33m 80 
 81 E[m  numberE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put dE[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1HE[33m 82 
 83 E[m  relativenumberE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[1;1H:$put =':setlocal must NOT reset the other global value'E[1;57HE[KE[2;1H:$put cE[2;8HE[KE[3;1H:$put dE[3;8HE[KE[4;1H:"E[4;3HE[KE[5;1H:set nonu nornuE[5;16HE[KE[6;1H:setglobal nuE[6;14HE[KE[7;1H:setglobal rnuE[7;16HE[KE[8;1H:redir @e | setglobal nu? | redir ENDE[8;39HE[KE[9;1H:set nonu nornuE[9;16HE[KE[10;1H:setglobal rnuE[10;16HE[KE[11;1H:setglobal nuE[11;14HE[KE[12;1H:redir @f | setglobal rnu? | redir ENDE[12;40HE[KE[13;1H:$put =':setglobal MUST reset the other global value'E[13;54HE[KE[14;1H:$put eE[14;8HE[KE[15;1H:$put fE[15;8HE[KE[16;1H:"E[16;3HE[KE[17;1H:set nonu nornuE[17;16HE[KE[18;1H:set nuE[18;8HE[KE[19;1H:set rnuE[19;10HE[KE[20;1H:redir @g | setglobal nu? | redir ENDE[20;39HE[KE[21;1H:set nonu nornuE[21;16HE[KE[22;1H:set rnuE[22;10HE[KE[23;1H:set nuE[23;8HE[KE[24;1H:redir @h | setglobal rnu? | redir ENDE[24;40HE[KE[25;1H:$put =':set MUST reset the other global value'E[25;48HE[KE[26;1H:$put gE[26;8HE[KE[27;1H:$put hE[27;8HE[KE[28;1H:"E[28;3HE[KE[29;1H:let cwd=getcwd()E[29;18HE[KE[30;1H:cd ..E[30;7HE[KE[31;1H:" Tests may be run from a shadow directory, so an extra cd needs to be done toE[31;80HE[KE[32;1H:" get above src/E[32;18HE[KE[33;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[33;75HE[KE[34;1H:$put =''E[34;11HE[KE[35;1H:$put ='Testing findfile'E[35;26HE[KE[36;1H:$put =''E[36;11HE[KE[37;1H:set sslE[37;10HE[KE[38;1H:$put =findfile('test19.in','src/test*')E[38;41HE[KE[39;1H:exe "cd" cwdE[39;15HE[KE[40;1H:cd ..E[40;7HE[KE[41;1H:$put =findfile('test19.in','test*')E[41;37HE[KE[42;1H:$put =findfile('test19.in','testdir')E[42;39HE[KE[43;1H:exe "cd" cwdE[43;15HE[KE[44;1H:/^results/,$w! test.ouE[44;25HE[KE[45;1H:q!E[45;4HE[KE[46;1HENDTESTE[46;8HE[KE[47;1HE[KE[48;1Hresults:E[48;9HE[KE[49;1HE[KE[50;1H  numberE[50;9HE[KE[51;1H  relativenumberE[51;17HE[KE[52;1HE[KE[53;1H  numberE[53;9HE[KE[54;1H  relativenumberE[54;17HE[KE[55;1H:setlocal must NOT reset the other global valueE[55;48HE[KE[56;1HE[KE[57;1H  numberE[57;9HE[KE[58;1HE[KE[59;1H  relativenumberE[59;17HE[KE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal nuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal rnuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @e | setglobal nu? | redir ENDE[?25lE[60;1HE[KE[60;1H  numberE[59;3HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal rnuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetglobal nuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @f | setglobal rnu? | redir ENDE[?25lE[60;1HE[KE[60;1H  relativenumberE[59;3HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25h$put =':setglobal MUST reset the other global value'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H:setglobal MUST reset the other global valueE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put eE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;3HnumberE[60;1HE[KE[59;3HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put fE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;3HrelativenumberE[60;1HE[KE[59;3HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nuE[?25lE[1;1HE[33m 30 E[m:setglobal nu
E[33m 31 E[m:setglobal rnu
E[33m 32 E[m:redir @e | setglobal nu? | redir END
E[33m 33 E[m:set nonu nornu
E[33m 34 E[m:setglobal rnu
E[33m 35 E[m:setglobal nu
E[33m 36 E[m:redir @f | setglobal rnu? | redir END
E[33m 37 E[m:$put =':setglobal MUST reset the other global value'
E[33m 38 E[m:$put e
E[33m 39 E[m:$put f
E[33m 40 E[m:"
E[33m 41 E[m:set nonu nornu
E[33m 42 E[m:set nu
E[33m 43 E[m:set rnu
E[33m 44 E[m:redir @g | setglobal nu? | redir END
E[33m 45 E[m:set nonu nornu
E[33m 46 E[m:set rnu
E[33m 47 E[m:set nu
E[33m 48 E[m:redir @h | setglobal rnu? | redir END
E[33m 49 E[m:$put =':set MUST reset the other global value'
E[33m 50 E[m:$put g
E[33m 51 E[m:$put h
E[33m 52 E[m:"
E[33m 53 E[m:let cwd=getcwd()
E[33m 54 E[m:cd ..
E[33m 55 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done to
E[33m 56 E[m:" get above src/
E[33m 57 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
E[33m 58 E[m:$put =''
E[33m 59 E[m:$put ='Testing findfile'
E[33m 60 E[m:$put =''
E[33m 61 E[m:set ssl
E[33m 62 E[m:$put =findfile('test19.in','src/test*')
E[33m 63 E[m:exe "cd" cwd
E[33m 64 E[m:cd ..
E[33m 65 E[m:$put =findfile('test19.in','test*')
E[33m 66 E[m:$put =findfile('test19.in','testdir')
E[33m 67 E[m:exe "cd" cwd
E[33m 68 E[m:/^results/,$w! test.out
E[33m 69 E[m:q!
E[33m 70 E[mENDTEST
E[33m 71 
 72 E[mresults:
E[33m 73 
 74 E[m  number
E[33m 75 E[m  relativenumber
E[33m 76 
 77 E[m  number
E[33m 78 E[m  relativenumber
E[33m 79 E[m:setlocal must NOT reset the other global value
E[33m 80 
 81 E[m  number
E[33m 82 
 83 E[m  relativenumber
E[33m 84 E[m:setglobal MUST reset the other global value
E[33m 85 
 86 E[m  number
E[33m 87 
 88 E[m  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset rnuE[?25lE[1;2HE[33m58
 57
 56
 55
 5
 53
 52
 51
 50
 4
 48
 47
 46
 45

 43
 42
 41
 40
 3
 38
 37
 36
 35
 3
 33
 32
 31
 30
 2
 28
 27
 26
 25
 2
 23
 22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88  E[m  E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @g | setglobal nu? | redir ENDE[?25lE[60;1HE[KE[60;1H  numberE[59;7HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25hset nonu nornuE[?25lE[1;1H:setglobal nuE[1;14HE[KE[2;1H:setglobal rnuE[2;16HE[KE[3;1H:redir @e | setglobal nu? | redir ENDE[3;39HE[KE[4;1H:set nonu nornuE[4;16HE[KE[5;1H:setglobal rnuE[5;16HE[KE[6;1H:setglobal nuE[6;14HE[KE[7;1H:redir @f | setglobal rnu? | redir ENDE[7;40HE[KE[8;1H:$put =':setglobal MUST reset the other global value'E[8;54HE[KE[9;1H:$put eE[9;8HE[KE[10;1H:$put fE[10;8HE[KE[11;1H:"E[11;3HE[KE[12;1H:set nonu nornuE[12;16HE[KE[13;1H:set nuE[13;8HE[KE[14;1H:set rnuE[14;10HE[KE[15;1H:redir @g | setglobal nu? | redir ENDE[15;39HE[KE[16;1H:set nonu nornuE[16;16HE[KE[17;1H:set rnuE[17;10HE[KE[18;1H:set nuE[18;8HE[KE[19;1H:redir @h | setglobal rnu? | redir ENDE[19;40HE[KE[20;1H:$put =':set MUST reset the other global value'E[20;48HE[KE[21;1H:$put gE[21;8HE[KE[22;1H:$put hE[22;8HE[KE[23;1H:"E[23;3HE[KE[24;1H:let cwd=getcwd()E[24;18HE[KE[25;1H:cd ..E[25;7HE[KE[26;1H:" Tests may be run from a shadow directory, so an extra cd needs to be done toE[26;80HE[KE[27;1H:" get above src/E[27;18HE[KE[28;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[28;75HE[KE[29;1H:$put =''E[29;11HE[KE[30;1H:$put ='Testing findfile'E[30;26HE[KE[31;1H:$put =''E[31;11HE[KE[32;1H:set sslE[32;10HE[KE[33;1H:$put =findfile('test19.in','src/test*')E[33;41HE[KE[34;1H:exe "cd" cwdE[34;15HE[KE[35;1H:cd ..E[35;7HE[KE[36;1H:$put =findfile('test19.in','test*')E[36;37HE[KE[37;1H:$put =findfile('test19.in','testdir')E[37;39HE[KE[38;1H:exe "cd" cwdE[38;15HE[KE[39;1H:/^results/,$w! test.ouE[39;25HE[KE[40;1H:q!E[40;4HE[KE[41;1HENDTESTE[41;8HE[KE[42;1HE[KE[43;1Hresults:E[43;9HE[KE[44;1HE[KE[45;1H  numberE[45;9HE[KE[46;1H  relativenumberE[46;17HE[KE[47;1HE[KE[48;1H  numberE[48;9HE[KE[49;1H  relativenumberE[49;17HE[KE[50;1H:setlocal must NOT reset the other global valueE[50;48HE[KE[51;1HE[KE[52;1H  numberE[52;9HE[KE[53;1HE[KE[54;1H  relativenumberE[54;17HE[KE[55;1H:setglobal MUST reset the other global valueE[55;45HE[KE[56;1HE[KE[57;1H  numberE[57;9HE[KE[58;1HE[KE[59;1H  relativenumberE[59;17HE[KE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset rnuE[?25lE[1;1HE[33m 58 E[m:setglobal nu
E[33m 57 E[m:setglobal rnu
E[33m 56 E[m:redir @e | setglobal nu? | redir END
E[33m 55 E[m:set nonu nornu
E[33m 54 E[m:setglobal rnu
E[33m 53 E[m:setglobal nu
E[33m 52 E[m:redir @f | setglobal rnu? | redir END
E[33m 51 E[m:$put =':setglobal MUST reset the other global value'
E[33m 50 E[m:$put e
E[33m 49 E[m:$put f
E[33m 48 E[m:"
E[33m 47 E[m:set nonu nornu
E[33m 46 E[m:set nu
E[33m 45 E[m:set rnu
E[33m 44 E[m:redir @g | setglobal nu? | redir END
E[33m 43 E[m:set nonu nornu
E[33m 42 E[m:set rnu
E[33m 41 E[m:set nu
E[33m 40 E[m:redir @h | setglobal rnu? | redir END
E[33m 39 E[m:$put =':set MUST reset the other global value'
E[33m 38 E[m:$put g
E[33m 37 E[m:$put h
E[33m 36 E[m:"
E[33m 35 E[m:let cwd=getcwd()
E[33m 34 E[m:cd ..
E[33m 33 E[m:" Tests may be run from a shadow directory, so an extra cd needs to be done to
E[33m 32 E[m:" get above src/
E[33m 31 E[m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
E[33m 30 E[m:$put =''
E[33m 29 E[m:$put ='Testing findfile'
E[33m 28 E[m:$put =''
E[33m 27 E[m:set ssl
E[33m 26 E[m:$put =findfile('test19.in','src/test*')
E[33m 25 E[m:exe "cd" cwd
E[33m 24 E[m:cd ..
E[33m 23 E[m:$put =findfile('test19.in','test*')
E[33m 22 E[m:$put =findfile('test19.in','testdir')
E[33m 21 E[m:exe "cd" cwd
E[33m 20 E[m:/^results/,$w! test.out
E[33m 19 E[m:q!
E[33m 18 E[mENDTEST
E[33m 17 
 16 E[mresults:
E[33m 15 
 14 E[m  number
E[33m 13 E[m  relativenumber
E[33m 12 
 11 E[m  number
E[33m 10 E[m  relativenumber
E[33m  9 E[m:setlocal must NOT reset the other global value
E[33m  8 
  7 E[m  number
E[33m  6 
  5 E[m  relativenumber
E[33m  4 E[m:setglobal MUST reset the other global value
E[33m  3 
  2 E[m  number
E[33m  1 
  0 E[m  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nuE[?25lE[59;1HE[33m88  E[m  E[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hredir @h | setglobal rnu? | redir ENDE[?25lE[60;1HE[KE[60;1H  relativenumberE[59;7HE[?12lE[?25hE[?25lE[60;3HE[KE[60;1H:E[?12lE[?25h$put =':set MUST reset the other global value'E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
89  E[m:set MUST reset the other global valueE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put gE[?25lE[1;59rE[1;1HE[2ME[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
91  E[m  numberE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put hE[?25lE[1;59rE[1;1HE[2ME[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
93  E[m  relativenumberE[60;1HE[KE[59;7HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet cwd=getcwd()E[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/srcE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Tests may be run from a shadow directory, so an extra cd needs to be done toE[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" get above src/E[?25lE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endifE[?25l/sources/vim74E[60;15HE[KE[59;7HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =''E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
94  E[mE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='Testing findfile'E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
95  E[mTesting findfileE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =''E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
96  E[mE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25hset sslE[?25lE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =findfile('test19.in','src/test*')E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
97  E[msrc/testdir/test19.inE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25hexe "cd" cwdE[?25l/sources/vim74/src/testdirE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcd ..E[?25l/sources/vim74/srcE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =findfile('test19.in','test*')E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
98  E[mtestdir/test19.inE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =findfile('test19.in','testdir')E[?25lE[1;59rE[59;1H
E[1;60rE[1;3HE[33m8
 57
 56
 55
 54
 53
 52
 51
 50
 49
 48
 47
 46
 45
 44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
 33
 32
 31
 30
 29
 28
 27
 26
 25
 24
 23
 22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
99  E[mtestdir/test19.inE[60;1HE[KE[59;5HE[?12lE[?25hE[?25l
:E[?12lE[?25hexe "cd" cwdE[?25l/sources/vim74/src/testdirE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^results/,$w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New] 28L, 356C writtenE[59;5HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test90.failed test.ok test.out X* viminfo
cp test90.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 test90.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test90.in" 53 lines, 1203 charactersE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vim
:if !has('cryptv') || !exists('*sha256')
   e! test.ok
   wq! test.out
:endif
:"
:let testcase='test for empty string: '
:if sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 3 chars: '
:if sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8cc39ed110ca776'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for contains non-ascii char: '
:if sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa811E[44;1H3953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
"
:/^start:/,$wq! test.out
ENDTEST

start:
E[1mE[34m~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[3;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 47 lines, 1113 characters writtenE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[4;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('cryptv') || !exists('*sha256')E[?25l
:  E[?12lE[?25h   e! test.ok
E[?25l:  E[?12lE[?25h   wq! test.out
E[?25l:  E[?12lE[?25h:endifE[1;1HE[3LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTESTE[60;1HE[KE[53;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h"E[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet testcase='test for empty string: 'E[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'E[?25l
:  E[?12lE[?25h: let res='ok'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let res='ng'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vimE[60;1HE[KE[53;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$put =testcase.resE[?25lE[55;1Htest for empty string: okE[55;26HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet testcase='test for 1 char: 'E[?25lE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb'E[?25l
:  E[?12lE[?25h: let res='ok'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let res='ng'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vimE[60;1HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$put =testcase.resE[?25lE[56;1Htest for 1 char: okE[56;20HE[KE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet testcase='test for 3 chars: 'E[?25lE[56;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'E[?25l
:  E[?12lE[?25h: let res='ok'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let res='ng'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vimE[60;1HE[KE[56;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h$put =testcase.resE[?25lE[57;1Htest for 3 chars: okE[57;21HE[KE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet testcase='test for contains meta char: 'E[?25lE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8cc39ed110ca776'E[?25l
:  E[?12lE[?25h: let res='ok'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let res='ng'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vimE[60;1HE[KE[57;1HE[?12lE[?25hE[?25l


:E[?12lE[?25h$put =testcase.resE[?25lE[58;1Htest for contains meta char: okE[58;32HE[KE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet testcase='test for contains non-ascii char: 'E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa8
E[59;96H1E[60;1H3953'E[?25lE[60;1HE[KE[60;1H:  E[?12lE[?25h: let res='ok'
E[?25l:  E[?12lE[?25h:else
E[?25l:  E[?12lE[?25h: let res='ng'
E[?25l:  E[?12lE[?25h:endifE[1;1HE[4LE[?25lE[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :

STARTTEST
:so small.vimE[60;1HE[KE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h$put =testcase.resE[?25lE[59;1Htest for contains non-ascii char: okE[59;37HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start:/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 6 lines, 143 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test91.failed test.ok test.out X* viminfo
cp test91.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 test91.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test91.in" 111 lines, 3044 charactersE[1;1HTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().
vim: set ft=vim :

STARTTEST
:so small.vim
:so mbyte.vim
:"
:" Test for getbufvar()
:" Use strings to test for memory leaks.
:let b:var_num = '1234'
:let def_num = '5678'
:$put =string(getbufvar(1, 'var_num'))
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:unlet b:var_num
:$put =string(getbufvar(1, 'var_num', def_num))
:$put =string(getbufvar(1, ''))
:$put =string(getbufvar(1, '', def_num))
:$put =string(getbufvar(9, ''))
:$put =string(getbufvar(9, '', def_num))
:unlet def_num
:$put =string(getbufvar(1, '&autoindent'))
:$put =string(getbufvar(1, '&autoindent', 1))
:"
:" Open new window with forced option values
:set fileformats=unix,dos
:new ++ff=dos ++bin ++enc=iso-8859-2
:let otherff = getbufvar(bufnr('%'), '&fileformat')
:let otherbin = getbufvar(bufnr('%'), '&bin')
:let otherfenc = getbufvar(bufnr('%'), '&fenc')
:close
:$put =otherff
:$put =string(otherbin)
:$put =otherfenc
:unlet otherff otherbin otherfenc
:" test for getwinvar()
:let w:var_str = "Dance"
:let def_str = "Chance"
:$put =string(getwinvar(1, 'var_str'))
:$put =string(getwinvar(1, 'var_str', def_str))
:$put =string(getwinvar(1, ''))
:$put =string(getwinvar(1, '', def_str))
:unlet w:var_str
:$put =string(getwinvar(1, 'var_str', def_str))
:$put =string(getwinvar(1, ''))
:$put =string(getwinvar(1, '', def_str))
:$put =string(getwinvar(9, ''))
:$put =string(getwinvar(9, '', def_str))
:$put =string(getwinvar(1, '&nu'))
:$put =string(getwinvar(1, '&nu',  1))
:unlet def_str
:"
:" test for gettabvar()
:tabnew
:tabnew
:let t:var_list = [1, 2, 3]
:let def_list = [4, 5, 6, 7]
:tabrewindE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 104 lines, 2931 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[50ME[1;60rE[10;1H:$put =string(gettabvar(3, 'var_list'))
:$put =string(gettabvar(3, 'var_list', def_list))
:$put =string(gettabvar(3, ''))
:$put =string(gettabvar(3, '', def_list))
:tablast
:unlet t:var_list
:tabrewind
:$put =string(gettabvar(3, 'var_list', def_list))
:$put =string(gettabvar(9, ''))
:$put =string(gettabvar(9, '', def_list))
:$put =string(gettabvar(3, '&nu'))
:$put =string(gettabvar(3, '&nu', def_list))
:unlet def_list
:tabonly
:"
:" test for gettabwinvar()
:tabnew
:tabnew
:tabprev
:split
:split
:wincmd w
:vert split
:wincmd w
:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict'))
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Test for getbufvar()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Use strings to test for memory leaks.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet b:var_num = '1234'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet def_num = '5678'E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(getbufvar(1, 'var_num'))E[?25lE[1;59rE[1;1HE[2ME[1;60rE[58;1Hstart:
'1234'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, 'var_num', def_num))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'1234'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{'var_num': '1234'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, '', def_num))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{'var_num': '1234'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet b:var_numE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(getbufvar(1, 'var_num', def_num))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'5678'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, '', def_num))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(9, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(9, '', def_num))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'5678'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet def_numE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(getbufvar(1, '&autoindent'))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getbufvar(1, '&autoindent', 1))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Open new window with forced option valuesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset fileformats=unix,dosE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnew ++ff=dos ++bin ++enc=iso-8859-2E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2HtabrewindE[31;11HE[KE[32;2H$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))E[33;35H'))E[33;38HE[KE[34;36H, def_dict))E[35;31H9, ''))E[35;38HE[KE[36;36H, def_dict))E[37;28H9, 3, ''))E[37;38HE[KE[38;36H, def_dict))
:unlet def_dictE[39;16HE[KE[40;2H$put =string(gettabwinvar(2, 3, '&nux'))E[41;40H, 1))
:tabonlyE[42;9HE[KE[43;2H"E[43;3HE[KE[44;2H/^start/,$wq! test.out
ENDTESTE[45;8HE[KE[46;1HE[KE[47;1Hstart:
'1234'

{'var_num': '1234'}

'5678'E[52;7HE[KE[53;1H{}E[53;3HE[KE[55;1H''
'5678'
0E[57;2HE[KE[59;1HE[7mtest91.in [+]                                                                                   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet otherff = getbufvar(bufnr('%'), '&fileformat')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet otherbin = getbufvar(bufnr('%'), '&bin')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet otherfenc = getbufvar(bufnr('%'), '&fenc')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcloseE[?25lE[1;1H:tablast
:unlet t:var_listE[2;18HE[KE[3;1H:tabrewindE[3;11HE[KE[4;1H:$put =string(gettabvar(3, 'var_list', def_list))E[4;50HE[KE[5;1H:$put =string(gettabvar(9, ''))E[5;32HE[KE[6;1H:$put =string(gettabvar(9, '', def_list))E[6;42HE[KE[7;1H:$put =string(gettabvar(3, '&nu'))E[7;35HE[KE[8;1H:$put =string(gettabvar(3, '&nu', def_list))E[8;45HE[KE[9;1H:unlet def_listE[9;16HE[KE[10;1H:tabonlyE[10;9HE[KE[11;1H:"E[11;3HE[KE[12;1H:" test for gettabwinvar()E[12;27HE[KE[13;1H:tabnewE[13;8HE[KE[14;1H:tabnewE[14;8HE[KE[15;1H:tabprevE[15;9HE[KE[16;1H:splitE[16;7HE[KE[17;1H:splitE[17;7HE[KE[18;1H:wincmd wE[18;10HE[KE[19;1H:vert splitE[19;12HE[KE[20;1H:wincmd wE[20;10HE[KE[21;1H:let w:var_dict = {'dict': 'tabwin'}E[21;37HE[KE[22;1H:let def_dict = {'dict2': 'newval'}E[22;36HE[KE[23;1H:wincmd bE[23;10HE[KE[24;1H:tabrewindE[24;11HE[KE[25;1H:$put =string(gettabwinvar(2, 3, 'var_dict'))E[25;46HE[KE[26;1H:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))E[26;56HE[KE[27;1H:$put =string(gettabwinvar(2, 3, ''))E[27;38HE[KE[28;1H:$put =string(gettabwinvar(2, 3, '', def_dict))E[28;48HE[KE[29;1H:tabnextE[29;9HE[KE[30;1H:3wincmd wE[30;11HE[KE[31;2Hunlet w:var_dict
:tabrewindE[32;11HE[KE[33;35Hvar_dict', def_dict))E[34;36H))E[34;38HE[KE[35;31H3, '', def_dict))E[36;36H))E[36;38HE[KE[37;28H2, 9, '', def_dict))E[38;36H))E[38;38HE[KE[39;2H$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dictE[40;16HE[KE[41;40H))E[41;42HE[KE[42;2H$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"E[44;3HE[KE[45;1H:/^start/,$wq! test.out
ENDTESTE[47;1HE[KE[48;1Hstart:

'1234'E[50;7HE[KE[52;1H{'var_num': '1234'}
'5678'

{}
''E[56;3HE[KE[57;1H'5678'

0E[59;2HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =otherffE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HdosE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(otherbin)E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =otherfencE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hiso-8859-2E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet otherff otherbin otherfencE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for getwinvar()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet w:var_str = "Dance"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet def_str = "Chance"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(getwinvar(1, 'var_str'))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'Dance'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, 'var_str', def_str))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'Dance'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{'var_str': 'Dance'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, '', def_str))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{'var_str': 'Dance'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet w:var_strE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(getwinvar(1, 'var_str', def_str))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'Chance'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, '', def_str))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(9, ''))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(9, '', def_str))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H'Chance'E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, '&nu'))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(getwinvar(1, '&nu',  1))E[?25lE[1;59rE[59;1H
E[1;60rE[59;1H0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet def_strE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for gettabvar()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in E[mE[1m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in  [No Name] E[mE[1m [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hlet t:var_list = [1, 2, 3]E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet def_list = [4, 5, 6, 7]E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabrewindE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test91.in E[mE[4mE[30mE[47m [No Name]  [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[2;1H:split
:split
:wincmd w
:vert split
:wincmd w
:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict'))
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:
'1234'
'1234'
{'var_num': '1234'}
{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0E[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, 'var_list'))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[1, 2, 3]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, 'var_list', def_list))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[1, 2, 3]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, '', def_list))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[4, 5, 6, 7]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htablastE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in  [No Name] E[mE[1m [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hunlet t:var_listE[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabrewindE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test91.in E[mE[4mE[30mE[47m [No Name]  [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[2;1H:wincmd w
:let w:var_dict = {'dict': 'tabwin'}
:let def_dict = {'dict2': 'newval'}
:wincmd b
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict'))
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:
'1234'
'1234'
{'var_num': '1234'}
{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
''
[4, 5, 6, 7]E[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, 'var_list', def_list))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[4, 5, 6, 7]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(9, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(9, '', def_list))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[4, 5, 6, 7]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, '&nu'))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabvar(3, '&nu', def_list))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H[4, 5, 6, 7]E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet def_listE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabonlyE[?25lE[1;1H:tabrewindE[1;11HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" test for gettabwinvar()E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in E[mE[1m [No Name] E[mE[7m                                                                        E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabnewE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in  [No Name] E[mE[1m [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25htabprevE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in E[mE[1m [No Name] E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                             E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hsplitE[?25lE[1;15HE[1mE[35m2E[mE[1mN o[No Name] E[mE[4mE[30mE[47m [No Name] E[mE[58CE[7m E[mE[1;96HE[4mE[30mE[47mXE[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;1HE[KE[59;1HE[7m[No Name]                                                                                       E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in E[mE[1m E[mE[1mE[35m3E[mE[1m [No Name] E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                           E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[mE[21;1HE[1mE[7m[No Name]                                                                                       E[mE[23;1HE[1mE[34m~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[mE[40;1HE[7m[No Name]                                                                                       E[mE[42;1HE[1mE[34m~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7m[No Name]                                                                                       E[2;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwincmd wE[?25lE[21;1HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                                                                       E[mE[40;1HE[1mE[7m[No Name]                                                                                       E[mE[1;96HE[7m E[mE[1;96HE[4mE[30mE[47mXE[22;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hvert splitE[?25lE[1;15HE[1mE[35m4E[mE[1m E[mE[79CE[7m E[mE[1;96HE[4mE[30mE[47mXE[mE[22;49HE[7m|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[30;49H|E[31;49H|E[32;49H|E[33;49H|E[34;49H|E[35;49H|E[36;49H|E[37;49H|E[38;49H|E[39;49H|E[mE[23;50HE[1mE[34m~E[24;50H~E[25;50H~E[26;50H~E[27;50H~E[28;50H~E[29;50H~E[30;50H~E[31;50H~E[32;50H~E[33;50H~E[34;50H~E[35;50H~E[36;50H~E[37;50H~E[38;50H~E[39;50H~E[mE[40;50HE[7m[No Name]                                      E[22;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd wE[?25lE[40;1HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                        E[mE[1mE[7m[No Name]                                      E[mE[1;96HE[7m E[mE[1;96HE[4mE[30mE[47mXE[22;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet w:var_dict = {'dict': 'tabwin'}E[?25lE[22;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet def_dict = {'dict2': 'newval'}E[?25lE[22;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd bE[?25lE[40;50HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                      E[mE[59;1HE[1mE[7m[No Name]                                                                                       E[mE[1;96HE[7m E[mE[1;96HE[4mE[30mE[47mXE[41;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25htabrewindE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test91.in E[mE[4mE[30mE[47m E[mE[4mE[35mE[47m4E[mE[4mE[30mE[47m [No Name]  [No Name] E[mE[7m                                                           E[mE[1;96HE[4mE[30mE[47mXE[mE[2;1H:$put =string(gettabwinvar(2, 3, 'var_dict'))
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:
'1234'
'1234'
{'var_num': '1234'}
{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
''
[4, 5, 6, 7]
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]E[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, 'var_dict'))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'dict': 'tabwin'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'dict': 'tabwin'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'var_dict': {'dict': 'tabwin'}}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, '', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'var_dict': {'dict': 'tabwin'}}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabnextE[?25lE[27mE[mE[HE[2JE[1;1HE[4mE[30mE[47m + test91.in E[mE[1m E[mE[1mE[35m4E[mE[1m [No Name] E[mE[4mE[30mE[47m [No Name] E[mE[7m                                                           E[mE[1;96HE[4mE[30mE[47mXE[mE[3;1HE[1mE[34m~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[mE[21;1HE[7m[No Name]                                                                                       E[22;49H|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[30;49H|E[31;49H|E[32;49H|E[33;49H|E[34;49H|E[35;49H|E[36;49H|E[37;49H|E[38;49H|E[39;49H|E[mE[23;1HE[1mE[34m~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               E[m
E[7m[No Name]                                        E[mE[23;50HE[1mE[34m~                                              E[24;50H~                                              E[25;50H~                                              E[26;50H~                                              E[27;50H~                                              E[28;50H~                                              E[29;50H~                                              E[30;50H~                                              E[31;50H~                                              E[32;50H~                                              E[33;50H~                                              E[34;50H~                                              E[35;50H~                                              E[36;50H~                                              E[37;50H~                                              E[38;50H~                                              E[39;50H~                                              E[mE[40;50HE[7m[No Name]                                      E[mE[42;1HE[1mE[34m~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[1mE[7m[No Name]                                                                                       E[41;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25h3wincmd wE[?25lE[40;50HE[1mE[7m[No Name]                                      E[mE[59;1HE[7m[No Name]E[mE[1mE[7m E[mE[7m                                                                                       E[1;96H E[mE[1;96HE[4mE[30mE[47mXE[22;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hunlet w:var_dictE[?25lE[22;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25htabrewindE[?25lE[27mE[mE[HE[2JE[1;1HE[1m + test91.in E[mE[4mE[30mE[47m E[mE[4mE[35mE[47m4E[mE[4mE[30mE[47m [No Name]  [No Name] E[mE[7m                                                           E[mE[1;96HE[4mE[30mE[47mXE[mE[2;1H:tabnext
:3wincmd w
:unlet w:var_dict
:tabrewind
:$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))
:$put =string(gettabwinvar(2, 3, ''))
:$put =string(gettabwinvar(2, 3, '', def_dict))
:$put =string(gettabwinvar(2, 9, ''))
:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))
:$put =string(gettabwinvar(9, 3, '', def_dict))
:unlet def_dict
:$put =string(gettabwinvar(2, 3, '&nux'))
:$put =string(gettabwinvar(2, 3, '&nux', 1))
:tabonly
:"
:/^start/,$wq! test.out
ENDTEST

start:
'1234'
'1234'
{'var_num': '1234'}
{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0
[1, 2, 3]
[1, 2, 3]
''
[4, 5, 6, 7]
[4, 5, 6, 7]
''
[4, 5, 6, 7]
''
[4, 5, 6, 7]
{'dict': 'tabwin'}
{'dict': 'tabwin'}
{'var_dict': {'dict': 'tabwin'}}
{'var_dict': {'dict': 'tabwin'}}E[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'dict2': 'newval'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, '', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 9, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 9, '', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'dict2': 'newval'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(9, 3, ''))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(9, 3, '', def_dict))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H{'dict2': 'newval'}E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet def_dictE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h$put =string(gettabwinvar(2, 3, '&nux'))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H''E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h$put =string(gettabwinvar(2, 3, '&nux', 1))E[?25lE[2;59rE[59;1H
E[1;60rE[59;1H1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25htabonlyE[?25lE[1;1H:$put =string(gettabwinvar(2, 9, '', def_dict))E[1;48HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h/^start/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New File] 48 lines, 456 characters written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test92.failed test.ok test.out X* viminfo
cp test92.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 test92.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test92.in" 48 lines, 842 charactersE[1;1Hvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=utf-8.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=utf-8
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start:
:set nowrap
j16|3zl:split
j016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w
:qa!
ENDTEST

start:
no multibyte chAracterE[42;9Hone leaDing tab
    four leadinG spaces
twoE[13Cconsecutive tabs
two     tabs    in one line
one âE[34m~@E[m¦ multibyteCharacter
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte characters
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters
E[1mE[34m~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1Hvim: set ft=vim fenc=utf-8:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 31 lines, 457 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[38;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('mksession')E[?25l
:  E[?12lE[?25h:  e! test.ok
E[?25l:  E[?12lE[?25h:  wq! test.out
E[?25l:  E[?12lE[?25h:endifE[1;1HE[3LE[?25lE[1;1Hvim: set ft=vim fenc=utf-8:

Tests if :mksession saves cursor columns correctly in presence of tab andE[60;1HE[KE[39;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset sessionoptions=buffers splitbelow fileencoding=utf-8E[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start:E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hvsplitE[?25lE[1;1H                           E[21CE[7m|E[m
Tests if :mksession saves cursor columns correctE[7m|E[m
ly in presence of tab and                       E[7m|E[4;49H|E[5;49H|E[6;49H|E[7;49H|E[8;49H|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[m
ing=utf-8E[39CE[7m|E[m
/^start:E[40CE[7m|E[m
:vsplit   E[38CE[7m|E[16;49H|E[17;49H|E[m
j16|:splitE[38CE[7m|E[19;49H|E[m
j8|:split E[38CE[7m|E[21;49H|E[mE[22;6Hsplit   E[35CE[7m|E[m
j16|:wincmd lE[35CE[7m|E[m
/^start:   E[37CE[7m|E[m
:set nowrap  E[35CE[7m|E[m
j16|3zl:split E[34CE[7m|E[27;49H|E[m
j016|3zl:splitE[34CE[7m|E[29;49H|E[m
j08|3zl:split E[34CE[7m|E[31;49H|E[32;49H|E[m
j016|3zl:split      E[28CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.out                         E[10CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:w  E[44CE[7m|E[m
:qa!   E[41CE[7m|E[m
ENDTESTE[41CE[7m|E[m
      E[42CE[7m|E[m
start:                E[26CE[7m|E[m
no multibyte chAracter E[25CE[7m|E[m
        one leaDing tabE[25CE[7m|E[m
    four leadinG spaces         E[16CE[7m|E[mE[45;9H        consecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[1CE[34m@E[m¦ multibyteCharacter           E[10CE[7m|E[m
a âE[1CE[34m@~\E[mbâE[1CE[34m@~]E[m two multiByte characters          E[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|E[50;49H|E[51;49H|E[52;49H|E[53;49H|E[54;49H|E[55;49H|E[56;49H|E[57;49H|E[58;49H|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[49;93HE[KE[50;50HE[1mE[34m~E[51;50H~E[52;50H~E[53;50H~E[54;50H~E[55;50H~E[56;50H~E[57;50H~E[58;50H~E[mE[59;50HE[7mtest92.in [+]                                  E[41;1HE[?12lE[?25h
E[15CE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[1;1Hj16|:split
j16|:wincmd l                                   
/^start:                 
:set nowrap                                  
j16|3zl:split
j016|3zl:split
j016|3zl:split
j08|3zl:split        
j08|3zl:split
j016|3zl:split 
j016|3zl:split
j016|3zl:split                                  
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w        
:qa!      
ENDTEST   
         
start:   
no multibyte chAracter
        one leaDing tab
    four leadinG spaces
two     E[8Cconsecutive tabs
two     tabs    in one line
one âE[34m~@E[m¦ multibyteCharacter
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte characters
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters
E[7mtest92.in [+]                                   E[m
j16|:split   
j16|:wincmd l 
/^start:      
:set nowrap   
j16|3zl:split       
j016|3zl:split
j016|3zl:split                        
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out  
:new test.out          
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w E[13C                
:qa!                       
ENDTEST                    
                                      
start:                                     
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one âE[34m~@E[m¦ multibyteCharacter                     
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte characters          
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[50;16HE[?12lE[?25hE[51;16HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1Hj08|3zl:splitE[35CE[7m|E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[12;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[15;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[31;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[34;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[m
j08|3zl:splitE[35CE[7m|E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[51;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[54;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[54;16HE[?12lE[?25hE[55;16HE[?25lE[60;1HE[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1Hj016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[37;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[40;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[56;16HE[?12lE[?25hE[57;16HE[57;8HE[?25l


E[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[6;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[9;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[18;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[21;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[29;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[40;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[43;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[57;8HE[?12lE[?25hE[58;8HE[?25l

E[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[5;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[8;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[14;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[17;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[24;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[27;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[34;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[37;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[42;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[58;8HE[?12lE[?25hE[?25lE[mE[50;1HENDTEST                                         
                                                
start:                                          
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
                                                one âE[34m~@E[m¦ multibyteCharacterE[58;8HE[?12lE[?25hE[8CE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[4;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[7;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[11;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[14;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[19;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[22;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[27;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[30;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[35;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[38;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[51;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[54;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[58;16HE[?12lE[?25hE[?25lE[mE[51;1Hstart:                                          
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one âE[34m~@E[m¦ multibyteCharacter                     
                                                a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;16HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[m
no multibyte chAracterE[26CE[7m|E[mE[53;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
E[1mE[7mtest92.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=utf-8.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=utf-8E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone âE[34m~@E[m¦ multibyteCharacterE[48;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[49;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest92.in [+]                                  E[58;16HE[?12lE[?25hE[?25lE[mE[52;1H        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one âE[34m~@E[m¦ multibyteCharacter                     
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte characters          
                                                âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[58;16HE[?12lE[?25hE[?25l

:E[?12lE[?25hwincmd lE[?25lE[59;1HE[7mtest92.in [+]E[mE[1mE[7m E[mE[7m                                    E[mE[1mE[7mtest92.in [+]                                  E[41;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^start:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[41;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset nowrapE[?25lE[3;50Hmultibyte characters when fileencoding=utf-8.E[4;50HE[KE[5;50HSTARTTESTE[6;50H:so mbyte.vimE[7;51Hif !has('mksession')E[8;51H  e! test.okE[8;63HE[KE[9;53Hwq! test.outE[10;51HendifE[10;57HE[KE[11;51Hset sessionoptions=buffers splitbelow fileencoE[12;50H/^start:E[12;58HE[KE[13;50H:vspliE[13;57HE[KE[14;50Hj16|:splitE[15;50Hj16|:splitE[17;51H8|:splitE[17;59HE[KE[18;51H8|:splitE[18;59HE[KE[19;51H16|:splitE[20;51H16|:splitE[21;55Hwincmd lE[22;50H/^start:E[22;58HE[KE[23;50H:set nowrapE[23;62HE[KE[24;50Hj16|3zl:splitE[25;50Hj016|3zl:splitE[26;51H016|3zl:splitE[27;52H8|3zl:splitE[27;63HE[KE[28;52H8|3zl:splitE[28;63HE[KE[29;52H16|3zl:splitE[30;52H16|3zl:splitE[32;50H:mksession! test.outE[33;50H:new test.outE[33;63HE[KE[34;51Hv/\(^ *normal! 0\|^ *exe 'normal!\)/dE[35;51HwE[35;52HE[KE[36;51Hqa!E[36;54HE[KE[37;50HENDTESTE[38;50HE[KE[39;50Hstart:E[39;56HE[KE[40;50Hno multibyte chAracterE[41;50H        one leaDing tabE[42;50H    four leadinG spacesE[43;50Htwo             consecutive tabsE[44;50Htwo     tabs    in one lineE[45;50Hone âE[34m~@E[m¦ multibyteCharacterE[45;78HE[KE[46;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[47;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[48;50HE[1mE[34m~                                              E[49;50H~                                              E[39;50HE[?12lE[?25hE[40;50HE[15CE[?25lE[mE[2;50Hts if :mksession saves cursor columns correctlyE[3;50Htibyte characters when fileencoding=utf-8.E[3;92HE[KE[5;50HRTTESE[5;56HE[KE[6;50H mbyte.vimE[6;60HE[KE[7;50H !has('mksession')E[7;68HE[KE[8;50He! test.okE[8;60HE[KE[9;50Hwq! test.outE[9;62HE[KE[10;50HdifE[10;53HE[KE[11;50Ht sessionoptions=buffers splitbelow fileencodinE[12;50Htart:E[12;55HE[KE[13;50HplitE[13;54HE[KE[14;50H|:splitE[14;57HE[KE[15;50H|:splitE[15;57HE[KE[16;50H|:splitE[16;57HE[KE[17;50H:splitE[17;56HE[KE[18;50H:splitE[18;56HE[KE[19;50H|:splitE[19;57HE[KE[20;50H|:splitE[20;57HE[KE[21;50H|:wincmd lE[21;60HE[KE[22;50Htart:E[22;55HE[KE[23;50Ht nowrapE[23;58HE[KE[24;50H|3zl:splitE[24;60HE[KE[25;50H6|3zl:splitE[25;61HE[KE[26;50H6|3zl:splitE[26;61HE[KE[27;50H|3zl:splitE[27;60HE[KE[28;50H|3zl:splitE[28;60HE[KE[29;50H6|3zl:splitE[29;61HE[KE[30;50H6|3zl:splitE[30;61HE[KE[31;50H6|3zl:splitE[31;61HE[KE[32;50Hsession! test.outE[32;67HE[KE[33;50Hw test.outE[33;60HE[KE[34;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[34;85HE[KE[35;50HE[KE[36;50H!E[36;51HE[KE[37;50HTESE[37;54HE[KE[39;50Hrt:E[39;53HE[KE[40;50Hmultibyte chAracterE[40;69HE[KE[41;55Hone leaDing tabE[41;70HE[KE[42;51Hfour leadinG spacesE[42;70HE[KE[43;50H   E[10Cconsecutive tabsE[43;79HE[KE[44;50H     tabs    in one lineE[44;74HE[KE[45;50H âE[34m~@E[m¦ multibyteCharacterE[45;74HE[KE[46;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[46;85HE[KE[47;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[47;90HE[KE[40;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[1;50H|:wincmd lE[2;51Hart:E[2;56HE[KE[3;51H nowrapE[3;58HE[KE[4;50H|3zl:splitE[5;50H6|3zl:splitE[6;50H6|3zl:splitE[7;50H|3zl:splitE[7;60HE[KE[8;50H|3zl:splitE[9;50H6|3zl:splitE[9;61HE[KE[10;50H6|3zl:splitE[11;50H6|3zl:splitE[11;61HE[KE[12;50Hsession! test.outE[13;50Hw test.outE[14;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[15;50HE[KE[16;50H!E[16;51HE[KE[17;50HTESTE[17;54HE[KE[18;50HE[KE[19;50Hrt:E[19;53HE[KE[20;50Hmultibyte chAracterE[21;50H     one leaDing tabE[22;50H four leadinG spacesE[23;50H             consecutive tabsE[24;50H     tabs    in one lineE[25;50H âE[34m~@E[m¦ multibyteCharacterE[26;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[27;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[28;50HE[1mE[34m~                                              E[mE[29;50HE[7mtest92.in [+]                                  E[mE[30;50H|:wincmd lE[30;60HE[KE[31;50Htart:E[31;55HE[KE[32;50Ht nowrapE[32;59HE[KE[33;50H|3zl:spliE[34;50H6|3zl:splitE[34;61HE[KE[35;50H6|3zl:splitE[36;50H|3zl:splitE[37;50H|3zl:splitE[38;50H6|3zl:splitE[39;50H6|3zl:splitE[40;50H6|3zl:splitE[40;61HE[KE[41;50Hsession! test.outE[41;67HE[KE[42;50Hw test.outE[42;60HE[KE[43;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[44;55HE[KE[45;50H!E[45;51HE[KE[46;50HTESTE[46;54HE[KE[47;50HE[KE[48;50Hrt:E[48;53HE[KE[49;50Hmultibyte chAracterE[49;69HE[KE[50;50H     one leaDing tabE[50;70HE[KE[51;50H four leadinG spacesE[51;70HE[KE[52;50H             consecutive tabsE[52;79HE[KE[53;50H     tabs    in one lineE[53;74HE[KE[54;50H âE[34m~@E[m¦ multibyteCharacterE[54;74HE[KE[55;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[55;85HE[KE[56;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[56;90HE[KE[49;62HE[?12lE[?25hE[50;62HE[?25lE[30;50Hj16|:wincmd lE[31;50H/^start:E[32;50H:set nowrapE[33;50Hj16|3zl:splitE[34;50Hj016|3zl:splitE[35;50Hj016|3zl:splitE[36;50Hj08|3zl:splitE[37;50Hj08|3zl:splitE[38;50Hj016|3zl:splitE[39;50Hj016|3zl:splitE[40;50Hj016|3zl:splitE[41;50H:mksession! test.outE[42;50H:new test.outE[43;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[44;50H:wE[45;50H:qa!E[46;50HENDTESTE[48;50Hstart:E[49;50Hno multibyte chAracterE[50;55H   one leaDing tabE[51;51H   four leadinG spacesE[52;50HtwoE[10C   consecutive tabsE[53;50Htwo     tabs    in one lineE[54;50Hone âE[34m~@E[m¦ multibyteCharacterE[55;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[56;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[50;57HE[?12lE[?25hE[8CE[?25lE[30;50H|:wincmd lE[30;60HE[KE[31;50Htart:E[31;55HE[KE[32;50Ht nowrapE[32;58HE[KE[33;50H|3zl:splitE[33;60HE[KE[34;50H6|3zl:splitE[34;61HE[KE[35;50H6|3zl:splitE[35;61HE[KE[36;50H|3zl:splitE[36;60HE[KE[37;50H|3zl:splitE[37;60HE[KE[38;50H6|3zl:splitE[38;61HE[KE[39;50H6|3zl:splitE[39;61HE[KE[40;50H6|3zl:splitE[40;61HE[KE[41;50Hsession! test.outE[41;67HE[KE[42;50Hw test.outE[42;60HE[KE[43;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[43;85HE[KE[44;50HE[KE[45;50H!E[45;51HE[KE[46;50HTESE[46;54HE[KE[48;50Hrt:E[48;53HE[KE[49;50Hmultibyte chAracterE[49;69HE[KE[50;55Hone leaDing tabE[50;70HE[KE[51;51Hfour leadinG spacesE[51;70HE[KE[52;50H   E[10Cconsecutive tabsE[52;79HE[KE[53;50H     tabs    in one lineE[53;74HE[KE[54;50H âE[34m~@E[m¦ multibyteCharacterE[54;74HE[KE[55;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[55;85HE[KE[56;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[56;90HE[KE[50;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H|3zl:splitE[2;50H6|3zl:splitE[3;50H6|3zl:splitE[4;50H6|3zl:splitE[5;50Hsession! test.outE[6;50Hw test.outE[7;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[9;50H!E[10;50HTESTE[12;50Hrt:E[13;50Hmultibyte chAracterE[14;55Hone leaDing tabE[15;51Hfour leadinG spacesE[16;63Hconsecutive tabsE[17;55Htabs    in one lineE[18;51HâE[34m~@E[m¦ multibyteCharacterE[19;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[20;50HE[7mtest92.in [+]                                  E[mE[21;50H6|3zl:splitE[22;50H6|3zl:splitE[23;50H6|3zl:splitE[24;50Hsession! test.outE[25;50Hw test.outE[26;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[28;50H!E[29;50HTESTE[31;50Hrt:E[32;50Hmultibyte chAracterE[33;55Hone leaDing tabE[34;51Hfour leadinG spacesE[35;63Hconsecutive tabsE[36;55Htabs    in one lineE[37;51HâE[34m~@E[m¦ multibyteCharacterE[38;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[39;50HE[7mtest92.in [+]                                  E[mE[40;50H|3zl:splitE[41;50H6|3zl:splitE[42;50H6|3zl:splitE[43;50H6|3zl:splitE[44;50Hsession! test.outE[45;50Hw test.outE[46;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;50H!E[49;50HTESTE[51;50Hrt:E[52;50Hmultibyte chAracterE[53;55Hone leaDing tabE[54;51Hfour leadinG spacesE[55;63Hconsecutive tabsE[56;55Htabs    in one lineE[57;51HâE[34m~@E[m¦ multibyteCharacterE[58;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[59;50HE[1mE[7mtest92.in [+]                                  E[53;62HE[?12lE[?25hE[54;62HE[?25lE[mE[40;50Hj08|3zl:splitE[41;50Hj016|3zl:splitE[42;50Hj016|3zl:splitE[43;50Hj016|3zl:splitE[44;50H:mksession! test.outE[45;50H:new test.outE[46;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[47;50H:wE[48;50H:qa!E[49;50HENDTESTE[51;50Hstart:E[52;50Hno multibyte chAracterE[53;55H   one leaDing tabE[54;51H   four leadinG spacesE[55;50HtwoE[10C   consecutive tabsE[56;50Htwo     tabs    in one lineE[57;50Hone âE[34m~@E[m¦ multibyteCharacterE[58;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[54;50HE[?12lE[?25hE[15CE[?25lE[40;50H|3zl:splitE[40;60HE[KE[41;50H6|3zl:splitE[41;61HE[KE[42;50H6|3zl:splitE[42;61HE[KE[43;50H6|3zl:splitE[43;61HE[KE[44;50Hsession! test.outE[44;67HE[KE[45;50Hw test.outE[45;60HE[KE[46;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[46;85HE[KE[47;50HE[KE[48;50H!E[48;51HE[KE[49;50HTESE[49;54HE[KE[51;50Hrt:E[51;53HE[KE[52;50Hmultibyte chAracterE[52;69HE[KE[53;55Hone leaDing tabE[53;70HE[KE[54;51Hfour leadinG spacesE[54;70HE[KE[55;50H   E[10Cconsecutive tabsE[55;79HE[KE[56;50H     tabs    in one lineE[56;74HE[KE[57;50H âE[34m~@E[m¦ multibyteCharacterE[57;74HE[KE[58;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;85HE[KE[54;62HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H6|3zl:splitE[2;50Hsession! test.outE[3;50Hw test.outE[4;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[6;50H!E[7;50HTESTE[9;50Hrt:E[10;50Hmultibyte chAracterE[11;55Hone leaDing tabE[12;51Hfour leadinG spacesE[13;63Hconsecutive tabsE[14;55Htabs    in one lineE[15;50HE[7mtest92.in [+]                                  E[mE[16;50Hsession! test.outE[17;50Hw test.outE[18;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[20;50H!E[21;50HTESTE[23;50Hrt:E[24;50Hmultibyte chAracterE[25;55Hone leaDing tabE[26;51Hfour leadinG spacesE[27;63Hconsecutive tabsE[28;55Htabs    in one lineE[29;51HâE[34m~@E[m¦ multibyteCharacterE[30;50HE[7mtest92.in [+]                                  E[mE[31;50Hw test.outE[32;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[34;50H!E[35;50HTESTE[37;50Hrt:E[38;50Hmultibyte chAracterE[39;55Hone leaDing tabE[40;51Hfour leadinG spacesE[41;63Hconsecutive tabsE[42;55Htabs    in one lineE[43;51HâE[34m~@E[m¦ multibyteCharacterE[44;50HE[7mtest92.in [+]                                  E[mE[45;50Hsession! test.outE[46;50Hw test.outE[47;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[49;50H!E[50;50HTESTE[52;50Hrt:E[53;50Hmultibyte chAracterE[54;55Hone leaDing tabE[55;51Hfour leadinG spacesE[56;63Hconsecutive tabsE[57;55Htabs    in one lineE[58;51HâE[34m~@E[m¦ multibyteCharacterE[59;50HE[1mE[7mtest92.in [+]                                  E[55;62HE[?12lE[?25hE[56;62HE[?25lE[mE[45;50H:mksession! test.outE[46;50H:new test.outE[47;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;50H:wE[49;50H:qa!E[50;50HENDTESTE[52;50Hstart:E[53;50Hno multibyte chAracterE[54;55H   one leaDing tabE[55;51H   four leadinG spacesE[56;50HtwoE[10C   consecutive tabsE[57;50Htwo     tabs    in one lineE[58;50Hone âE[34m~@E[m¦ multibyteCharacterE[56;50HE[?12lE[?25hE[7CE[?25lE[45;50Hsession! test.outE[45;67HE[KE[46;50Hw test.outE[46;60HE[KE[47;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[47;85HE[KE[48;50HE[KE[49;50H!E[49;51HE[KE[50;50HTESE[50;54HE[KE[52;50Hrt:E[52;53HE[KE[53;50Hmultibyte chAracterE[53;69HE[KE[54;55Hone leaDing tabE[54;70HE[KE[55;51Hfour leadinG spacesE[55;70HE[KE[56;50H   E[10Cconsecutive tabsE[56;79HE[KE[57;50H     tabs    in one lineE[57;74HE[KE[58;50H âE[34m~@E[m¦ multibyteCharacterE[58;74HE[KE[56;54HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50Hw test.outE[2;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[4;50H!E[5;50HTESTE[7;50Hrt:E[8;50Hmultibyte chAracterE[9;55Hone leaDing tabE[10;51Hfour leadinG spacesE[11;63Hconsecutive tabsE[12;50HE[7mtest92.in [+]                                  E[mE[13;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[15;50H!E[16;50HTESTE[18;50Hrt:E[19;50Hmultibyte chAracterE[20;55Hone leaDing tabE[21;51Hfour leadinG spacesE[22;63Hconsecutive tabsE[23;55Htabs    in one lineE[24;50HE[7mtest92.in [+]                                  E[mE[25;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[27;50H!E[28;50HTESTE[30;50Hrt:E[31;50Hmultibyte chAracterE[32;55Hone leaDing tabE[33;51Hfour leadinG spacesE[34;63Hconsecutive tabsE[35;55Htabs    in one lineE[36;50HE[7mtest92.in [+]                                  E[mE[38;50H!E[39;50HTESTE[41;50Hrt:E[42;50Hmultibyte chAracterE[43;55Hone leaDing tabE[44;51Hfour leadinG spacesE[45;63Hconsecutive tabsE[46;55Htabs    in one lineE[47;50HE[7mtest92.in [+]                                  E[mE[48;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[50;50H!E[51;50HTESTE[53;50Hrt:E[54;50Hmultibyte chAracterE[55;55Hone leaDing tabE[56;51Hfour leadinG spacesE[57;63Hconsecutive tabsE[58;55Htabs    in one lineE[59;50HE[1mE[7mtest92.in [+]                                  E[57;54HE[?12lE[?25hE[58;54HE[?25lE[mE[48;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[49;50H:wE[50;50H:qa!E[51;50HENDTESTE[53;50Hstart:E[54;50Hno multibyte chAracterE[55;55H   one leaDing tabE[56;51H   four leadinG spacesE[57;50HtwoE[10C   consecutive tabsE[58;50Htwo     tabs    in one lineE[58;50HE[?12lE[?25hE[7CE[?25lE[48;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;85HE[KE[49;50HE[KE[50;50H!E[50;51HE[KE[51;50HTESE[51;54HE[KE[53;50Hrt:E[53;53HE[KE[54;50Hmultibyte chAracterE[54;69HE[KE[55;55Hone leaDing tabE[55;70HE[KE[56;51Hfour leadinG spacesE[56;70HE[KE[57;50H   E[10Cconsecutive tabsE[57;79HE[KE[58;50H     tabs    in one lineE[58;74HE[KE[58;54HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[3;50H!E[4;50HTESTE[6;50Hrt:E[7;50Hmultibyte chAracterE[8;55Hone leaDing tabE[9;51Hfour leadinG spacesE[10;50HE[7mtest92.in [+]                                  E[mE[12;50H!E[13;50HTESTE[15;50Hrt:E[16;50Hmultibyte chAracterE[17;55Hone leaDing tabE[18;51Hfour leadinG spacesE[19;63Hconsecutive tabsE[20;50HE[7mtest92.in [+]                                  E[mE[21;50H!E[22;50HTESTE[24;50Hrt:E[25;50Hmultibyte chAracterE[26;55Hone leaDing tabE[27;51Hfour leadinG spacesE[28;63Hconsecutive tabsE[29;55Htabs    in one lineE[30;50HE[7mtest92.in [+]                                  E[mE[31;50H!E[32;50HTESTE[34;50Hrt:E[35;50Hmultibyte chAracterE[36;55Hone leaDing tabE[37;51Hfour leadinG spacesE[38;63Hconsecutive tabsE[39;55Htabs    in one lineE[40;50HE[7mtest92.in [+]                                  E[mE[41;50HTESTE[43;50Hrt:E[44;50Hmultibyte chAracterE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;50HE[7mtest92.in [+]                                  E[mE[50;50H!E[51;50HTESTE[53;50Hrt:E[54;50Hmultibyte chAracterE[55;55Hone leaDing tabE[56;51Hfour leadinG spacesE[57;63Hconsecutive tabsE[58;55Htabs    in one lineE[59;50HE[1mE[7mtest92.in [+]                                  E[58;54HE[?12lE[?25hE[?25lE[mE[50;50HTEST                                           E[51;50H                                               E[52;50Hrt:                                            E[53;50Hmultibyte chAracter                            E[54;50H     one leaDing tab                           E[55;50H four leadinG spaces                           E[56;50H             consecutive tabs                  E[57;50H     tabs    in one line                       E[58;50H                                               E[58;51HâE[34m~@E[m¦ multibyteCharacterE[58;54HE[?12lE[?25hE[?25lE[50;50HENDTESTE[52;50Hstart:E[53;50Hno multibyte chAracterE[54;55H   one leaDing tabE[55;51H   four leadinG spacesE[56;50HtwoE[10C   consecutive tabsE[57;50Htwo     tabs    in one lineE[58;50Hone âE[34m~@E[m¦ multibyteCharacterE[58;50HE[?12lE[?25hE[15CE[?25lE[50;50HTESE[50;54HE[KE[52;50Hrt:E[52;53HE[KE[53;50Hmultibyte chAracterE[53;69HE[KE[54;55Hone leaDing tabE[54;70HE[KE[55;51Hfour leadinG spacesE[55;70HE[KE[56;50H   E[10Cconsecutive tabsE[56;79HE[KE[57;50H     tabs    in one lineE[57;74HE[KE[58;50H âE[34m~@E[m¦ multibyteCharacterE[58;74HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;51Hfour leadinG spacesE[8;50HE[7mtest92.in [+]                                  E[mE[9;50HTESTE[11;50Hrt:E[12;50Hmultibyte chAracterE[13;55Hone leaDing tabE[14;51Hfour leadinG spacesE[15;63Hconsecutive tabsE[16;50HE[7mtest92.in [+]                                  E[mE[17;50H!E[18;50HTESTE[20;50Hrt:E[21;50Hmultibyte chAracterE[22;55Hone leaDing tabE[23;51Hfour leadinG spacesE[24;63Hconsecutive tabsE[25;50HE[7mtest92.in [+]                                  E[mE[27;50Hrt:E[28;50Hmultibyte chAracterE[29;55Hone leaDing tabE[30;51Hfour leadinG spacesE[31;63Hconsecutive tabsE[32;55Htabs    in one lineE[33;50HE[7mtest92.in [+]                                  E[mE[34;50HTESTE[36;50Hrt:E[37;50Hmultibyte chAracterE[38;55Hone leaDing tabE[39;51Hfour leadinG spacesE[40;63Hconsecutive tabsE[41;55Htabs    in one lineE[42;50HE[7mtest92.in [+]                                  E[mE[43;50Hrt:E[44;50Hmultibyte chAracterE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51HâE[34m~@E[m¦ multibyteCharacterE[50;50HE[7mtest92.in [+]                                  E[mE[52;50Hrt:E[53;50Hmultibyte chAracterE[54;55Hone leaDing tabE[55;51Hfour leadinG spacesE[56;63Hconsecutive tabsE[57;55Htabs    in one lineE[58;51HâE[34m~@E[m¦ multibyteCharacterE[59;50HE[1mE[7mtest92.in [+]                                  E[58;62HE[?12lE[?25hE[?25lE[mE[51;50Hrt:                                            E[52;50Hmultibyte chAracter                            E[53;50H     one leaDing tab                           E[54;50H four leadinG spaces                           E[55;50H             consecutive tabs                  E[56;50H     tabs    in one line                       E[57;50H âE[34m~@E[m¦ multibyteCharacter                       E[58;50H                                               E[58;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;62HE[?12lE[?25hE[?25lE[51;50Hstart:E[52;50Hno multibyte chAracterE[53;55H   one leaDing tabE[54;51H   four leadinG spacesE[55;50HtwoE[10C   consecutive tabsE[56;50Htwo     tabs    in one lineE[57;50Hone âE[34m~@E[m¦ multibyteCharacterE[58;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;50HE[?12lE[?25hE[15CE[?25lE[51;50Hrt:E[51;53HE[KE[52;50Hmultibyte chAracterE[52;69HE[KE[53;55Hone leaDing tabE[53;70HE[KE[54;51Hfour leadinG spacesE[54;70HE[KE[55;50H   E[10Cconsecutive tabsE[55;79HE[KE[56;50H     tabs    in one lineE[56;74HE[KE[57;50H âE[34m~@E[m¦ multibyteCharacterE[57;74HE[KE[58;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;85HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;50HE[7mtest92.in [+]                                  E[mE[8;50HTESTE[10;50Hrt:E[11;50Hmultibyte chAracterE[12;55Hone leaDing tabE[13;51Hfour leadinG spacesE[14;50HE[7mtest92.in [+]                                  E[mE[16;50Hrt:E[17;50Hmultibyte chAracterE[18;55Hone leaDing tabE[19;51Hfour leadinG spacesE[20;63Hconsecutive tabsE[21;50HE[7mtest92.in [+]                                  E[mE[23;50Hrt:E[24;50Hmultibyte chAracterE[25;55Hone leaDing tabE[26;51Hfour leadinG spacesE[27;63Hconsecutive tabsE[28;55Htabs    in one lineE[29;50HE[7mtest92.in [+]                                  E[mE[30;50Hrt:E[31;50Hmultibyte chAracterE[32;55Hone leaDing tabE[33;51Hfour leadinG spacesE[34;63Hconsecutive tabsE[35;55Htabs    in one lineE[36;50HE[7mtest92.in [+]                                  E[mE[37;50Hrt:E[38;50Hmultibyte chAracterE[39;55Hone leaDing tabE[40;51Hfour leadinG spacesE[41;63Hconsecutive tabsE[42;55Htabs    in one lineE[43;51HâE[34m~@E[m¦ multibyteCharacterE[44;50HE[7mtest92.in [+]                                  E[mE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51HâE[34m~@E[m¦ multibyteCharacterE[50;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[51;50HE[7mtest92.in [+]                                  E[mE[52;50Hmultibyte chAracterE[53;55Hone leaDing tabE[54;51Hfour leadinG spacesE[55;63Hconsecutive tabsE[56;55Htabs    in one lineE[57;51HâE[34m~@E[m¦ multibyteCharacterE[58;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[59;50HE[1mE[7mtest92.in [+]                                  E[58;62HE[?12lE[?25hE[?25lE[mE[52;50H     one leaDing tab                           E[53;50H four leadinG spaces                           E[54;50H             consecutive tabs                  E[55;50H     tabs    in one line                       E[56;50H âE[34m~@E[m¦ multibyteCharacter                       E[57;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte characters            E[58;50H                                               E[58;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[58;62HE[?12lE[?25hE[?25lE[52;55H   one leaDing tabE[53;51H   four leadinG spacesE[54;50HtwoE[10C   consecutive tabsE[55;50Htwo     tabs    in one lineE[56;50Hone âE[34m~@E[m¦ multibyteCharacterE[57;50Ha âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;50HâE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[58;50HE[?12lE[?25hE[15CE[?25lE[52;55Hone leaDing tabE[52;70HE[KE[53;51Hfour leadinG spacesE[53;70HE[KE[54;50H   E[10Cconsecutive tabsE[54;79HE[KE[55;50H     tabs    in one lineE[55;74HE[KE[56;50H âE[34m~@E[m¦ multibyteCharacterE[56;74HE[KE[57;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[57;85HE[KE[58;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[58;90HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;50HE[7mtest92.in [+]                                  E[mE[9;50Hrt:E[10;50Hmultibyte chAracterE[11;55Hone leaDing tabE[12;51Hfour leadinG spacesE[13;50HE[7mtest92.in [+]                                  E[mE[15;50Hrt:E[16;50Hmultibyte chAracterE[17;55Hone leaDing tabE[18;51Hfour leadinG spacesE[19;63Hconsecutive tabsE[20;50HE[7mtest92.in [+]                                  E[mE[21;50Hrt:E[22;50Hmultibyte chAracterE[23;55Hone leaDing tabE[24;51Hfour leadinG spacesE[25;63Hconsecutive tabsE[26;50HE[7mtest92.in [+]                                  E[mE[27;50Hrt:E[28;50Hmultibyte chAracterE[29;55Hone leaDing tabE[30;51Hfour leadinG spacesE[31;63Hconsecutive tabsE[32;55Htabs    in one lineE[33;50HE[7mtest92.in [+]                                  E[mE[34;55Hone leaDing tabE[35;51Hfour leadinG spacesE[36;63Hconsecutive tabsE[37;55Htabs    in one lineE[38;51HâE[34m~@E[m¦ multibyteCharacterE[39;50HE[7mtest92.in [+]                                  E[mE[40;55Hone leaDing tabE[41;51Hfour leadinG spacesE[42;63Hconsecutive tabsE[43;55Htabs    in one lineE[44;51HâE[34m~@E[m¦ multibyteCharacterE[45;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[46;50HE[7mtest92.in [+]                                  E[mE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51HâE[34m~@E[m¦ multibyteCharacterE[50;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[51;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[52;50HE[7mtest92.in [+]                                  E[mE[53;51Hfour leadinG spacesE[54;63Hconsecutive tabsE[55;55Htabs    in one lineE[56;51HâE[34m~@E[m¦ multibyteCharacterE[57;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[58;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[59;50HE[1mE[7mtest92.in [+]                                  E[58;62HE[?12lE[?25hE[?25l

E[m:E[?12lE[?25hmksession! test.outE[?25lE[58;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnew test.outE[?25l"test.out" E[60;12HE[KE[60;12H280 lines, 5346 charactersE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test92.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test92.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|
test92.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|
test92.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one âE[34m~@E[m¦ multibyteCharacterE[21CE[7m|E[m
a âE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[10CE[7m|E[m
âE[34m~@~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte characters     E[7m|
test92.in [+]                                    E[mE[1;50HTESTE[3;50Hrt:E[4;50Hmultibyte chAracterE[5;55Hone leaDing tabE[6;50HE[7mtest92.in [+]                                  E[mE[8;50Hrt:E[9;50Hmultibyte chAracterE[10;55Hone leaDing tabE[11;51Hfour leadinG spacesE[12;50HE[7mtest92.in [+]                                  E[mE[13;50Hrt:E[14;50Hmultibyte chAracterE[15;55Hone leaDing tabE[16;51Hfour leadinG spacesE[17;63Hconsecutive tabsE[18;50HE[7mtest92.in [+]                                  E[mE[19;50Hrt:E[20;50Hmultibyte chAracterE[21;55Hone leaDing tabE[22;51Hfour leadinG spacesE[23;63Hconsecutive tabsE[24;50HE[7mtest92.in [+]                                  E[mE[25;50Hmultibyte chAracterE[26;55Hone leaDing tabE[27;51Hfour leadinG spacesE[28;63Hconsecutive tabsE[29;55Htabs    in one lineE[30;50HE[7mtest92.in [+]                                  E[mE[31;55Hone leaDing tabE[32;51Hfour leadinG spacesE[33;63Hconsecutive tabsE[34;55Htabs    in one lineE[35;51HâE[34m~@E[m¦ multibyteCharacterE[36;50HE[7mtest92.in [+]                                  E[mE[37;51Hfour leadinG spacesE[38;63Hconsecutive tabsE[39;55Htabs    in one lineE[40;51HâE[34m~@E[m¦ multibyteCharacterE[41;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[42;50HE[7mtest92.in [+]                                  E[mE[43;63Hconsecutive tabsE[44;55Htabs    in one lineE[45;51HâE[34m~@E[m¦ multibyteCharacterE[46;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[47;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[48;50HE[7mtest92.in [+]                                  E[mE[49;55Htabs    in one lineE[50;51HâE[34m~@E[m¦ multibyteCharacterE[51;50HE[34m~@~\E[mbâE[34m~@~]E[m two multiByte charactersE[52;50HE[34m~\E[mcâE[34m~@~]E[m1âE[34m~BE[m¬ three mulTibyte charactersE[53;50HE[7mtest92.in [+]                                  E[mE[54;50Hlet SessionLoad = 1E[55;50Hif !&cp | set cp | endifE[56;50Hlet s:so_save = &so | let s:siso_save = &siso |E[57;50Hlet v:this_session=expand("<sfile>:p")E[58;50Hsilent onlyE[59;50HE[1mE[7mtest.out                                       E[54;50HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hv/\(^ *normal! 0\|^ *exe 'normal!\)/dE[?25l254 fewer linesE[60;17HE[KE[54;50H  normal! 016|E[54;64HE[KE[55;50H  exe 'normal! ' . s:c . '|zs' . 16 . '|'E[56;50H  normal! 016|E[56;64HE[KE[57;50H  exe 'normal! ' . s:c . '|zs' . 16 . '|'E[58;50H  normal! 016|E[59;59HE[1mE[7m[+]E[58;52HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 26 lines, 611 characters writtenE[59;59HE[1mE[7m    E[58;52HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test93.failed test.ok test.out X* viminfo
cp test93.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 test93.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test93.in" 48 lines, 833 charactersE[1;1Hvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab and
multibyte characters when fileencoding=latin1.

STARTTEST
:so mbyte.vim
:if !has('mksession')
:  e! test.ok
:  wq! test.out
:endif
:set sessionoptions=buffers splitbelow fileencoding=latin1
/^start:
:vsplit
j16|:split
j16|:split
j16|:split
j8|:split
j8|:split
j16|:split
j16|:split
j16|:wincmd l
/^start:
:set nowrap
j16|3zl:split
j016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w
:qa!
ENDTEST

start:
no multibyte chAracterE[42;9Hone leaDing tab
    four leadinG spaces
twoE[13Cconsecutive tabs
two     tabs    in one line
one ä multibyteCharacter
aä Ä  two multiByte characters
Aäöü  three mulTibyte characters
E[1mE[34m~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1Hvim: set ft=vim fenc=latin1:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[6;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 31 lines, 458 characters writtenE[7;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[7;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[38;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hif !has('mksession')E[?25l
:  E[?12lE[?25h:  e! test.ok
E[?25l:  E[?12lE[?25h:  wq! test.out
E[?25l:  E[?12lE[?25h:endifE[1;1HE[3LE[?25lE[1;1Hvim: set ft=vim fenc=latin1:

Tests if :mksession saves cursor columns correctly in presence of tab andE[60;1HE[KE[39;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hset sessionoptions=buffers splitbelow fileencoding=latin1E[?25lE[39;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^start:E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hvsplitE[?25lE[1;1H                            E[20CE[7m|E[m
Tests if :mksession saves cursor columns correctE[7m|E[m
ly in presence of tab and                       E[7m|E[4;49H|E[5;49H|E[6;49H|E[7;49H|E[8;49H|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[m
ing=latin1E[38CE[7m|E[m
/^start:E[40CE[7m|E[m
:vsplit   E[38CE[7m|E[16;49H|E[17;49H|E[m
j16|:splitE[38CE[7m|E[19;49H|E[m
j8|:split E[38CE[7m|E[21;49H|E[mE[22;6Hsplit   E[35CE[7m|E[m
j16|:wincmd lE[35CE[7m|E[m
/^start:   E[37CE[7m|E[m
:set nowrap  E[35CE[7m|E[m
j16|3zl:split E[34CE[7m|E[27;49H|E[m
j016|3zl:splitE[34CE[7m|E[29;49H|E[m
j08|3zl:split E[34CE[7m|E[31;49H|E[32;49H|E[m
j016|3zl:split      E[28CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.out                         E[10CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:w  E[44CE[7m|E[m
:qa!   E[41CE[7m|E[m
ENDTESTE[41CE[7m|E[m
      E[42CE[7m|E[m
start:                E[26CE[7m|E[m
no multibyte chAracter E[25CE[7m|E[m
        one leaDing tabE[25CE[7m|E[m
    four leadinG spaces         E[16CE[7m|E[mE[45;9H        consecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacter      E[18CE[7m|E[m
aä Ä  two multiByte characters  E[16CE[7m|E[m
Aäöü  three mulTibyte characters                E[7m|E[50;49H|E[51;49H|E[52;49H|E[53;49H|E[54;49H|E[55;49H|E[56;49H|E[57;49H|E[58;49H|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[49;82HE[KE[50;50HE[1mE[34m~E[51;50H~E[52;50H~E[53;50H~E[54;50H~E[55;50H~E[56;50H~E[57;50H~E[58;50H~E[mE[59;50HE[7mtest93.in [+]                                  E[41;1HE[?12lE[?25h
E[15CE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[1;1Hj16|:split
j16|:wincmd l                                   
/^start:                 
:set nowrap                                   
j16|3zl:split
j016|3zl:split
j016|3zl:split
j08|3zl:split        
j08|3zl:split
j016|3zl:split 
j016|3zl:split
j016|3zl:split                                  
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w        
:qa!      
ENDTEST   
         
start:   
no multibyte chAracter
        one leaDing tab
    four leadinG spaces
two     E[8Cconsecutive tabs
two     tabs    in one line
one ä multibyteCharacter
aä Ä  two multiByte characters
Aäöü  three mulTibyte characters
E[7mtest93.in [+]                                   E[m
j16|:split   
j16|:wincmd l 
/^start:      
:set nowrap   
j16|3zl:split       
j016|3zl:split
j016|3zl:split                        
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out  
:new test.out          
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w E[13C                
:qa!                       
ENDTEST                 
                              
start:                          
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one ä multibyteCharacter                        
aä Ä  two multiByte characters                  
Aäöü  three mulTibyte characters                E[50;16HE[?12lE[?25hE[51;16HE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1Hj08|3zl:splitE[35CE[7m|E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[12;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[15;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[31;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[34;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[m
j08|3zl:splitE[35CE[7m|E[m
j08|3zl:splitE[35CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[51;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[54;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[54;16HE[?12lE[?25hE[55;16HE[?25lE[60;1HE[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1Hj016|3zl:splitE[34CE[7m|E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[37;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[40;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
j016|3zl:splitE[34CE[7m|E[m
:mksession! test.outE[28CE[7m|E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[56;16HE[?12lE[?25hE[57;16HE[57;8HE[?25l


E[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[6;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[9;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
:new test.outE[35CE[7m|E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[18;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[21;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[29;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[40;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[43;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[57;8HE[?12lE[?25hE[58;8HE[?25l

E[m:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[10CE[7m|E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[5;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[8;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[14;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[17;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[24;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[27;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[34;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[37;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[42;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[52;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[55;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[58;8HE[?12lE[?25hE[?25lE[mE[50;1HENDTEST                                         
                                                
start:                                          
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
                                                one ä multibyteCharacterE[58;8HE[?12lE[?25hE[8CE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:wE[46CE[7m|E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[4;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[7;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[11;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[14;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[m
:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[19;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[22;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[27;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[30;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[35;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[38;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[51;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[54;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[58;16HE[?12lE[?25hE[?25lE[mE[51;1Hstart:                                          
no multibyte chAracter                          
        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one ä multibyteCharacter                        
                                                aä Ä  two multiByte charactersE[58;16HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[m
no multibyte chAracterE[26CE[7m|E[mE[53;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
E[1mE[7mtest93.in [+]                                    E[mE[2;50HTests if :mksession saves cursor columns correcE[3;50Htly in presence of tab andE[4;50Hmultibyte characters when fileencoding=latin1.E[6;50HSTARTTESTE[7;50H:so mbyte.vimE[8;50H:if !has('mksession')E[9;50H:  e! test.okE[10;50H:  wq! test.outE[11;50H:endifE[12;50H:set sessionoptions=buffers splitbelow fileencoE[13;50Hding=latin1E[14;50H/^start:E[15;50H:vsplitE[16;50Hj16|:splitE[17;50Hj16|:splitE[18;50Hj16|:splitE[19;50Hj8|:splitE[20;50Hj8|:splitE[21;50Hj16|:splitE[22;50Hj16|:splitE[23;50Hj16|:wincmd lE[24;50H/^start:E[25;50H:set nowrapE[26;50Hj16|3zl:splitE[27;50Hj016|3zl:splitE[28;50Hj016|3zl:splitE[29;50Hj08|3zl:splitE[30;50Hj08|3zl:splitE[31;50Hj016|3zl:splitE[32;50Hj016|3zl:splitE[33;50Hj016|3zl:splitE[34;50H:mksession! test.outE[35;50H:new test.outE[36;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[37;50H:wE[38;50H:qa!E[39;50HENDTESTE[41;50Hstart:E[42;50Hno multibyte chAracterE[43;58Hone leaDing tabE[44;54Hfour leadinG spacesE[45;50HtwoE[13Cconsecutive tabsE[46;50Htwo     tabs    in one lineE[47;50Hone ä multibyteCharacterE[48;50Haä Ä  two multiByte charactersE[49;50HAäöü  three mulTibyte charactersE[50;50HE[1mE[34m~                                              E[51;50H~                                              E[52;50H~                                              E[53;50H~                                              E[54;50H~                                              E[55;50H~                                              E[56;50H~                                              E[57;50H~                                              E[58;50H~                                              E[mE[59;50HE[7mtest93.in [+]                                  E[58;16HE[?12lE[?25hE[?25lE[mE[52;1H        one leaDing tab                         
    four leadinG spaces                         
two             consecutive tabs                
two     tabs    in one line                     
one ä multibyteCharacter                        
aä Ä  two multiByte characters                  
                                                Aäöü  three mulTibyte charactersE[58;16HE[?12lE[?25hE[?25l

:E[?12lE[?25hwincmd lE[?25lE[59;1HE[7mtest93.in [+]E[mE[1mE[7m E[mE[7m                                    E[mE[1mE[7mtest93.in [+]                                  E[41;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/E[?12lE[?25h^start:E[?25lE[31msearch hit BOTTOM, continuing at TOPE[41;50HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset nowrapE[?25lE[3;50Hmultibyte characters when fileencoding=latin1.E[4;50HE[KE[5;50HSTARTTESTE[6;50H:so mbyte.vimE[7;51Hif !has('mksession')E[8;51H  e! test.okE[8;63HE[KE[9;53Hwq! test.outE[10;51HendifE[10;57HE[KE[11;51Hset sessionoptions=buffers splitbelow fileencoE[12;50H/^start:E[12;58HE[KE[13;50H:vsplitE[13;57HE[KE[14;50Hj16|:splitE[15;50Hj16|:splitE[17;51H8|:splitE[17;59HE[KE[18;51H8|:splitE[18;59HE[KE[19;51H16|:splitE[20;51H16|:splitE[21;55Hwincmd lE[22;50H/^start:E[22;58HE[KE[23;50H:set nowrapE[23;62HE[KE[24;50Hj16|3zl:splitE[25;50Hj016|3zl:splitE[26;51H016|3zl:splitE[27;52H8|3zl:splitE[27;63HE[KE[28;52H8|3zl:splitE[28;63HE[KE[29;52H16|3zl:splitE[30;52H16|3zl:splitE[32;50H:mksession! test.outE[33;50H:new test.outE[33;63HE[KE[34;51Hv/\(^ *normal! 0\|^ *exe 'normal!\)/dE[35;51HwE[35;52HE[KE[36;51Hqa!E[36;54HE[KE[37;50HENDTESTE[38;50HE[KE[39;50Hstart:E[39;56HE[KE[40;50Hno multibyte chAracterE[41;50H        one leaDing tabE[42;50H    four leadinG spacesE[43;50Htwo             consecutive tabsE[44;50Htwo     tabs    in one lineE[45;50Hone ä multibyteCharacterE[45;74HE[KE[46;50Haä Ä  two multiByte charactersE[47;50HAäöü  three mulTibyte charactersE[48;50HE[1mE[34m~                                              E[49;50H~                                              E[39;50HE[?12lE[?25hE[40;50HE[15CE[?25lE[mE[2;50Hts if :mksession saves cursor columns correctlyE[3;50Htibyte characters when fileencoding=latin1.E[3;93HE[KE[5;50HRTTESE[5;56HE[KE[6;50H mbyte.vimE[6;60HE[KE[7;50H !has('mksession')E[7;68HE[KE[8;50He! test.okE[8;60HE[KE[9;50Hwq! test.outE[9;62HE[KE[10;50HdifE[10;53HE[KE[11;50Ht sessionoptions=buffers splitbelow fileencodinE[12;50Htart:E[12;55HE[KE[13;50HplitE[13;54HE[KE[14;50H|:splitE[14;57HE[KE[15;50H|:splitE[15;57HE[KE[16;50H|:splitE[16;57HE[KE[17;50H:splitE[17;56HE[KE[18;50H:splitE[18;56HE[KE[19;50H|:splitE[19;57HE[KE[20;50H|:splitE[20;57HE[KE[21;50H|:wincmd lE[21;60HE[KE[22;50Htart:E[22;55HE[KE[23;50Ht nowrapE[23;58HE[KE[24;50H|3zl:splitE[24;60HE[KE[25;50H6|3zl:splitE[25;61HE[KE[26;50H6|3zl:splitE[26;61HE[KE[27;50H|3zl:splitE[27;60HE[KE[28;50H|3zl:splitE[28;60HE[KE[29;50H6|3zl:splitE[29;61HE[KE[30;50H6|3zl:splitE[30;61HE[KE[31;50H6|3zl:splitE[31;61HE[KE[32;50Hsession! test.outE[32;67HE[KE[33;50Hw test.outE[33;60HE[KE[34;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[34;85HE[KE[35;50HE[KE[36;50H!E[36;51HE[KE[37;50HTESE[37;54HE[KE[39;50Hrt:E[39;53HE[KE[40;50Hmultibyte chAracterE[40;69HE[KE[41;55Hone leaDing tabE[41;70HE[KE[42;51Hfour leadinG spacesE[42;70HE[KE[43;50H   E[10Cconsecutive tabsE[43;79HE[KE[44;50H     tabs    in one lineE[44;74HE[KE[45;50H ä multibyteCharacterE[45;71HE[KE[46;50HÄ  two multiByte charactersE[46;77HE[KE[47;50Hü  three mulTibyte charactersE[47;79HE[KE[40;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[1;50H|:wincmd lE[2;51Hart:E[2;56HE[KE[3;51H nowrapE[3;58HE[KE[4;50H|3zl:splitE[5;50H6|3zl:splitE[6;50H6|3zl:splitE[7;50H|3zl:splitE[7;60HE[KE[8;50H|3zl:splitE[9;50H6|3zl:splitE[9;61HE[KE[10;50H6|3zl:splitE[11;50H6|3zl:splitE[11;61HE[KE[12;50Hsession! test.outE[13;50Hw test.outE[14;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[15;50HE[KE[16;50H!E[16;51HE[KE[17;50HTESTE[17;54HE[KE[18;50HE[KE[19;50Hrt:E[19;53HE[KE[20;50Hmultibyte chAracterE[21;50H     one leaDing tabE[22;50H four leadinG spacesE[23;50H             consecutive tabsE[24;50H     tabs    in one lineE[25;50H ä multibyteCharacterE[26;50HÄ  two multiByte charactersE[27;50Hü  three mulTibyte charactersE[28;50HE[1mE[34m~                                              E[mE[29;50HE[7mtest93.in [+]                                  E[mE[30;50H|:wincmd lE[30;60HE[KE[31;50Htart:E[31;55HE[KE[32;50Ht nowrapE[32;59HE[KE[33;50H|3zl:spliE[34;50H6|3zl:splitE[34;61HE[KE[35;50H6|3zl:splitE[36;50H|3zl:splitE[37;50H|3zl:splitE[38;50H6|3zl:splitE[39;50H6|3zl:splitE[40;50H6|3zl:splitE[40;61HE[KE[41;50Hsession! test.outE[41;67HE[KE[42;50Hw test.outE[42;60HE[KE[43;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[44;55HE[KE[45;50H!E[45;51HE[KE[46;50HTESTE[46;54HE[KE[47;50HE[KE[48;50Hrt:E[48;53HE[KE[49;50Hmultibyte chAracterE[49;69HE[KE[50;50H     one leaDing tabE[50;70HE[KE[51;50H four leadinG spacesE[51;70HE[KE[52;50H             consecutive tabsE[52;79HE[KE[53;50H     tabs    in one lineE[53;74HE[KE[54;50H ä multibyteCharacterE[54;71HE[KE[55;50HÄ  two multiByte charactersE[55;77HE[KE[56;50Hü  three mulTibyte charactersE[56;79HE[KE[49;62HE[?12lE[?25hE[50;62HE[?25lE[30;50Hj16|:wincmd lE[31;50H/^start:E[32;50H:set nowrapE[33;50Hj16|3zl:splitE[34;50Hj016|3zl:splitE[35;50Hj016|3zl:splitE[36;50Hj08|3zl:splitE[37;50Hj08|3zl:splitE[38;50Hj016|3zl:splitE[39;50Hj016|3zl:splitE[40;50Hj016|3zl:splitE[41;50H:mksession! test.outE[42;50H:new test.outE[43;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[44;50H:wE[45;50H:qa!E[46;50HENDTESTE[48;50Hstart:E[49;50Hno multibyte chAracterE[50;55H   one leaDing tabE[51;51H   four leadinG spacesE[52;50HtwoE[10C   consecutive tabsE[53;50Htwo     tabs    in one lineE[54;50Hone ä multibyteCharacterE[55;50Haä Ä  two multiByte charactersE[56;50HAäöü  three mulTibyte charactersE[50;57HE[?12lE[?25hE[8CE[?25lE[30;50H|:wincmd lE[30;60HE[KE[31;50Htart:E[31;55HE[KE[32;50Ht nowrapE[32;58HE[KE[33;50H|3zl:splitE[33;60HE[KE[34;50H6|3zl:splitE[34;61HE[KE[35;50H6|3zl:splitE[35;61HE[KE[36;50H|3zl:splitE[36;60HE[KE[37;50H|3zl:splitE[37;60HE[KE[38;50H6|3zl:splitE[38;61HE[KE[39;50H6|3zl:splitE[39;61HE[KE[40;50H6|3zl:splitE[40;61HE[KE[41;50Hsession! test.outE[41;67HE[KE[42;50Hw test.outE[42;60HE[KE[43;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[43;85HE[KE[44;50HE[KE[45;50H!E[45;51HE[KE[46;50HTESE[46;54HE[KE[48;50Hrt:E[48;53HE[KE[49;50Hmultibyte chAracterE[49;69HE[KE[50;55Hone leaDing tabE[50;70HE[KE[51;51Hfour leadinG spacesE[51;70HE[KE[52;50H   E[10Cconsecutive tabsE[52;79HE[KE[53;50H     tabs    in one lineE[53;74HE[KE[54;50H ä multibyteCharacterE[54;71HE[KE[55;50HÄ  two multiByte charactersE[55;77HE[KE[56;50Hü  three mulTibyte charactersE[56;79HE[KE[50;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H|3zl:splitE[2;50H6|3zl:splitE[3;50H6|3zl:splitE[4;50H6|3zl:splitE[5;50Hsession! test.outE[6;50Hw test.outE[7;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[9;50H!E[10;50HTESTE[12;50Hrt:E[13;50Hmultibyte chAracterE[14;55Hone leaDing tabE[15;51Hfour leadinG spacesE[16;63Hconsecutive tabsE[17;55Htabs    in one lineE[18;51Hä multibyteCharacterE[19;50HÄ  two multiByte charactersE[20;50HE[7mtest93.in [+]                                  E[mE[21;50H6|3zl:splitE[22;50H6|3zl:splitE[23;50H6|3zl:splitE[24;50Hsession! test.outE[25;50Hw test.outE[26;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[28;50H!E[29;50HTESTE[31;50Hrt:E[32;50Hmultibyte chAracterE[33;55Hone leaDing tabE[34;51Hfour leadinG spacesE[35;63Hconsecutive tabsE[36;55Htabs    in one lineE[37;51Hä multibyteCharacterE[38;50HÄ  two multiByte charactersE[39;50HE[7mtest93.in [+]                                  E[mE[40;50H|3zl:splitE[41;50H6|3zl:splitE[42;50H6|3zl:splitE[43;50H6|3zl:splitE[44;50Hsession! test.outE[45;50Hw test.outE[46;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;50H!E[49;50HTESTE[51;50Hrt:E[52;50Hmultibyte chAracterE[53;55Hone leaDing tabE[54;51Hfour leadinG spacesE[55;63Hconsecutive tabsE[56;55Htabs    in one lineE[57;51Hä multibyteCharacterE[58;50HÄ  two multiByte charactersE[59;50HE[1mE[7mtest93.in [+]                                  E[53;62HE[?12lE[?25hE[54;62HE[?25lE[mE[40;50Hj08|3zl:splitE[41;50Hj016|3zl:splitE[42;50Hj016|3zl:splitE[43;50Hj016|3zl:splitE[44;50H:mksession! test.outE[45;50H:new test.outE[46;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[47;50H:wE[48;50H:qa!E[49;50HENDTESTE[51;50Hstart:E[52;50Hno multibyte chAracterE[53;55H   one leaDing tabE[54;51H   four leadinG spacesE[55;50HtwoE[10C   consecutive tabsE[56;50Htwo     tabs    in one lineE[57;50Hone ä multibyteCharacterE[58;50Haä Ä  two multiByte charactersE[54;50HE[?12lE[?25hE[15CE[?25lE[40;50H|3zl:splitE[40;60HE[KE[41;50H6|3zl:splitE[41;61HE[KE[42;50H6|3zl:splitE[42;61HE[KE[43;50H6|3zl:splitE[43;61HE[KE[44;50Hsession! test.outE[44;67HE[KE[45;50Hw test.outE[45;60HE[KE[46;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[46;85HE[KE[47;50HE[KE[48;50H!E[48;51HE[KE[49;50HTESE[49;54HE[KE[51;50Hrt:E[51;53HE[KE[52;50Hmultibyte chAracterE[52;69HE[KE[53;55Hone leaDing tabE[53;70HE[KE[54;51Hfour leadinG spacesE[54;70HE[KE[55;50H   E[10Cconsecutive tabsE[55;79HE[KE[56;50H     tabs    in one lineE[56;74HE[KE[57;50H ä multibyteCharacterE[57;71HE[KE[58;50HÄ  two multiByte charactersE[58;77HE[KE[54;62HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H6|3zl:splitE[2;50Hsession! test.outE[3;50Hw test.outE[4;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[6;50H!E[7;50HTESTE[9;50Hrt:E[10;50Hmultibyte chAracterE[11;55Hone leaDing tabE[12;51Hfour leadinG spacesE[13;63Hconsecutive tabsE[14;55Htabs    in one lineE[15;50HE[7mtest93.in [+]                                  E[mE[16;50Hsession! test.outE[17;50Hw test.outE[18;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[20;50H!E[21;50HTESTE[23;50Hrt:E[24;50Hmultibyte chAracterE[25;55Hone leaDing tabE[26;51Hfour leadinG spacesE[27;63Hconsecutive tabsE[28;55Htabs    in one lineE[29;51Hä multibyteCharacterE[30;50HE[7mtest93.in [+]                                  E[mE[31;50Hw test.outE[32;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[34;50H!E[35;50HTESTE[37;50Hrt:E[38;50Hmultibyte chAracterE[39;55Hone leaDing tabE[40;51Hfour leadinG spacesE[41;63Hconsecutive tabsE[42;55Htabs    in one lineE[43;51Hä multibyteCharacterE[44;50HE[7mtest93.in [+]                                  E[mE[45;50Hsession! test.outE[46;50Hw test.outE[47;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[49;50H!E[50;50HTESTE[52;50Hrt:E[53;50Hmultibyte chAracterE[54;55Hone leaDing tabE[55;51Hfour leadinG spacesE[56;63Hconsecutive tabsE[57;55Htabs    in one lineE[58;51Hä multibyteCharacterE[59;50HE[1mE[7mtest93.in [+]                                  E[55;62HE[?12lE[?25hE[56;62HE[?25lE[mE[45;50H:mksession! test.outE[46;50H:new test.outE[47;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;50H:wE[49;50H:qa!E[50;50HENDTESTE[52;50Hstart:E[53;50Hno multibyte chAracterE[54;55H   one leaDing tabE[55;51H   four leadinG spacesE[56;50HtwoE[10C   consecutive tabsE[57;50Htwo     tabs    in one lineE[58;50Hone ä multibyteCharacterE[56;50HE[?12lE[?25hE[7CE[?25lE[45;50Hsession! test.outE[45;67HE[KE[46;50Hw test.outE[46;60HE[KE[47;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[47;85HE[KE[48;50HE[KE[49;50H!E[49;51HE[KE[50;50HTESE[50;54HE[KE[52;50Hrt:E[52;53HE[KE[53;50Hmultibyte chAracterE[53;69HE[KE[54;55Hone leaDing tabE[54;70HE[KE[55;51Hfour leadinG spacesE[55;70HE[KE[56;50H   E[10Cconsecutive tabsE[56;79HE[KE[57;50H     tabs    in one lineE[57;74HE[KE[58;50H ä multibyteCharacterE[58;71HE[KE[56;54HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50Hw test.outE[2;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[4;50H!E[5;50HTESTE[7;50Hrt:E[8;50Hmultibyte chAracterE[9;55Hone leaDing tabE[10;51Hfour leadinG spacesE[11;63Hconsecutive tabsE[12;50HE[7mtest93.in [+]                                  E[mE[13;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[15;50H!E[16;50HTESTE[18;50Hrt:E[19;50Hmultibyte chAracterE[20;55Hone leaDing tabE[21;51Hfour leadinG spacesE[22;63Hconsecutive tabsE[23;55Htabs    in one lineE[24;50HE[7mtest93.in [+]                                  E[mE[25;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[27;50H!E[28;50HTESTE[30;50Hrt:E[31;50Hmultibyte chAracterE[32;55Hone leaDing tabE[33;51Hfour leadinG spacesE[34;63Hconsecutive tabsE[35;55Htabs    in one lineE[36;50HE[7mtest93.in [+]                                  E[mE[38;50H!E[39;50HTESTE[41;50Hrt:E[42;50Hmultibyte chAracterE[43;55Hone leaDing tabE[44;51Hfour leadinG spacesE[45;63Hconsecutive tabsE[46;55Htabs    in one lineE[47;50HE[7mtest93.in [+]                                  E[mE[48;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[50;50H!E[51;50HTESTE[53;50Hrt:E[54;50Hmultibyte chAracterE[55;55Hone leaDing tabE[56;51Hfour leadinG spacesE[57;63Hconsecutive tabsE[58;55Htabs    in one lineE[59;50HE[1mE[7mtest93.in [+]                                  E[57;54HE[?12lE[?25hE[58;54HE[?25lE[mE[48;50H:v/\(^ *normal! 0\|^ *exe 'normal!\)/dE[49;50H:wE[50;50H:qa!E[51;50HENDTESTE[53;50Hstart:E[54;50Hno multibyte chAracterE[55;55H   one leaDing tabE[56;51H   four leadinG spacesE[57;50HtwoE[10C   consecutive tabsE[58;50Htwo     tabs    in one lineE[58;50HE[?12lE[?25hE[7CE[?25lE[48;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[48;85HE[KE[49;50HE[KE[50;50H!E[50;51HE[KE[51;50HTESE[51;54HE[KE[53;50Hrt:E[53;53HE[KE[54;50Hmultibyte chAracterE[54;69HE[KE[55;55Hone leaDing tabE[55;70HE[KE[56;51Hfour leadinG spacesE[56;70HE[KE[57;50H   E[10Cconsecutive tabsE[57;79HE[KE[58;50H     tabs    in one lineE[58;74HE[KE[58;54HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H\(^ *normal! 0\|^ *exe 'normal!\)/dE[3;50H!E[4;50HTESTE[6;50Hrt:E[7;50Hmultibyte chAracterE[8;55Hone leaDing tabE[9;51Hfour leadinG spacesE[10;50HE[7mtest93.in [+]                                  E[mE[12;50H!E[13;50HTESTE[15;50Hrt:E[16;50Hmultibyte chAracterE[17;55Hone leaDing tabE[18;51Hfour leadinG spacesE[19;63Hconsecutive tabsE[20;50HE[7mtest93.in [+]                                  E[mE[21;50H!E[22;50HTESTE[24;50Hrt:E[25;50Hmultibyte chAracterE[26;55Hone leaDing tabE[27;51Hfour leadinG spacesE[28;63Hconsecutive tabsE[29;55Htabs    in one lineE[30;50HE[7mtest93.in [+]                                  E[mE[31;50H!E[32;50HTESTE[34;50Hrt:E[35;50Hmultibyte chAracterE[36;55Hone leaDing tabE[37;51Hfour leadinG spacesE[38;63Hconsecutive tabsE[39;55Htabs    in one lineE[40;50HE[7mtest93.in [+]                                  E[mE[41;50HTESTE[43;50Hrt:E[44;50Hmultibyte chAracterE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;50HE[7mtest93.in [+]                                  E[mE[50;50H!E[51;50HTESTE[53;50Hrt:E[54;50Hmultibyte chAracterE[55;55Hone leaDing tabE[56;51Hfour leadinG spacesE[57;63Hconsecutive tabsE[58;55Htabs    in one lineE[59;50HE[1mE[7mtest93.in [+]                                  E[58;54HE[?12lE[?25hE[?25lE[mE[50;50HTEST                                           E[51;50H                                               E[52;50Hrt:                                            E[53;50Hmultibyte chAracter                            E[54;50H     one leaDing tab                           E[55;50H four leadinG spaces                           E[56;50H             consecutive tabs                  E[57;50H     tabs    in one line                       E[58;50H                                               E[58;51Hä multibyteCharacterE[58;54HE[?12lE[?25hE[?25lE[50;50HENDTESTE[52;50Hstart:E[53;50Hno multibyte chAracterE[54;55H   one leaDing tabE[55;51H   four leadinG spacesE[56;50HtwoE[10C   consecutive tabsE[57;50Htwo     tabs    in one lineE[58;50Hone ä multibyteCharacterE[58;50HE[?12lE[?25hE[15CE[?25lE[50;50HTESE[50;54HE[KE[52;50Hrt:E[52;53HE[KE[53;50Hmultibyte chAracterE[53;69HE[KE[54;55Hone leaDing tabE[54;70HE[KE[55;51Hfour leadinG spacesE[55;70HE[KE[56;50H   E[10Cconsecutive tabsE[56;79HE[KE[57;50H     tabs    in one lineE[57;74HE[KE[58;50H ä multibyteCharacterE[58;71HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;51Hfour leadinG spacesE[8;50HE[7mtest93.in [+]                                  E[mE[9;50HTESTE[11;50Hrt:E[12;50Hmultibyte chAracterE[13;55Hone leaDing tabE[14;51Hfour leadinG spacesE[15;63Hconsecutive tabsE[16;50HE[7mtest93.in [+]                                  E[mE[17;50H!E[18;50HTESTE[20;50Hrt:E[21;50Hmultibyte chAracterE[22;55Hone leaDing tabE[23;51Hfour leadinG spacesE[24;63Hconsecutive tabsE[25;50HE[7mtest93.in [+]                                  E[mE[27;50Hrt:E[28;50Hmultibyte chAracterE[29;55Hone leaDing tabE[30;51Hfour leadinG spacesE[31;63Hconsecutive tabsE[32;55Htabs    in one lineE[33;50HE[7mtest93.in [+]                                  E[mE[34;50HTESTE[36;50Hrt:E[37;50Hmultibyte chAracterE[38;55Hone leaDing tabE[39;51Hfour leadinG spacesE[40;63Hconsecutive tabsE[41;55Htabs    in one lineE[42;50HE[7mtest93.in [+]                                  E[mE[43;50Hrt:E[44;50Hmultibyte chAracterE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51Hä multibyteCharacterE[50;50HE[7mtest93.in [+]                                  E[mE[52;50Hrt:E[53;50Hmultibyte chAracterE[54;55Hone leaDing tabE[55;51Hfour leadinG spacesE[56;63Hconsecutive tabsE[57;55Htabs    in one lineE[58;51Hä multibyteCharacterE[59;50HE[1mE[7mtest93.in [+]                                  E[58;62HE[?12lE[?25hE[?25lE[mE[51;50Hrt:                                            E[52;50Hmultibyte chAracter                            E[53;50H     one leaDing tab                           E[54;50H four leadinG spaces                           E[55;50H             consecutive tabs                  E[56;50H     tabs    in one line                       E[57;50H ä multibyteCharacter                          E[58;50H                                               E[58;50HÄ  two multiByte charactersE[58;62HE[?12lE[?25hE[?25lE[51;50Hstart:E[52;50Hno multibyte chAracterE[53;55H   one leaDing tabE[54;51H   four leadinG spacesE[55;50HtwoE[10C   consecutive tabsE[56;50Htwo     tabs    in one lineE[57;50Hone ä multibyteCharacterE[58;50Haä Ä  two multiByte charactersE[58;50HE[?12lE[?25hE[15CE[?25lE[51;50Hrt:E[51;53HE[KE[52;50Hmultibyte chAracterE[52;69HE[KE[53;55Hone leaDing tabE[53;70HE[KE[54;51Hfour leadinG spacesE[54;70HE[KE[55;50H   E[10Cconsecutive tabsE[55;79HE[KE[56;50H     tabs    in one lineE[56;74HE[KE[57;50H ä multibyteCharacterE[57;71HE[KE[58;50HÄ  two multiByte charactersE[58;77HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;50HE[7mtest93.in [+]                                  E[mE[8;50HTESTE[10;50Hrt:E[11;50Hmultibyte chAracterE[12;55Hone leaDing tabE[13;51Hfour leadinG spacesE[14;50HE[7mtest93.in [+]                                  E[mE[16;50Hrt:E[17;50Hmultibyte chAracterE[18;55Hone leaDing tabE[19;51Hfour leadinG spacesE[20;63Hconsecutive tabsE[21;50HE[7mtest93.in [+]                                  E[mE[23;50Hrt:E[24;50Hmultibyte chAracterE[25;55Hone leaDing tabE[26;51Hfour leadinG spacesE[27;63Hconsecutive tabsE[28;55Htabs    in one lineE[29;50HE[7mtest93.in [+]                                  E[mE[30;50Hrt:E[31;50Hmultibyte chAracterE[32;55Hone leaDing tabE[33;51Hfour leadinG spacesE[34;63Hconsecutive tabsE[35;55Htabs    in one lineE[36;50HE[7mtest93.in [+]                                  E[mE[37;50Hrt:E[38;50Hmultibyte chAracterE[39;55Hone leaDing tabE[40;51Hfour leadinG spacesE[41;63Hconsecutive tabsE[42;55Htabs    in one lineE[43;51Hä multibyteCharacterE[44;50HE[7mtest93.in [+]                                  E[mE[45;55Hone leaDing tabE[46;51Hfour leadinG spacesE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51Hä multibyteCharacterE[50;50HÄ  two multiByte charactersE[51;50HE[7mtest93.in [+]                                  E[mE[52;50Hmultibyte chAracterE[53;55Hone leaDing tabE[54;51Hfour leadinG spacesE[55;63Hconsecutive tabsE[56;55Htabs    in one lineE[57;51Hä multibyteCharacterE[58;50HÄ  two multiByte charactersE[59;50HE[1mE[7mtest93.in [+]                                  E[58;62HE[?12lE[?25hE[?25lE[mE[52;50H     one leaDing tab                           E[53;50H four leadinG spaces                           E[54;50H             consecutive tabs                  E[55;50H     tabs    in one line                       E[56;50H ä multibyteCharacter                          E[57;50HÄ  two multiByte characters                    E[58;50H                                               E[58;50Hü  three mulTibyte charactersE[58;62HE[?12lE[?25hE[?25lE[52;55H   one leaDing tabE[53;51H   four leadinG spacesE[54;50HtwoE[10C   consecutive tabsE[55;50Htwo     tabs    in one lineE[56;50Hone ä multibyteCharacterE[57;50Haä Ä  two multiByte charactersE[58;50HAäöü  three mulTibyte charactersE[58;50HE[?12lE[?25hE[15CE[?25lE[52;55Hone leaDing tabE[52;70HE[KE[53;51Hfour leadinG spacesE[53;70HE[KE[54;50H   E[10Cconsecutive tabsE[54;79HE[KE[55;50H     tabs    in one lineE[55;74HE[KE[56;50H ä multibyteCharacterE[56;71HE[KE[57;50HÄ  two multiByte charactersE[57;77HE[KE[58;50Hü  three mulTibyte charactersE[58;79HE[KE[58;62HE[?12lE[?25hE[?25l

:E[?12lE[?25hsplitE[?25lE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50H!E[2;50HTESTE[4;50Hrt:E[5;50Hmultibyte chAracterE[6;55Hone leaDing tabE[7;50HE[7mtest93.in [+]                                  E[mE[9;50Hrt:E[10;50Hmultibyte chAracterE[11;55Hone leaDing tabE[12;51Hfour leadinG spacesE[13;50HE[7mtest93.in [+]                                  E[mE[15;50Hrt:E[16;50Hmultibyte chAracterE[17;55Hone leaDing tabE[18;51Hfour leadinG spacesE[19;63Hconsecutive tabsE[20;50HE[7mtest93.in [+]                                  E[mE[21;50Hrt:E[22;50Hmultibyte chAracterE[23;55Hone leaDing tabE[24;51Hfour leadinG spacesE[25;63Hconsecutive tabsE[26;50HE[7mtest93.in [+]                                  E[mE[27;50Hrt:E[28;50Hmultibyte chAracterE[29;55Hone leaDing tabE[30;51Hfour leadinG spacesE[31;63Hconsecutive tabsE[32;55Htabs    in one lineE[33;50HE[7mtest93.in [+]                                  E[mE[34;55Hone leaDing tabE[35;51Hfour leadinG spacesE[36;63Hconsecutive tabsE[37;55Htabs    in one lineE[38;51Hä multibyteCharacterE[39;50HE[7mtest93.in [+]                                  E[mE[40;55Hone leaDing tabE[41;51Hfour leadinG spacesE[42;63Hconsecutive tabsE[43;55Htabs    in one lineE[44;51Hä multibyteCharacterE[45;50HÄ  two multiByte charactersE[46;50HE[7mtest93.in [+]                                  E[mE[47;63Hconsecutive tabsE[48;55Htabs    in one lineE[49;51Hä multibyteCharacterE[50;50HÄ  two multiByte charactersE[51;50Hü  three mulTibyte charactersE[52;50HE[7mtest93.in [+]                                  E[mE[53;51Hfour leadinG spacesE[54;63Hconsecutive tabsE[55;55Htabs    in one lineE[56;51Hä multibyteCharacterE[57;50HÄ  two multiByte charactersE[58;50Hü  three mulTibyte charactersE[59;50HE[1mE[7mtest93.in [+]                                  E[58;62HE[?12lE[?25hE[?25l

E[m:E[?12lE[?25hmksession! test.outE[?25lE[58;62HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnew test.outE[?25l"test.out" E[60;12HE[KE[60;12H280 lines, 5346 charactersE[27mE[mE[HE[2JE[1;1H:qa!E[44CE[7m|E[m
ENDTESTE[41CE[7m|E[3;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[6;9Hone leaDing tabE[25CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[9;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[12;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|
test93.in [+]                                   |E[15;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[18;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
ENDTESTE[41CE[7m|E[23;49H|E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[26;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[32;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|
test93.in [+]                                   |E[m
start:E[42CE[7m|E[m
no multibyte chAracterE[26CE[7m|E[mE[39;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|
test93.in [+]                                   |E[mE[45;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|
test93.in [+]                                   |E[mE[52;9Hone leaDing tabE[25CE[7m|E[m
    four leadinG spacesE[25CE[7m|E[m
twoE[13Cconsecutive tabsE[16CE[7m|E[m
two     tabs    in one lineE[21CE[7m|E[m
one ä multibyteCharacterE[24CE[7m|E[m
aä Ä  two multiByte charactersE[18CE[7m|E[m
Aäöü  three mulTibyte charactersE[16CE[7m|
test93.in [+]                                    E[mE[1;50HTESTE[3;50Hrt:E[4;50Hmultibyte chAracterE[5;55Hone leaDing tabE[6;50HE[7mtest93.in [+]                                  E[mE[8;50Hrt:E[9;50Hmultibyte chAracterE[10;55Hone leaDing tabE[11;51Hfour leadinG spacesE[12;50HE[7mtest93.in [+]                                  E[mE[13;50Hrt:E[14;50Hmultibyte chAracterE[15;55Hone leaDing tabE[16;51Hfour leadinG spacesE[17;63Hconsecutive tabsE[18;50HE[7mtest93.in [+]                                  E[mE[19;50Hrt:E[20;50Hmultibyte chAracterE[21;55Hone leaDing tabE[22;51Hfour leadinG spacesE[23;63Hconsecutive tabsE[24;50HE[7mtest93.in [+]                                  E[mE[25;50Hmultibyte chAracterE[26;55Hone leaDing tabE[27;51Hfour leadinG spacesE[28;63Hconsecutive tabsE[29;55Htabs    in one lineE[30;50HE[7mtest93.in [+]                                  E[mE[31;55Hone leaDing tabE[32;51Hfour leadinG spacesE[33;63Hconsecutive tabsE[34;55Htabs    in one lineE[35;51Hä multibyteCharacterE[36;50HE[7mtest93.in [+]                                  E[mE[37;51Hfour leadinG spacesE[38;63Hconsecutive tabsE[39;55Htabs    in one lineE[40;51Hä multibyteCharacterE[41;50HÄ  two multiByte charactersE[42;50HE[7mtest93.in [+]                                  E[mE[43;63Hconsecutive tabsE[44;55Htabs    in one lineE[45;51Hä multibyteCharacterE[46;50HÄ  two multiByte charactersE[47;50Hü  three mulTibyte charactersE[48;50HE[7mtest93.in [+]                                  E[mE[49;55Htabs    in one lineE[50;51Hä multibyteCharacterE[51;50HÄ  two multiByte charactersE[52;50Hü  three mulTibyte charactersE[53;50HE[7mtest93.in [+]                                  E[mE[54;50Hlet SessionLoad = 1E[55;50Hif !&cp | set cp | endifE[56;50Hlet s:so_save = &so | let s:siso_save = &siso |E[57;50Hlet v:this_session=expand("<sfile>:p")E[58;50Hsilent onlyE[59;50HE[1mE[7mtest.out                                       E[54;50HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hv/\(^ *normal! 0\|^ *exe 'normal!\)/dE[?25l254 fewer linesE[60;17HE[KE[54;50H  normal! 016|E[54;64HE[KE[55;50H  exe 'normal! ' . s:c . '|zs' . 16 . '|'E[56;50H  normal! 016|E[56;64HE[KE[57;50H  exe 'normal! ' . s:c . '|zs' . 16 . '|'E[58;50H  normal! 016|E[59;59HE[1mE[7m[+]E[58;52HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 26 lines, 611 characters writtenE[59;59HE[1mE[7m    E[58;52HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test94.failed test.ok test.out X* viminfo
cp test94.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 test94.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test94.in" 95 lines, 2163 charactersE[1;1HTest for Visual mode and operators

Tests for the two kinds of operations: Those executed with Visual mode
followed by an operator and those executed via Operator-pending mode. Also
part of the test are mappings, counts, and repetition with the . command.

Test cases:
- Visual modes (v V CTRL-V) followed by an operator; count; repeating
- Visual mode maps; count; repeating
  - Simple
  - With an Ex command (custom text object)
- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending mode

STARTTEST
:so small.vim
:set nocp viminfo+=nviminfo
:
:" User functions
:function MoveToCap()
:  call search('\u', 'W')
:endfunction
:function SelectInCaps()
:  let [line1, col1] = searchpos('\u', 'bcnW')
:  let [line2, col2] = searchpos('.\u', 'nW')
:  call setpos("'<", [0, line1, col1, 0])
:  call setpos("'>", [0, line2, col2, 0])
:  normal! gv
:endfunction
:
:" Visual modes followed by operator
/^apple
lvld.l3vd.:
/^line 1
VcnewlineE[34m^[E[mj.j2Vd.:
/^xxxx
E[34m^VE[mjlc  E[34m^[E[ml.l2E[34m^VE[mc----E[34m^[E[ml.:
:
:" Visual mode maps (movement and text object)
:vnoremap W /\u/s-1<CR>
:vnoremap iW :<C-U>call SelectInCaps()<CR>
/^Kiwi
vWcNoE[34m^[E[ml.fD2vd.:
/^Jambu
llviWc-E[34m^[E[ml.l2vdl.:
:
:" Operator-pending mode maps (movement and text object)
:onoremap W /\u/<CR>
:onoremap <Leader>W :<C-U>call MoveToCap()<CR>
:onoremap iW :<C-U>call SelectInCaps()<CR>
/^Pineapple
cW-E[34m^[E[ml.l2.l.:
/^Juniper
g?\WfD.:
/^Lemon
yiWPlciWNewE[34m^[E[mfr.:E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for Visual mode and operatorsE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[18;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 50 lines, 1176 characters writtenE[19;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[19;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[10ME[1;60rE[50;1H:
:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz
dV:E[34m^ME[mdv:E[34m^ME[m:set noma | let v:errmsg = ''
d:E[34m^ME[m:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
dv:E[34m^[E[mdV:E[34m^[E[m:set noma | let v:errmsg = ''
d:E[34m^[E[m:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
:/^start:/+2,$w! test.out
:q!
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp viminfo+=nviminfoE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" User functionsE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfunction MoveToCap()E[?25l
:  E[?12lE[?25h:  call search('\u', 'W')
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[2LE[?25lE[1;1H- Operator-pending mode maps
  - SimpleE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hfunction SelectInCaps()E[?25l
:  E[?12lE[?25h:  let [line1, col1] = searchpos('\u', 'bcnW')
E[?25l:  E[?12lE[?25h:  let [line2, col2] = searchpos('.\u', 'nW')
E[?25l:  E[?12lE[?25h:  call setpos("'<", [0, line1, col1, 0])
E[?25l:  E[?12lE[?25h:  call setpos("'>", [0, line2, col2, 0])
E[?25l:  E[?12lE[?25h:  normal! gv
E[?25l:  E[?12lE[?25h:endfunctionE[1;1HE[6LE[?25lE[1;1H- Operator-pending mode maps
  - Simple
  - With Ex command moving the cursor
  - With Ex command and Visual selection (custom text object)
- Patch 7.3.879: Properly abort Ex command in Operator-pending modeE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Visual modes followed by operatorE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^appleE[?25lE[1;59rE[1;1HE[3ME[1;60rE[57;1Hstart:

apple banana cherryE[60;1HE[KE[59;1HE[?12lE[?25haE[?25l
E[1m-- VISUAL --E[59;2HE[?12lE[?25hE[?25lE[mE[7mpE[?12lE[?25hE[?25lE[mle banana cherryE[59;18HE[KE[60;1HE[KE[59;2HE[?12lE[?25hE[?25l banana cherryE[59;16HE[KE[59;2HE[?12lE[?25h E[?25lE[7mbananE[m
E[1m-- VISUAL --E[59;8HE[?12lE[?25hE[?25lE[ma  cherryE[59;10HE[KE[60;1HE[KE[59;3HE[?12lE[?25hE[?25lyE[59;4HE[KE[59;3HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;3HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^line 1E[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1Hline 1 line 1E[60;1HE[KE[59;1HE[?12lE[?25hE[?25llE[7mine 1 line 1 E[m
E[1m-- VISUAL LINE --E[59;1HE[?12lE[?25hE[?25l
-- INSERT --NE[mE[60;13HE[KE[60;1HE[KE[59;1HnewlineE[59;8HE[KE[59;7HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hline 2 line 2E[59;7HE[?12lE[?25hE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[59;1HnewlineE[59;8HE[KE[59;7HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1Hline 3 line 3E[59;7HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[58;1HE[7mline 3 line 3 
line 4E[m E[7mline 4 E[m
E[1m-- VISUAL LINE --E[59;7HE[?12lE[?25hE[?25lE[mE[58;1Hline 5 line 5E[58;14HE[KE[59;1Hline 6 line 6E[59;14HE[KE[60;1HE[KE[58;1HE[?12lE[?25hE[?25lE[58;1HE[KE[59;1HxxxxxxxxxxxxxE[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25hE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^xxxxE[?25lE[59;1HE[?12lE[?25hE[?25l
E[1m-- VISUAL BLOCK --E[59;1HE[?12lE[?25hE[?25lE[1;59rE[mE[59;1H
E[1;60rE[58;1HE[7mxE[m
xxxxxxxxxxxxxE[?12lE[?25hE[?25lE[58;2HE[7mx
xE[?12lE[?25hE[?25lE[mE[60;4HE[1mINSERT --OE[mE[60;13HE[KE[60;1HE[KE[58;1H  
  E[58;2HE[?12lE[?25h E[?25l

E[1m-- INSERT --E[mE[60;1HE[KE[58;3H  
    E[58;4HE[?12lE[?25h E[?25lE[1;59rE[1;1HE[2ME[1;60rE[56;5HE[7mxxxx
E[m    E[7mxxxxE[m
xxxxE[7mxxxxE[mxxxxx
xxxxE[7mxxxE[mxxxxxx
E[1m-- VISUAL BLOCK --E[59;8HE[?12lE[?25hE[?25l
-- INSERT --OE[mE[60;13HE[KE[60;1HE[KE[56;5H----
    ----
xxxx----
xxxx----E[56;8HE[?12lE[?25h-E[?25lE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[56;9H----E[57;9H----E[58;9H----E[59;9H----E[56;12HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hE[?25lE[56;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[56;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Visual mode maps (movement and text object)E[?25lE[56;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hvnoremap W /\u/s-1<CR>E[?25lE[56;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hvnoremap iW :<C-U>call SelectInCaps()<CR>E[?25lE[56;12HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^KiwiE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HKiwiRaspberryDateWatermelonPeachE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
E[1m-- VISUAL --E[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H/\u/s-1E[59;1HE[7mKiwE[?12lE[?25hE[?25lE[m
E[1m-- INSERT --E[mE[60;1HE[KE[59;1HNoRaspberryDateWatermelonPeachE[59;31HE[KE[59;2HE[?12lE[?25hoE[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[59;3HNoberryDateWatermelonPeachE[59;29HE[KE[59;4HE[?12lE[?25hoberryE[?25lE[7mDateWatE[m
E[1m-- VISUAL --E[59;17HE[?12lE[?25hE[?25lE[mE[59;10HrmelonPeachE[59;21HE[KE[60;1HE[KE[59;10HE[?12lE[?25hE[?25lachE[59;13HE[KE[59;10HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;10HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JambuE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HJambuRambutanBananaTangerineMangoE[60;1HE[KE[59;1HE[?12lE[?25hJaE[?25l
E[1m-- VISUAL --E[59;3HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:'<,'>E[60;2HE[KE[60;2Hcall SelectInCaps()E[59;1HE[7mJambE[?12lE[?25hE[?25lE[m
E[1m-- INSERT --E[mE[60;13HE[KE[60;1HE[KE[59;1H-RambutanBananaTangerineMangoE[59;30HE[KE[59;1HE[?12lE[?25h-E[?25l
E[1m-- INSERT --E[mE[60;1HE[KE[59;2H-tanBananaTangerineMangoE[59;26HE[KE[59;2HE[?12lE[?25h-E[?25lE[7mtanBananaE[m
E[1m-- VISUAL --E[59;12HE[?12lE[?25hE[?25lE[m--angerineMangoE[59;16HE[KE[60;1HE[KE[59;3HE[?12lE[?25haE[?25lgoE[59;6HE[KE[59;4HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Operator-pending mode maps (movement and text object)E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25honoremap W /\u/<CR>E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25honoremap <Leader>W :<C-U>call MoveToCap()<CR>E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25honoremap iW :<C-U>call SelectInCaps()<CR>E[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^PineappleE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HPineappleQuinceLoganberryOrangeGrapefruitKiwiZE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
/\u/E[60;4HE[KE[60;1HE[60;1HE[KE[59;1H-QuinceLoganberryOrangeGrapefruitKiwiZE[59;39HE[KE[59;1HE[?12lE[?25h-E[?25l
/\u/E[60;4HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[59;2H-LoganberryOrangeGrapefruitKiwiZE[59;34HE[KE[59;2HE[?12lE[?25h-E[?25l
/\u/E[60;4HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[59;3H-GrapefruitKiwiZE[59;19HE[KE[59;3HE[?12lE[?25h-E[?25l
/\u/E[60;4HE[KE[60;1HE[1m-- INSERT --E[mE[60;1HE[KE[59;4H-ZE[59;6HE[KE[59;4HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;4HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^JuniperE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HJuniperDurianZE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:call MoveToCap()E[59;1HWhavcreE[?12lE[?25hE[7CE[?25lE[60;1HE[KE[60;1H:call MoveToCap()E[59;8HQhevnaE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[59;8HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^LemonE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HLemonNectarineZE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:call SelectInCaps()E[59;1HE[?12lE[?25hE[?25lLemonLemonNectarineZLemoE[?12lE[?25hnE[?25lE[60;1HE[KE[60;1H:call SelectInCaps()E[60;1HE[KE[59;6HNewNectarineZE[59;19HE[KE[59;8HE[?12lE[?25hwNectaE[?25l
:call SelectInCaps()E[60;1HE[KE[59;11HwZE[59;13HE[KE[59;11HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[59;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.E[?25lE[59;11HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/E[?12lE[?25h^zzzzE[?25lE[1;59rE[1;1HE[2ME[1;60rE[59;1HzzzzE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[59;4HE[KE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset noma | let v:errmsg = ''E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[1mE[37mE[41mE21: Cannot make changes, 'modifiable' is offE[59;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HokE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hE[?25lE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset noma | let v:errmsg = ''E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'E[?25lE[1;59rE[59;1H
E[1;60rE[59;1HokE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/^start:/+2,$w! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New] 20L, 144C writtenE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test95.failed test.ok test.out X* viminfo
cp test95.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 test95.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test95.in" 135 lines, 5453 charactersE[1;1HTest for regexp patterns with multi-byte support, using utf-8.
See test64 for the non-multi-byte tests.

A pattern that gives the expected result produces OK, so that we know it was
actually tried.

STARTTEST
:so small.vim
:so mbyte.vim
:set nocp encoding=utf-8 viminfo+=nviminfo nomore
:" tl is a List of Lists with:
:"    2: test auto/old/new  0: test auto/old  1: test auto/new
:"    regexp pattern
:"    text to test the pattern on
:"    expected match (optional)
:"    expected submatch 1 (optional)
:"    expected submatch 2 (optional)
:"    etc.
:"  When there is no match use only the first two items.
:let tl = []

:"""" Multi-byte character tests. These will fail unless vim is compiled
:"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
:call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaÃ£Ã¢aiuvna ', 'aiaÃ£Ã¢aiuvna'])
:call add(tl, [2, '[[=a=]]\+', 'ddaÃ£Ã¢bcd', 'aÃ£Ã¢'])E[41C  E[26;1H E[15C" equivalence classes
:call add(tl, [2, '[^à¸¡ ]\+', 'à¸¡à¸¡ oijasoifjos ifjoisj f osij j à¸¡à¸¡à¸¡à¸¡à¸¡ abcd', 'oijaaE[28;1Hsoifjos'])
:call add(tl, [2, ' [^ ]\+', 'start à¸¡abcdà¸¡ ', ' à¸¡abcdà¸¡'])
:call add(tl, [2, '[à¸¡[:alpha:][=a=]]\+', '879 aiaÃ£à¸¡Ã¢à¸¡aiuvna ', 'aiaÃ£à¸¡Ã¢à¸¡aiuvna'])

:" this is not a normal "i" but 0xec
:call add(tl, [2, '\p\+', 'Ã¬a', 'Ã¬a'])
:call add(tl, [2, '\p*', 'aãE[34m~A~BE[m', 'aãE[34m~A~BE[m'])

:"""" Test recognition of some character classes
:call add(tl, [2, '\i\+', '&*Â¨xx ', 'xx'])
:call add(tl, [2, '\f\+', '&*ÂE[34m~_E[mfname ', 'fname'])

:"""" Test composing character matching
:call add(tl, [2, '.à¸¡', 'xà¸¡à¹E[34m~HE[mx yà¸¡y', 'yà¸¡'])
:call add(tl, [2, '.à¸¡à¹E[34m~HE[m', 'xà¸¡à¹E[34m~HE[mx yà¸¡y', 'xà¸¡à¹E[34m~HE[m'])
:call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
:call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
:call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
:call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])


:"""" Test \Z
:call add(tl, [2, 'Ãº\Z', 'x'])
:call add(tl, [2, '×E[34m~YE[m×E[34m~TE[m×E[34m~UE[m×E[34m~TE[m\Z', '×E[34m~YE[m×E[34m~TE[m×E[34m~UE[m×E[34m~TE[m', '×E[34m~YE[m×E[34m~TE[m×E[34m~UE[m×E[34m~TE[m'])E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for regexp patterns with multi-byte support, using utf-8.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[7;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 125 lines, 5216 characters writtenE[8;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[8;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[27mE[mE[HE[2JE[1;1H:  let text = t[2]
:  let matchidx = 3
:  for engine in [0, 1, 2]
:    if engine == 2 && re == 0 || engine == 1 && re == 1
:      continue
:    endif
:    let &regexpengine = engine
:    try
:      let l = matchlist(text, pat)
:    catch
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v::E[12;1Hexception . '\"'
:    endtry
:" check the match itself
:    if len(l) == 0 && len(t) > matchidx
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"'  E[17;1H. t[matchidx] . '\"'
:    elseif len(l) > 0 && len(t) == matchidx
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expeeE[20;1Hcted no match'
:    elseif len(t) > matchidx && l[0] != t[matchidx]
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expeeE[23;1Hcted: \"' . t[matchidx] . '\"'
:    else
:      $put ='OK ' . engine . ' - ' . pat
:    endif
:    if len(l) > 0
:"   check all the nine submatches
:      for i in range(1, 9)
:E[8Cif len(t) <= matchidx + i
:E[10Clet e = ''
:E[8Celse
:E[10Clet e = t[matchidx + i]
:E[8Cendif
:E[8Cif l[i] != e
:E[10C$put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' ..E[37;1H l[i] . '\", expected: \"' . e . '\"'
:E[8Cendif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l

:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:E[57;1HE[?12lE[?25h
E[?25l

:so! XdotestE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso mbyte.vimE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset nocp encoding=utf-8 viminfo+=nviminfo nomoreE[?25lE[27mE[mE[HE[2JE[1;1H:  let text = t[2]
:  let matchidx = 3
:  for engine in [0, 1, 2]
:    if engine == 2 && re == 0 || engine == 1 && re == 1
:      continue
:    endif
:    let &regexpengine = engine
:    try
:      let l = matchlist(text, pat)
:    catch
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v::E[12;1Hexception . '\"'
:    endtry
:" check the match itself
:    if len(l) == 0 && len(t) > matchidx
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"'  E[17;1H. t[matchidx] . '\"'
:    elseif len(l) > 0 && len(t) == matchidx
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expeeE[20;1Hcted no match'
:    elseif len(t) > matchidx && l[0] != t[matchidx]
:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expeeE[23;1Hcted: \"' . t[matchidx] . '\"'
:    else
:      $put ='OK ' . engine . ' - ' . pat
:    endif
:    if len(l) > 0
:"   check all the nine submatches
:      for i in range(1, 9)
:E[8Cif len(t) <= matchidx + i
:E[10Clet e = ''
:E[8Celse
:E[10Clet e = t[matchidx + i]
:E[8Cendif
:E[8Cif l[i] != e
:E[10C$put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' ..E[37;1H l[i] . '\", expected: \"' . e . '\"'
:E[8Cendif
:      endfor
:      unlet i
:    endif
:  endfor
:endfor
:unlet t tl e l

:" check that 'ambiwidth' does not change the meaning of \p
:set regexpengine=1 ambiwidth=single
:$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=1 ambiwidth=double
:$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=single
:$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')
:set regexpengine=2 ambiwidth=double
:$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')

:/\%#=1^Results/,$wq! test.out
ENDTEST

Results of test95:E[58;1HE[?12lE[?25hE[?25l

:E[?12lE[?25h" tl is a List of Lists with:E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    2: test auto/old/new  0: test auto/old  1: test auto/newE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    regexp patternE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    text to test the pattern onE[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected match (optional)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected submatch 1 (optional)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    expected submatch 2 (optional)E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"    etc.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"  When there is no match use only the first two items.E[?25lE[58;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet tl = []E[?25lE[58;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Multi-byte character tests. These will fail unless vim is compiledE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaÃ£Ã¢aiuvna ', 'aiaÃ£Ã¢aiuvna'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[[=a=]]\+', 'ddaÃ£Ã¢bcd', 'aÃ£Ã¢'])E[34m^I^I^I^I^I^I^I^IE[m" equivalence classesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^à¸¡ ]\+', 'à¸¡à¸¡ oijasoifjos ifjoisj f osij j à¸¡à¸¡à¸¡à¸¡à¸¡ abcd', 'oijasoifjos'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ' [^ ]\+', 'start à¸¡abcdà¸¡ ', ' à¸¡abcdà¸¡'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[à¸¡[:alpha:][=a=]]\+', '879 aiaÃ£à¸¡Ã¢à¸¡aiuvna ', 'aiaÃ£à¸¡Ã¢à¸¡aiuvna'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" this is not a normal "i" but 0xecE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\p\+', 'Ã¬a', 'Ã¬a'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\p*', 'aã‚', 'aã‚'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Test recognition of some character classesE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\i\+', '&*Â¨xx ', 'xx'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '\f\+', '&*E[34m<9f>E[mfname ', 'fname'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Test composing character matchingE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.à¸¡', 'xà¸¡à¸¡à¹ˆx yà¸¡y', 'yà¸¡'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '.à¸¡à¸¡à¹ˆ', 'xà¸¡à¸¡à¹ˆx yà¸¡y', 'xà¸¡à¸¡à¹ˆ'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Test \ZE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, 'Ãº\Z', 'x'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '×™×”×•×”\Z', '×™×”×•×”', '×™×”×•×”'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '×™×™Ö°×”×•×•Ö¸×”\Z', '×™×”×•×”', '×™×”×•×”'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '×™×”×•×”\Z', '×™×™Ö°×”×•×•Ö¸×”', '×™×™Ö°×”×•×•Ö¸×”'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '×™×™Ö°×”×•×•Ö¸×”\Z', '×™×™Ö°×”×•×•Ö¸×”', '×™×™Ö°×”×•×•Ö¸×”'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '×™×™Ö°\Z', '×•×•Ö°×™×™Ö·', '×™×™Ö·'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "×§\u200d\u05b9x\\Z", "x×§\u200d\u05b9xy", "×§\u200d\u05b9x"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "×§\u200d\u05b9x\\Z", "x×§\u200dxy", "×§\u200dx"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "×§\u200dx\\Z", "x×§\u200d\u05b9xy", "×§\u200d\u05b9x"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "×§\u200dx\\Z", "x×§\u200dxy", "×§\u200dx"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9\\Z", "xyz"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\\Z\u05b9", "xyz"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Combining different tests and featuresE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall add(tl, [2, '[^[=a=]]\+', 'ddaÃ£Ã¢bcd', 'dd'])E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"""" Run the testsE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h"E[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor t in tlE[?25l
:  E[?12lE[?25h:  let re = t[0]
E[?25l:  E[?12lE[?25h:  let pat = t[1]
E[?25l:  E[?12lE[?25h:  let text = t[2]
E[?25l:  E[?12lE[?25h:  let matchidx = 3
E[?25l:  E[?12lE[?25h:  for engine in [0, 1, 2]
E[?25l:    E[?12lE[?25h:    if engine == 2 && re == 0 || engine == 1 && re == 1
E[?25l:      E[?12lE[?25h:      continue
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    let &regexpengine = engine
E[?25l:    E[?12lE[?25h:    try
E[?25l:      E[?12lE[?25h:      let l = matchlist(text, pat)
E[?25l:      E[?12lE[?25h:    catch
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: 
E[59;96H\E[60;1H"' . v:exception . '\"'
E[?25l:      E[?12lE[?25h:    endtry
E[?25l:    E[?12lE[?25h:" check the match itself
E[?25l:    E[?12lE[?25h:    if len(l) == 0 && len(t) > matchidx
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expect
E[59;96HeE[60;1Hd: \"' . t[matchidx] . '\"'
E[?25l:      E[?12lE[?25h:    elseif len(l) > 0 && len(t) == matchidx
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '
E[59;96H\E[60;1H", expected no match'
E[?25l:      E[?12lE[?25h:    elseif len(t) > matchidx && l[0] != t[matchidx]
E[?25l:      E[?12lE[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '
E[59;96H\E[60;1H", expected: \"' . t[matchidx] . '\"'
E[?25l:      E[?12lE[?25h:    else
E[?25l:      E[?12lE[?25h:      $put ='OK ' . engine . ' - ' . pat
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:    if len(l) > 0
E[?25l:      E[?12lE[?25h:"   check all the nine submatches
E[?25l:      E[?12lE[?25h:      for i in range(1, 9)
E[?25l:E[8CE[?12lE[?25h:        if len(t) <= matchidx + i
E[?25l:E[10CE[?12lE[?25h:          let e = ''
E[?25l:E[10CE[?12lE[?25h:        else
E[?25l:E[10CE[?12lE[?25h:          let e = t[matchidx + i]
E[?25l:E[10CE[?12lE[?25h:        endif
E[?25l:E[8CE[?12lE[?25h:        if l[i] != e
E[?25l:E[10CE[?12lE[?25h:          $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . 
E[59;96HiE[60;1H . ': \"' . l[i] . '\", expected: \"' . e . '\"'
E[?25l:E[10CE[?12lE[?25h:        endif
E[?25l:E[8CE[?12lE[?25h:      endfor
E[?25l:      E[?12lE[?25h:      unlet i
E[?25l:      E[?12lE[?25h:    endif
E[?25l:    E[?12lE[?25h:  endfor
E[?25l:  E[?12lE[?25h:endforE[1;1HE[45LE[?25lE[1;1HOK 1 - Ö¹
OK 2 - Ö¹
OK 0 - .Ö¹
OK 1 - .Ö¹
OK 2 - .Ö¹
OK 0 - Ö¹Ö»
OK 2 - Ö¹Ö»
OK 0 - .Ö¹Ö»
OK 1 - .Ö¹Ö»
OK 2 - .Ö¹Ö»
OK 0 - Ãº\Z
OK 1 - Ãº\Z
OK 2 - Ãº\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™Ö°\Z
OK 1 - ×™Ö°\Z
OK 2 - ×™Ö°\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹E[46;10HE[KE[47;1HOK 0 - Ö¹\ZE[47;10HE[KE[48;1HOK 1 - Ö¹\ZE[48;10HE[KE[49;1HOK 2 - Ö¹\ZE[49;10HE[KE[50;1HOK 0 - \ZÖ¹E[50;10HE[KE[51;1HOK 1 - \ZÖ¹E[51;10HE[KE[52;1HOK 2 - \ZÖ¹E[52;10HE[KE[53;1HOK 0 - Ö¹\+\ZE[53;12HE[KE[54;1HOK 2 - Ö¹\+\ZE[54;13HE[KE[55;1HOK 0 - \ZÖ¹\+
OK 2 - \ZÖ¹\+E[56;12HE[KE[57;1HOK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+E[59;18HE[KE[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hunlet t tl e lE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" check that 'ambiwidth' does not change the meaning of \pE[?25lE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset regexpengine=1 ambiwidth=singleE[?25lE[27mE[mE[HE[2JE[1;1HOK 1 - Ö¹
OK 2 - Ö¹
OK 0 - .Ö¹
OK 1 - .Ö¹
OK 2 - .Ö¹
OK 0 - Ö¹Ö»
OK 2 - Ö¹Ö»
OK 0 - .Ö¹Ö»
OK 1 - .Ö¹Ö»
OK 2 - .Ö¹Ö»
OK 0 - Ãº\Z
OK 1 - Ãº\Z
OK 2 - Ãº\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™Ö°\Z
OK 1 - ×™Ö°\Z
OK 2 - ×™Ö°\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\+\Z
OK 2 - Ö¹\+\Z
OK 0 - \ZÖ¹\+
OK 2 - \ZÖ¹\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+E[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Heng 1 ambi single: 0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset regexpengine=1 ambiwidth=doubleE[?25lE[27mE[mE[HE[2JE[1;1HOK 2 - Ö¹
OK 0 - .Ö¹
OK 1 - .Ö¹
OK 2 - .Ö¹
OK 0 - Ö¹Ö»
OK 2 - Ö¹Ö»
OK 0 - .Ö¹Ö»
OK 1 - .Ö¹Ö»
OK 2 - .Ö¹Ö»
OK 0 - Ãº\Z
OK 1 - Ãº\Z
OK 2 - Ãº\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™Ö°\Z
OK 1 - ×™Ö°\Z
OK 2 - ×™Ö°\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\+\Z
OK 2 - Ö¹\+\Z
OK 0 - \ZÖ¹\+
OK 2 - \ZÖ¹\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0E[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Heng 1 ambi double: 0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset regexpengine=2 ambiwidth=singleE[?25lE[27mE[mE[HE[2JE[1;1HOK 0 - .Ö¹
OK 1 - .Ö¹
OK 2 - .Ö¹
OK 0 - Ö¹Ö»
OK 2 - Ö¹Ö»
OK 0 - .Ö¹Ö»
OK 1 - .Ö¹Ö»
OK 2 - .Ö¹Ö»
OK 0 - Ãº\Z
OK 1 - Ãº\Z
OK 2 - Ãº\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™Ö°\Z
OK 1 - ×™Ö°\Z
OK 2 - ×™Ö°\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\+\Z
OK 2 - Ö¹\+\Z
OK 0 - \ZÖ¹\+
OK 2 - \ZÖ¹\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0E[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Heng 2 ambi single: 0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25hset regexpengine=2 ambiwidth=doubleE[?25lE[27mE[mE[HE[2JE[1;1HOK 1 - .Ö¹
OK 2 - .Ö¹
OK 0 - Ö¹Ö»
OK 2 - Ö¹Ö»
OK 0 - .Ö¹Ö»
OK 1 - .Ö¹Ö»
OK 2 - .Ö¹Ö»
OK 0 - Ãº\Z
OK 1 - Ãº\Z
OK 2 - Ãº\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™×”×•×”\Z
OK 1 - ×™×”×•×”\Z
OK 2 - ×™×”×•×”\Z
OK 0 - ×™Ö°×”×•Ö¸×”\Z
OK 1 - ×™Ö°×”×•Ö¸×”\Z
OK 2 - ×™Ö°×”×•Ö¸×”\Z
OK 0 - ×™Ö°\Z
OK 1 - ×™Ö°\Z
OK 2 - ×™Ö°\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - ×§E[34m<200d>E[mx\Z
OK 1 - ×§E[34m<200d>E[mx\Z
OK 2 - ×§E[34m<200d>E[mx\Z
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\Z
OK 1 - Ö¹\Z
OK 2 - Ö¹\Z
OK 0 - \ZÖ¹
OK 1 - \ZÖ¹
OK 2 - \ZÖ¹
OK 0 - Ö¹\+\Z
OK 2 - Ö¹\+\Z
OK 0 - \ZÖ¹\+
OK 2 - \ZÖ¹\+
OK 0 - [^[=a=]]\+
OK 1 - [^[=a=]]\+
OK 2 - [^[=a=]]\+
eng 1 ambi single: 0
eng 1 ambi double: 0
eng 2 ambi single: 0E[?12lE[?25hE[?25l
:E[?12lE[?25h$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')E[?25lE[1;59rE[59;1H
E[1;60rE[59;1Heng 2 ambi double: 0E[60;1HE[KE[59;1HE[?12lE[?25hE[?25l
:E[?12lE[?25h/\%#=1^Results/,$wq! test.outE[?25lE[31msearch hit BOTTOM, continuing at TOPE[m"test.out" E[60;12HE[KE[60;12H[New] 122L, 1815C written
E[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test96.failed test.ok test.out X* viminfo
cp test96.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 test96.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test96.in" 142 lines, 3330 charactersE[1;1HThis will test for problems in quickfix:
A. incorrectly copying location lists which caused the location list to show a
   different name than the file that was actually being displayed.
B. not reusing the window for which the location list window is opened but
   instead creating new windows.
C. make sure that the location list window is not reused instead of the window
   it belongs to.

Note: to debug a problem comment out the last ":b 1" in a test and testing will
stop at this point.

STARTTEST
:so small.vim
: enew
: w! test.out
: b 1
: " Set up the test environment:
: function! ReadTestProtocol(name)
:   let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '')
:   let word = substitute(base, '\v(.*)\..*', '\1', '')
:
:   setl modifiable
:   setl noreadonly
:   setl noswapfile
:   setl bufhidden=delete
:   %del _
:   " For problem 2:
:   " 'buftype' has to be set to reproduce the constant opening of new windows
:   setl buftype=nofile
:
:   call setline(1, word)
:
:   setl nomodified
:   setl nomodifiable
:   setl readonly
:   exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '')
: endfunction
: augroup testgroup
:   au!
:   autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))
: augroup END
: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]
:
: let qflist = []
: for word in words
:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', })E[47;1H:   " NOTE: problem 1:
:   " intentionally not setting 'lnum' so that the quickfix entries are not
:   " valid
:   call setloclist(0, qflist, ' ')
: endfor
ENDTEST

Test A:
STARTTEST
:lrewind
:enew
:lopen
:lnextE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HThis will test for problems in quickfix:E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[12;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 39 lines, 1123 characters writtenE[13;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[13;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h enewE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h w! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 0 lines, 0 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h b 1E[?25l"test96.in" 142 lines, 3330 charactersE[1;1H:   setl noswapfile
:   setl bufhidden=deleteE[2;26HE[KE[3;1H:   %del _E[3;11HE[KE[4;1H:   " For problem 2:E[4;21HE[KE[5;1H:   " 'buftype' has to be set to reproduce the constant opening of new windowsE[5;79HE[KE[6;1H:   setl buftype=nofileE[6;24HE[KE[7;1H:E[7;2HE[KE[8;1H:   call setline(1, word)E[8;26HE[KE[9;1H:E[9;2HE[KE[10;1H:   setl nomodifiedE[10;20HE[KE[11;1H:   setl nomodifiableE[11;22HE[KE[12;1H:   setl readonlyE[12;18HE[KE[13;1H:   exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '')E[13;78HE[KE[14;1H: endfunctionE[14;14HE[KE[15;1H: augroup testgroupE[15;20HE[KE[16;1H:   au!E[16;8HE[KE[17;1H:   autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))E[17;74HE[KE[18;1H: augroup ENDE[18;14HE[KE[19;1H: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]E[19;71HE[KE[20;1H:E[20;2HE[KE[21;1H: let qflist = []E[21;18HE[KE[22;1H: for word in wordsE[22;20HE[KE[23;1H:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt', })E[24;1H:   " NOTE: problem 1:E[24;23HE[KE[25;1H:   " intentionally not setting 'lnum' so that the quickfix entries are notE[25;76HE[KE[26;1H:   " validE[26;12HE[KE[27;1H:   call setloclist(0, qflist, ' ')E[27;36HE[KE[28;1H: endforE[28;9HE[KE[29;1HENDTESTE[29;8HE[KE[30;1HE[KE[31;1HTest A:E[31;8HE[KE[32;1HSTARTTESTE[32;10HE[KE[33;1H:lrewindE[33;9HE[KE[34;1H:enewE[34;6HE[KE[35;1H:lopenE[35;7HE[KE[36;1H:lnextE[36;7HE[KE[37;1H:lnextE[37;7HE[KE[38;1H:lnextE[38;7HE[KE[39;1H:lnextE[39;7HE[KE[40;1H:vert splitE[40;12HE[KE[41;1H:wincmd LE[41;10HE[KE[42;1H:lopenE[42;7HE[KE[43;1H:wincmd pE[43;10HE[KE[44;1H:lnextE[44;7HE[KE[45;1H:"b 1E[45;6HE[KE[46;1H:let fileName = expand("%")E[46;28HE[KE[47;1H:wincmd pE[47;10HE[KE[48;1H:let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '')E[48;85HE[KE[49;1H:wincmd nE[49;10HE[KE[50;1H:wincmd KE[50;10HE[KE[51;1H:b test.outE[51;12HE[KE[52;1H:let fileName = substitute(fileName, '\\', '/', 'g')E[52;53HE[KE[53;1H:let locationListFileName = substitute(locationListFileName, '\\', '/', 'g')E[53;77HE[KE[54;1H:call append(line('$'), "Test A:")E[54;35HE[KE[55;1H:call append(line('$'), "  - file name displayed: " . fileName)E[55;64HE[KE[56;1H:call append(line('$'), "  - quickfix claims that the file name displayed is: " . locationListFiiE[57;1HleName)E[57;8HE[KE[58;1H:wE[58;3HE[KE[59;1H:wincmd oE[59;10HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h " Set up the test environment:E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h function! ReadTestProtocol(name)E[?25l
:  E[?12lE[?25h:   let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '')
E[?25l:  E[?12lE[?25h:   let word = substitute(base, '\v(.*)\..*', '\1', '')
E[?25l:  E[?12lE[?25h:
E[?25l:  E[?12lE[?25h:   setl modifiable
E[?25l:  E[?12lE[?25h:   setl noreadonly
E[?25l:  E[?12lE[?25h:   setl noswapfile
E[?25l:  E[?12lE[?25h:   setl bufhidden=delete
E[?25l:  E[?12lE[?25h:   %del _
E[?25l:  E[?12lE[?25h:   " For problem 2:
E[?25l:  E[?12lE[?25h:   " 'buftype' has to be set to reproduce the constant opening of new windows
E[?25l:  E[?12lE[?25h:   setl buftype=nofile
E[?25l:  E[?12lE[?25h:
E[?25l:  E[?12lE[?25h:   call setline(1, word)
E[?25l:  E[?12lE[?25h:
E[?25l:  E[?12lE[?25h:   setl nomodified
E[?25l:  E[?12lE[?25h:   setl nomodifiable
E[?25l:  E[?12lE[?25h:   setl readonly
E[?25l:  E[?12lE[?25h:   exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '')
E[?25l:  E[?12lE[?25h: endfunctionE[1;1HE[19LE[?25lE[1;1H:   setl noswapfile
:   setl bufhidden=delete
:   %del _
:   " For problem 2:
:   " 'buftype' has to be set to reproduce the constant opening of new windows
:   setl buftype=nofile
:
:   call setline(1, word)
:
:   setl nomodified
:   setl nomodifiable
:   setl readonly
:   exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', '')
: endfunction
: augroup testgroup
:   au!
:   autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))
: augroup END
: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]E[60;1HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h augroup testgroupE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h   au!E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h   autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h augroup ENDE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h let qflist = []E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h for word in wordsE[?25l
:  E[?12lE[?25h:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . word . '.txt'
E[59;96H,E[60;1H })
E[?25l:  E[?12lE[?25h:   " NOTE: problem 1:
E[?25l:  E[?12lE[?25h:   " intentionally not setting 'lnum' so that the quickfix entries are not
E[?25l:  E[?12lE[?25h:   " valid
E[?25l:  E[?12lE[?25h:   call setloclist(0, qflist, ' ')
E[?25l:  E[?12lE[?25h: endforE[1;1HE[7LE[?25lE[1;1H:   setl noswapfile
:   setl bufhidden=delete
:   %del _
:   " For problem 2:
:   " 'buftype' has to be set to reproduce the constant opening of new windows
:   setl buftype=nofile
:E[60;1HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H27 lines, 608 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:b 1
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlrewindE[?25lNo matching autocommands
(1 of 7): file foo.txt
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25henewE[?25lE[1;1HE[2LE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hlopenE[?25lE[48;1HE[7m[No Name]                                                                                       E[mE[49;1HE[30mE[43mtest://foo.txt|| file foo.txt                                                                   E[mE[50;1Htest://bar.txt|| file bar.txtE[50;30HE[KE[51;1Htest://baz.txt|| file baz.txtE[51;30HE[KE[52;1Htest://quux.txt|| file quux.txtE[52;32HE[KE[53;1Htest://shmoo.txt|| file shmoo.txtE[53;34HE[KE[54;1Htest://spam.txt|| file spam.txtE[54;32HE[KE[55;1Htest://eggs.txt|| file eggs.txtE[55;32HE[KE[59;1HE[1mE[7m[Location List]                                                                                 E[49;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlnextE[?25lNo matching autocommandsE[1;1HbarE[48;1HE[1mE[7mtest://bar.txt [RO]                                                                             E[mE[49;1Htest://foo.txt|| file foo.txtE[49;30HE[KE[50;1HE[30mE[43mtest://bar.txt|| file bar.txt                                                                   E[mE[59;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlnextE[?25lNo matching autocommandsE[1;3HzE[48;10HE[1mE[7mz.E[m

test://bar.txt|| file bar.txtE[50;30HE[KE[51;1HE[30mE[43mtest://baz.txt|| file baz.txt                                                                   E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlnextE[?25lNo matching autocommandsE[1;1HquuxE[48;8HE[1mE[7mquux.txt [RO]E[m


test://baz.txt|| file baz.txtE[51;30HE[KE[52;1HE[30mE[43mtest://quux.txt|| file quux.txt                                                                 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlnextE[?25lNo matching autocommandsE[1;1HshmooE[48;8HE[1mE[7mshmoo.txt [RO]E[mE[52;1Htest://quux.txt|| file quux.txtE[52;32HE[KE[53;1HE[30mE[43mtest://shmoo.txt|| file shmoo.txt                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hvert splitE[?25lE[1;49HE[7m|E[2;49H|E[3;49H|E[4;49H|E[5;49H|E[6;49H|E[7;49H|E[8;49H|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[13;49H|E[14;49H|E[15;49H|E[16;49H|E[17;49H|E[18;49H|E[19;49H|E[20;49H|E[21;49H|E[22;49H|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[30;49H|E[31;49H|E[32;49H|E[33;49H|E[34;49H|E[35;49H|E[36;49H|E[37;49H|E[38;49H|E[39;49H|E[40;49H|E[41;49H|E[42;49H|E[43;49H|E[44;49H|E[45;49H|E[46;49H|E[47;49H|E[mE[1;50HshmooE[2;50HE[1mE[34m~E[3;50H~E[4;50H~E[5;50H~E[6;50H~E[7;50H~E[8;50H~E[9;50H~E[10;50H~E[11;50H~E[12;50H~E[13;50H~E[14;50H~E[15;50H~E[16;50H~E[17;50H~E[18;50H~E[19;50H~E[20;50H~E[21;50H~E[22;50H~E[23;50H~E[24;50H~E[25;50H~E[26;50H~E[27;50H~E[28;50H~E[29;50H~E[30;50H~E[31;50H~E[32;50H~E[33;50H~E[34;50H~E[35;50H~E[36;50H~E[37;50H~E[38;50H~E[39;50H~E[40;50H~E[41;50H~E[42;50H~E[43;50H~E[44;50H~E[45;50H~E[46;50H~E[47;50H~E[mE[48;50HE[7mtest://shmoo.txt [RO]                          E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd LE[?25lE[1;48HE[7m|E[2;48H|E[3;48H|E[4;48H|E[5;48H|E[6;48H|E[7;48H|E[8;48H|E[9;48H|E[10;48H|E[11;48H|E[12;48H|E[13;48H|E[14;48H|E[15;48H|E[16;48H|E[17;48H|E[18;48H|E[19;48H|E[20;48H|E[21;48H|E[22;48H|E[23;48H|E[24;48H|E[25;48H|E[26;48H|E[27;48H|E[28;48H|E[29;48H|E[30;48H|E[31;48H|E[32;48H|E[33;48H|E[34;48H|E[35;48H|E[36;48H|E[37;48H|E[38;48H|E[39;48H|E[40;48H|E[41;48H|E[42;48H|E[43;48H|E[44;48H|E[45;48H|E[46;48H|E[47;48H|
test://shmoo.txt [RO]E[mE[1mE[7m E[mE[7m                          |E[49;48H|E[50;48H|E[51;48H|E[52;48H|E[53;48H|E[54;48H|E[55;48H|E[56;48H|E[57;48H|E[58;48H|E[mE[1;49HshmoE[1;54HE[KE[2;49HE[1mE[34m~  E[3;49H~  E[4;49H~  E[5;49H~  E[6;49H~  E[7;49H~  E[8;49H~  E[9;49H~  E[10;49H~  E[11;49H~  E[12;49H~  E[13;49H~  E[14;49H~  E[15;49H~  E[16;49H~  E[17;49H~  E[18;49H~  E[19;49H~  E[20;49H~  E[21;49H~  E[22;49H~  E[23;49H~  E[24;49H~  E[25;49H~  E[26;49H~  E[27;49H~  E[28;49H~  E[29;49H~  E[30;49H~  E[31;49H~  E[32;49H~  E[33;49H~  E[34;49H~  E[35;49H~  E[36;49H~  E[37;49H~  E[38;49H~  E[39;49H~  E[40;49H~  E[41;49H~  E[42;49H~  E[43;49H~  E[44;49H~  E[45;49H~  E[46;49H~  E[47;49H~  E[48;49H~                                               E[49;49H~                                               E[50;49H~                                               E[51;49H~                                               E[52;49H~                                               E[53;49H~                                               E[54;49H~                                               E[55;49H~                                               E[56;49H~E[57;49H~E[58;49H~E[mE[59;49HE[1mE[7mtest://shmoo.txt [RO]                           E[1;49HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlopenE[?25lE[48;49HE[7mtest://shmoo.txt [RO]                           E[mE[49;49HE[30mE[43mtest://foo.txt|| file foo.txt                   E[mE[50;49Htest://bar.txt|| file bar.txtE[50;78HE[KE[51;49Htest://baz.txt|| file baz.txtE[51;78HE[KE[52;49Htest://quux.txt|| file quux.txtE[52;80HE[KE[53;49Htest://shmoo.txt|| file shmoo.txtE[53;82HE[KE[54;49Htest://spam.txt|| file spam.txtE[54;80HE[KE[55;49Htest://eggs.txt|| file eggs.txtE[55;80HE[KE[59;49HE[1mE[7m[Location List]t       E[49;49HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;49HE[1mE[7mtest://shmoo.txt [RO]                           E[mE[59;49HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                 E[1;49HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlnextE[?25lNo matching autocommandsE[1;49HbarE[1;52HE[KE[48;56HE[1mE[7mbar.txt [RO]O   E[mE[49;49Htest://foo.txt|| file foo.txtE[49;78HE[KE[50;49HE[30mE[43mtest://bar.txt|| file bar.txt                   E[1;49HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h"b 1E[?25lE[1;49HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet fileName = expand("%")E[?25lE[1;49HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;49HE[7mtest://bar.txt [RO]E[mE[1mE[7m E[mE[7m                             E[mE[59;49HE[1mE[7m[Location List]                                 E[50;49HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '')E[?25lE[50;49HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd nE[?25lE[27mE[mE[HE[2JE[1;1HshmooE[42CE[7m|E[2;48H|E[3;48H|E[4;48H|E[5;48H|E[6;48H|E[7;48H|E[8;48H|E[9;48H|E[10;48H|E[11;48H|E[12;48H|E[13;48H|E[14;48H|E[15;48H|E[16;48H|E[17;48H|E[18;48H|E[19;48H|E[20;48H|E[21;48H|E[22;48H|E[23;48H|E[24;48H|E[25;48H|E[26;48H|E[27;48H|E[28;48H|E[29;48H|E[30;48H|E[31;48H|E[32;48H|E[33;48H|E[34;48H|E[35;48H|E[36;48H|E[37;48H|E[38;48H|E[39;48H|E[40;48H|E[41;48H|E[42;48H|E[43;48H|E[44;48H|E[45;48H|E[46;48H|E[47;48H|E[mE[2;1HE[1mE[34m~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              E[m
E[7mtest://shmoo.txt [RO]                          |E[m
test://foo.txt|| file foo.txtE[18CE[7m|E[m
test://bar.txt|| file bar.txtE[18CE[7m|E[m
test://baz.txt|| file baz.txtE[18CE[7m|E[m
test://quux.txt|| file quux.txtE[16CE[7m|E[m
E[30mE[43mtest://shmoo.txt|| file shmoo.txt              E[mE[7m|E[m
test://spam.txt|| file spam.txtE[16CE[7m|E[m
test://eggs.txt|| file eggs.txtE[16CE[7m|E[56;48H|E[57;48H|E[58;48H|E[mE[56;1HE[1mE[34m~                                              
~                                              
~                                              E[m
E[7m[Location List]                                 E[mE[1;49HbarE[2;49HE[1mE[34m~                                               E[3;49H~                                               E[4;49H~                                               E[5;49H~                                               E[6;49H~                                               E[7;49H~                                               E[8;49H~                                               E[9;49H~                                               E[10;49H~                                               E[11;49H~                                               E[12;49H~                                               E[13;49H~                                               E[14;49H~                                               E[15;49H~                                               E[16;49H~                                               E[17;49H~                                               E[18;49H~                                               E[19;49H~                                               E[20;49H~                                               E[21;49H~                                               E[22;49H~                                               E[23;49H~                                               E[mE[24;49HE[7mtest://bar.txt [RO]                             E[mE[26;49HE[1mE[34m~                                               E[27;49H~                                               E[28;49H~                                               E[29;49H~                                               E[30;49H~                                               E[31;49H~                                               E[32;49H~                                               E[33;49H~                                               E[34;49H~                                               E[35;49H~                                               E[36;49H~                                               E[37;49H~                                               E[38;49H~                                               E[39;49H~                                               E[40;49H~                                               E[41;49H~                                               E[42;49H~                                               E[43;49H~                                               E[44;49H~                                               E[45;49H~                                               E[46;49H~                                               E[47;49H~                                               E[mE[48;49HE[1mE[7m[No Name]                                       E[mE[49;49HE[30mE[43mtest://bar.txt|| file bar.txt                   E[mE[50;49Htest://baz.txt|| file baz.txtE[51;49Htest://quux.txt|| file quux.txtE[52;49Htest://shmoo.txt|| file shmoo.txtE[53;49Htest://spam.txt|| file spam.txtE[54;49Htest://eggs.txt|| file eggs.txtE[55;49HE[1mE[34m~                                               E[56;49H~                                               E[57;49H~                                               E[58;49H~                                               E[mE[59;49HE[7m[Location List]                                 E[25;49HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hwincmd KE[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[mE[20;1HE[1mE[7m[No Name]                                                                                       E[mE[21;1HshmooE[42CE[7m|E[22;48H|E[23;48H|E[24;48H|E[25;48H|E[26;48H|E[27;48H|E[28;48H|E[29;48H|E[30;48H|E[31;48H|E[32;48H|E[33;48H|E[34;48H|E[35;48H|E[36;48H|E[37;48H|E[38;48H|E[39;48H|E[40;48H|E[41;48H|E[42;48H|E[43;48H|E[44;48H|E[45;48H|E[46;48H|E[47;48H|E[48;48H|E[49;48H|E[50;48H|E[51;48H|E[mE[22;1HE[1mE[34m~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              
~                                              E[m
E[7mtest://shmoo.txt [RO]                          |E[m
E[30mE[43mtest://shmoo.txt|| file shmoo.txt              E[mE[7m|E[m
test://spam.txt|| file spam.txtE[16CE[7m|E[m
test://eggs.txt|| file eggs.txtE[16CE[7m|E[56;48H|E[57;48H|E[58;48H|E[mE[56;1HE[1mE[34m~                                              
~                                              
~                                              E[m
E[7m[Location List]                                 E[mE[21;49HbarE[22;49HE[1mE[34m~                                               E[23;49H~                                               E[24;49H~                                               E[25;49H~                                               E[26;49H~                                               E[27;49H~                                               E[28;49H~                                               E[29;49H~                                               E[30;49H~                                               E[31;49H~                                               E[32;49H~                                               E[33;49H~                                               E[34;49H~                                               E[35;49H~                                               E[36;49H~                                               E[37;49H~                                               E[38;49H~                                               E[39;49H~                                               E[40;49H~                                               E[41;49H~                                               E[42;49H~                                               E[43;49H~                                               E[44;49H~                                               E[45;49H~                                               E[46;49H~                                               E[47;49H~                                               E[48;49H~                                               E[49;49H~                                               E[50;49H~                                               E[51;49H~                                               E[mE[52;49HE[7mtest://bar.txt [RO]                             E[mE[53;49HE[30mE[43mtest://bar.txt|| file bar.txt                   E[mE[54;49Htest://baz.txt|| file baz.txtE[55;49Htest://quux.txt|| file quux.txtE[56;49Htest://shmoo.txt|| file shmoo.txtE[57;49Htest://spam.txt|| file spam.txtE[58;49Htest://eggs.txt|| file eggs.txtE[59;49HE[7m[Location List]                                 E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hb test.outE[?25l"test.out" 0 lines, 0 charactersE[20;1HE[1mE[7mtest.out]  E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet fileName = substitute(fileName, '\\', '/', 'g')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet locationListFileName = substitute(locationListFileName, '\\', '/', 'g')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "Test A:")E[?25lE[2;1HTest A:E[2;8HE[KE[20;10HE[1mE[7m[+]E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "  - file name displayed: " . fileName)E[?25lE[3;1H  - file name displayed: test://bar.txtE[3;40HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "  - quickfix claims that the file name displayed is: " . locationListF
E[59;96HiE[60;1HleName)E[?25lE[1;1HE[LE[4;1H  - quickfix claims that the file name displayed is: test://bar.txtE[4;68HE[KE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hwE[?25l"test.out" 4 lines, 117 characters writtenE[20;10HE[1mE[7m    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd oE[?25lE[20;1HE[1mE[34m~                                                                                               E[21;1H~                                                                                               E[22;48H   E[23;48H   E[24;48H   E[25;48H   E[26;48H   E[27;48H   E[28;48H   E[29;48H   E[30;48H   E[31;48H   E[32;48H   E[33;48H   E[34;48H   E[35;48H   E[36;48H   E[37;48H   E[38;48H   E[39;48H   E[40;48H   E[41;48H   E[42;48H   E[43;48H   E[44;48H   E[45;48H   E[46;48H   E[47;48H   E[48;48H   E[49;48H   E[50;48H   E[51;48H   
~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;48H                                                 E[57;48H                                                 E[58;48H                                                 E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hb 1E[?25l"test96.in" 142 lines, 3330 charactersE[1;1H:lrewind
:enewE[2;6HE[KE[3;1H:lopenE[3;7HE[KE[4;1H:lnextE[4;7HE[KE[5;1H:lnextE[5;7HE[KE[6;1H:lnextE[6;7HE[KE[7;1H:lnextE[7;7HE[KE[8;1H:vert splitE[8;12HE[KE[9;1H:wincmd LE[9;10HE[KE[10;1H:lopenE[10;7HE[KE[11;1H:wincmd pE[11;10HE[KE[12;1H:lnextE[12;7HE[KE[13;1H:"b 1E[13;6HE[KE[14;1H:let fileName = expand("%")E[14;28HE[KE[15;1H:wincmd pE[15;10HE[KE[16;1H:let locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1', '')E[16;85HE[KE[17;1H:wincmd nE[17;10HE[KE[18;1H:wincmd KE[18;10HE[KE[19;1H:b test.outE[19;12HE[KE[20;1H:let fileName = substitute(fileName, '\\', '/', 'g')E[20;53HE[KE[21;1H:let locationListFileName = substitute(locationListFileName, '\\', '/', 'g')E[21;77HE[KE[22;1H:call append(line('$'), "Test A:")E[22;35HE[KE[23;1H:call append(line('$'), "  - file name displayed: " . fileName)E[23;64HE[KE[24;1H:call append(line('$'), "  - quickfix claims that the file name displayed is: " . locationListFiiE[25;1HleName)E[25;8HE[KE[26;1H:wE[26;3HE[KE[27;1H:wincmd oE[27;10HE[KE[28;1H:b 1E[28;5HE[KE[29;1HENDTESTE[29;8HE[KE[30;1HE[KE[31;1HTest B:E[31;8HE[KE[32;1HSTARTTESTE[32;10HE[KE[33;1H:lrewindE[33;9HE[KE[34;1H:lopenE[34;7HE[KE[35;1H:2E[35;3HE[KE[36;1H:exe "normal \<CR>"E[36;20HE[KE[37;1H:wincmd pE[37;10HE[KE[38;1H:3E[38;3HE[KE[39;1H:exe "normal \<CR>"E[39;20HE[KE[40;1H:wincmd pE[40;10HE[KE[41;1H:4E[41;3HE[KE[42;1H:exe "normal \<CR>"E[42;20HE[KE[43;1H:let numberOfWindowsOpen = winnr('$')E[43;38HE[KE[44;1H:wincmd nE[44;10HE[KE[45;1H:wincmd KE[45;10HE[KE[46;1H:b test.outE[46;12HE[KE[47;1H:call append(line('$'), "Test B:")E[47;35HE[KE[48;1H:call append(line('$'), "  - number of window open: " . numberOfWindowsOpen)E[48;77HE[KE[49;1H:wE[49;3HE[KE[50;1H:wincmd oE[50;10HE[KE[51;1H:b 1E[51;5HE[KE[52;1HENDTESTE[52;8HE[KE[53;1HE[KE[54;1HTest C:E[54;8HE[KE[55;1HSTARTTESTE[55;10HE[KE[56;1H:lrewindE[56;9HE[KE[57;1H:lopenE[57;7HE[KE[58;1H:" Let's move the location list window to the top to check whether it (the firstE[58;81HE[KE[59;1H:" window found) will be reused when we try to open new windows:E[59;65HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H19 lines, 305 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[52;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[53;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlrewindE[?25lNo matching autocommands
(1 of 7): file foo.txt
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlopenE[?25lE[1;1HE[2LE[1;1Hfoo
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[mE[48;1HE[7mtest://foo.txt [RO]                                                                             E[mE[49;1HE[30mE[43mtest://foo.txt|| file foo.txt                                                                   E[mE[50;1Htest://bar.txt|| file bar.txt
test://baz.txt|| file baz.txt
test://quux.txt|| file quux.txt
test://shmoo.txt|| file shmoo.txt
test://spam.txt|| file spam.txt
test://eggs.txt|| file eggs.txt
E[1mE[34m~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[1mE[7m[Location List]                                                                                 E[mE[60;1HE[KE[49;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h2E[?25lE[50;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[1;1HbarE[48;1HE[1mE[7mtest://bar.txt [RO]                                                                             E[mE[49;1Htest://foo.txt|| file foo.txtE[49;30HE[KE[50;1HE[30mE[43mtest://bar.txt|| file bar.txt                                                                   E[mE[59;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;1HE[7mtest://bar.txt [RO]E[mE[1mE[7m E[mE[7m                                                                             E[mE[59;1HE[1mE[7m[Location List]                                                                                 E[50;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h3E[?25lE[51;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[1;3HzE[48;1HE[1mE[7mtest://baz.txt [RO]                                                                             E[mE[50;1Htest://bar.txt|| file bar.txtE[50;30HE[KE[51;1HE[30mE[43mtest://baz.txt|| file baz.txt                                                                   E[mE[59;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[48;1HE[7mtest://baz.txt [RO]E[mE[1mE[7m E[mE[7m                                                                             E[mE[59;1HE[1mE[7m[Location List]                                                                                 E[51;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h4E[?25lE[52;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[1;1HquuxE[48;1HE[1mE[7mtest://quux.txt [RO]                                                                            E[mE[51;1Htest://baz.txt|| file baz.txtE[51;30HE[KE[52;1HE[30mE[43mtest://quux.txt|| file quux.txt                                                                 E[mE[59;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet numberOfWindowsOpen = winnr('$')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd nE[?25lE[1;1HE[KE[24;1HE[1mE[7m[No Name]                                                                                       E[mE[25;1HquuxE[25;5HE[KE[48;1HE[7mtest://quux.txt [RO]E[mE[1mE[7m E[mE[7m                                                                            E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd KE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hb test.outE[?25l"test.out" 4 lines, 117 charactersE[2;1HTest A:E[2;8HE[KE[3;1H  - file name displayed: test://bar.txtE[3;40HE[KE[4;1H  - quickfix claims that the file name displayed is: test://bar.txtE[4;68HE[KE[24;1HE[1mE[7mtest.out]  E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "Test B:")E[?25lE[5;1HTest B:E[5;8HE[KE[24;10HE[1mE[7m[+]E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "  - number of window open: " . numberOfWindowsOpen)E[?25lE[6;1H  - number of window open: 2E[6;29HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 6 lines, 154 characters writtenE[24;10HE[1mE[7m    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd oE[?25lE[24;1HE[1mE[34m~                                                                                               E[25;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hb 1E[?25l"test96.in" 142 lines, 3330 charactersE[1;1H:call append(line('$'), "  - quickfix claims that the file name displayed is: " . locationListFiiE[2;1HleName)
:wE[3;3HE[KE[4;1H:wincmd oE[4;10HE[KE[5;1H:b 1E[5;6HE[KE[6;1HENDTESTE[6;8HE[KE[7;1HE[KE[8;1HTest B:E[8;8HE[KE[9;1HSTARTTESTE[9;10HE[KE[10;1H:lrewindE[10;9HE[KE[11;1H:lopenE[11;7HE[KE[12;1H:2E[12;3HE[KE[13;1H:exe "normal \<CR>"E[13;20HE[KE[14;1H:wincmd pE[14;10HE[KE[15;1H:3E[15;3HE[KE[16;1H:exe "normal \<CR>"E[16;20HE[KE[17;1H:wincmd pE[17;10HE[KE[18;1H:4E[18;3HE[KE[19;1H:exe "normal \<CR>"E[19;20HE[KE[20;1H:let numberOfWindowsOpen = winnr('$')E[20;38HE[KE[21;1H:wincmd nE[21;10HE[KE[22;1H:wincmd KE[22;10HE[KE[23;1H:b test.outE[23;12HE[KE[24;1H:call append(line('$'), "Test B:")E[24;35HE[KE[25;1H:call append(line('$'), "  - number of window open: " . numberOfWindowsOpen)E[25;77HE[KE[26;1H:wE[26;3HE[KE[27;1H:wincmd oE[27;10HE[KE[28;1H:b 1E[28;5HE[KE[29;1HENDTESTE[29;8HE[KE[30;1HE[KE[31;1HTest C:E[31;8HE[KE[32;1HSTARTTESTE[32;10HE[KE[33;1H:lrewindE[33;9HE[KE[34;1H:lopenE[34;7HE[KE[35;1H:" Let's move the location list window to the top to check whether it (the firstE[35;81HE[KE[36;1H:" window found) will be reused when we try to open new windows:E[36;65HE[KE[37;1H:wincmd KE[37;10HE[KE[38;1H:2E[38;3HE[KE[39;1H:exe "normal \<CR>"E[39;20HE[KE[40;1H:wincmd pE[40;10HE[KE[41;1H:3E[41;3HE[KE[42;1H:exe "normal \<CR>"E[42;20HE[KE[43;1H:wincmd pE[43;10HE[KE[44;1H:4E[44;3HE[KE[45;1H:exe "normal \<CR>"E[45;20HE[KE[46;1H:1wincmd wE[46;11HE[KE[47;1H:let locationListWindowBufType = &buftypeE[47;42HE[KE[48;1H:2wincmd wE[48;11HE[KE[49;1H:let bufferName = expand("%")E[49;30HE[KE[50;1H:wincmd nE[50;10HE[KE[51;1H:wincmd KE[51;10HE[KE[52;1H:b test.outE[52;12HE[KE[53;1H:let bufferName = substitute(bufferName, '\\', '/', 'g')E[53;57HE[KE[54;1H:call append(line('$'), "Test C:")E[54;35HE[KE[55;1H:call append(line('$'), "  - 'buftype' of the location list window: " . locationListWindowBufTyppE[56;1He)E[56;3HE[KE[57;1H:call append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName)E[57;81HE[KE[58;1H:wE[58;3HE[KE[59;1H:wincmd oE[59;10HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[32;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H27 lines, 677 characters writtenE[33;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[33;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[1;59rE[1;1HE[2ME[1;60rE[58;1H:b 1
ENDTESTE[60;1HE[KE[59;1HE[?12lE[?25hE[?25lE[1;59rE[59;1H
E[1;60rE[59;1HE[?12lE[?25hE[?25l
:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlrewindE[?25lNo matching autocommands
(1 of 7): file foo.txt
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlopenE[?25lE[1;1HE[2LE[1;1Hfoo
E[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[mE[48;1HE[7mtest://foo.txt [RO]                                                                             E[mE[49;1HE[30mE[43mtest://foo.txt|| file foo.txt                                                                   E[mE[50;1Htest://bar.txt|| file bar.txtE[50;30HE[KE[51;1Htest://baz.txt|| file baz.txE[51;31HE[KE[52;1Htest://quux.txt|| file quux.txtE[52;32HE[KE[53;1Htest://shmoo.txt|| file shmoo.txt
test://spam.txt|| file spam.txtE[54;32HE[KE[55;1Htest://eggs.txt|| file eggs.txt
E[1mE[34m~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[1mE[7m[Location List]                                                                                 E[mE[60;1HE[KE[49;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25h" Let's move the location list window to the top to check whether it (the firstE[?25lE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" window found) will be reused when we try to open new windows:E[?25lE[49;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd KE[?25lE[1;1HE[30mE[43mtest://foo.txt|| file foo.txt                                                                   E[mE[2;1Htest://bar.txt|| file bar.txtE[2;30HE[KE[3;1Htest://baz.txt|| file baz.txtE[3;30HE[KE[4;1Htest://quux.txt|| file quux.txtE[4;32HE[KE[5;1Htest://shmoo.txt|| file shmoo.txtE[5;34HE[KE[6;1Htest://spam.txt|| file spam.txtE[6;32HE[KE[7;1Htest://eggs.txt|| file eggs.txtE[7;32HE[KE[11;1HE[1mE[7m[Location List]                                                                                 E[mE[12;1HfooE[12;4HE[KE[48;1HE[1mE[34m~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[mE[59;1HE[7mtest://foo.txt [RO]                                                                             E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h2E[?25lE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[1;1Htest://foo.txt|| file foo.txtE[1;30HE[KE[2;1HE[30mE[43mtest://bar.txt|| file bar.txt                                                                   E[mE[11;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[mE[12;1HbarE[59;1HE[1mE[7mtest://bar.txt [RO]                                                                             E[12;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[11;1HE[1mE[7m[Location List]                                                                                 E[mE[59;1HE[7mtest://bar.txt [RO]E[mE[1mE[7m E[mE[7m                                                                             E[2;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h3E[?25lE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[2;1Htest://bar.txt|| file bar.txtE[2;30HE[KE[3;1HE[30mE[43mtest://baz.txt|| file baz.txt                                                                   E[mE[11;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[mE[12;3HzE[59;1HE[1mE[7mtest://baz.txt [RO]                                                                             E[12;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[11;1HE[1mE[7m[Location List]                                                                                 E[mE[59;1HE[7mtest://baz.txt [RO]E[mE[1mE[7m E[mE[7m                                                                             E[3;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h4E[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hexe "normal \<CR>"E[?25lNo matching autocommandsE[3;1Htest://baz.txt|| file baz.txtE[3;30HE[KE[4;1HE[30mE[43mtest://quux.txt|| file quux.txt                                                                 E[mE[11;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[mE[12;1HquuxE[59;1HE[1mE[7mtest://quux.txt [RO]                                                                            E[12;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25h1wincmd wE[?25lE[11;1HE[1mE[7m[Location List]                                                                                 E[mE[59;1HE[7mtest://quux.txt [RO]E[mE[1mE[7m E[mE[7m                                                                            E[4;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet locationListWindowBufType = &buftypeE[?25lE[4;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h2wincmd wE[?25lE[11;1HE[7m[Location List]E[mE[1mE[7m E[mE[7m                                                                                 E[mE[59;1HE[1mE[7mtest://quux.txt [RO]                                                                            E[12;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet bufferName = expand("%")E[?25lE[12;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd nE[?25lE[12;1HE[KE[35;1HE[1mE[7m[No Name]                                                                                       E[mE[36;1HquuxE[36;5HE[KE[59;1HE[7mtest://quux.txt [RO]E[mE[1mE[7m E[mE[7m                                                                            E[12;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd KE[?25lE[27mE[mE[HE[2JE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[mE[24;1HE[1mE[7m[No Name]                                                                                       E[mE[25;1Htest://bar.txt|| file bar.txt
test://baz.txt|| file baz.txt
E[30mE[43mtest://quux.txt|| file quux.txt                                                                 E[mE[28;1Htest://shmoo.txt|| file shmoo.txt
test://spam.txt|| file spam.txt
test://eggs.txt|| file eggs.txt
E[1mE[34m~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[mE[35;1HE[7m[Location List]                                                                                 E[mE[36;1Hquux
E[1mE[34m~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[mE[59;1HE[7mtest://quux.txt [RO]                                                                            E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hb test.outE[?25l"test.out" 6 lines, 154 charactersE[2;1HTest A:E[2;8HE[KE[3;1H  - file name displayed: test://bar.txtE[3;40HE[KE[4;1H  - quickfix claims that the file name displayed is: test://bar.txtE[4;68HE[KE[5;1HTest B:E[5;8HE[KE[6;1H  - number of window open: 2E[6;29HE[KE[24;1HE[1mE[7mtest.out]  E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hlet bufferName = substitute(bufferName, '\\', '/', 'g')E[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "Test C:")E[?25lE[7;1HTest C:E[7;8HE[KE[24;10HE[1mE[7m[+]E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hcall append(line('$'), "  - 'buftype' of the location list window: " . locationListWindowBufTy
E[59;96HpE[60;1He)E[?25lE[1;1HE[LE[8;1H  - 'buftype' of the location list window: quickfixE[8;52HE[KE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hcall append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName)E[?25lE[9;1H  - buffer displayed in the 2nd window: test://quux.txtE[9;56HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" 9 lines, 270 characters writtenE[24;10HE[1mE[7m    E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd oE[?25lE[27mE[mE[HE[2JE[2;1HTest A:
  - file name displayed: test://bar.txt
  - quickfix claims that the file name displayed is: test://bar.txt
Test B:
  - number of window open: 2
Test C:
  - 'buftype' of the location list window: quickfix
  - buffer displayed in the 2nd window: test://quux.txt
E[1mE[34m~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hb 1E[?25l"test96.in" 142 lines, 3330 charactersE[1;1HTest B:
STARTTEST
:lrewindE[3;10HE[KE[4;1H:lopenE[4;7HE[KE[5;1H:2E[5;3HE[KE[6;1H:exe "normal \<CR>"E[6;20HE[KE[7;1H:wincmd p
:3E[8;3HE[KE[9;1H:exe "normal \<CR>"E[9;20HE[KE[10;1H:wincmd pE[10;10HE[KE[11;1H:4E[11;3HE[KE[12;1H:exe "normal \<CR>"E[12;20HE[KE[13;1H:let numberOfWindowsOpen = winnr('$')E[13;38HE[KE[14;1H:wincmd nE[14;10HE[KE[15;1H:wincmd KE[15;10HE[KE[16;1H:b test.outE[16;12HE[KE[17;1H:call append(line('$'), "Test B:")E[17;35HE[KE[18;1H:call append(line('$'), "  - number of window open: " . numberOfWindowsOpen)E[18;77HE[KE[19;1H:wE[19;3HE[KE[20;1H:wincmd oE[20;10HE[KE[21;1H:b 1E[21;5HE[KE[22;1HENDTESTE[22;8HE[KE[23;1HE[KE[24;1HTest C:E[24;8HE[KE[25;1HSTARTTESTE[25;10HE[KE[26;1H:lrewindE[26;9HE[KE[27;1H:lopenE[27;7HE[KE[28;1H:" Let's move the location list window to the top to check whether it (the firstE[28;81HE[KE[29;1H:" window found) will be reused when we try to open new windows:E[29;65HE[KE[30;1H:wincmd KE[30;10HE[KE[31;1H:2E[31;3HE[KE[32;1H:exe "normal \<CR>"E[32;20HE[KE[33;1H:wincmd pE[33;10HE[KE[34;1H:3E[34;3HE[KE[35;1H:exe "normal \<CR>"E[35;20HE[KE[36;1H:wincmd pE[36;10HE[KE[37;1H:4E[37;3HE[KE[38;1H:exe "normal \<CR>"E[38;20HE[KE[39;1H:1wincmd wE[39;11HE[KE[40;1H:let locationListWindowBufType = &buftypeE[40;42HE[KE[41;1H:2wincmd wE[41;11HE[KE[42;1H:let bufferName = expand("%")E[42;30HE[KE[43;1H:wincmd nE[43;10HE[KE[44;1H:wincmd KE[44;10HE[KE[45;1H:b test.outE[45;12HE[KE[46;1H:let bufferName = substitute(bufferName, '\\', '/', 'g')E[46;57HE[KE[47;1H:call append(line('$'), "Test C:")E[47;35HE[KE[48;1H:call append(line('$'), "  - 'buftype' of the location list window: " . locationListWindowBufTyppE[49;1He)E[49;3HE[KE[50;1H:call append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName)E[50;81HE[KE[51;1H:wE[51;3HE[KE[52;1H:wincmd oE[52;10HE[KE[53;1H:b 1E[53;5HE[KE[54;1HENDTESTE[54;8HE[KE[55;1HE[KE[56;1HSTARTTESTE[56;10HE[KE[57;1H:qaE[57;4HE[KE[58;1HENDTESTE[58;8HE[KE[59;1HE[KE[55;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[56;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H1 line, 4 characters writtenE[57;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[57;1HE[?12lE[?25hE[?25l


/ENDTESTE[60;10HE[KE[60;1HE[58;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[59;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqaE[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test97.failed test.ok test.out X* viminfo
cp test97.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 test97.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test97.in" 17 lines, 264 charactersE[1;1HTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:set shell=doesnotexist
:e test.out
:put =glob('Xxx\{')
:put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:put =glob('Xxx\{')
:put =glob('Xxx\$')
:w
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest whether glob()/globpath() return correct results with certain escapedE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[4;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 11 lines, 157 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[5;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[16;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset shell=doesnotexistE[?25lE[17;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25he test.outE[?25l"test.out" [New File]E[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =glob('Xxx\{')E[?25lE[2;1HE[KE[2;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hput =glob('Xxx\$')E[?25lE[3;1HE[KE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xxx{E[?25l
Cannot execute shell doesnotexist
E[m
E79: Cannot expand wildcards
"Xxx{" [New File] 3 lines, 3 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hw! Xxx\$E[?25l"Xxx$" E[60;8HE[KE[60;8H[New File] 3 lines, 3 characters written
E[32mPress ENTER or type command to continueE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hput =glob('Xxx\{')E[?25lE[27mE[mE[HE[2JE[4;1HXxx{
E[1mE[34m~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[4;1HE[?12lE[?25hE[?25lE[60;1HE[m:E[?12lE[?25hput =glob('Xxx\$')E[?25lE[5;1HXxx$E[5;5HE[KE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwE[?25l"test.out" [New File] 5 lines, 13 characters writtenE[5;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test98.failed test.ok test.out X* viminfo
cp test98.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 test98.in
Vim: Warning: Output is not to a terminal
E[?1049hE[?1hE=E[1;60rE[?12;25hE[?12lE[?25hE[27mE[mE[HE[2JE[?25lE[60;1H"test98.in" 43 lines, 908 charactersE[1;1HTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTEST
:so small.vim
:" We don't want the status line to cause problems:
:set laststatus=0
:let g:totalLines = &lines * 20
:let middle = g:totalLines / 2
:wincmd n
:wincmd o
:for i in range(1, g:totalLines)
:    call setline(i, 'LINE ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:aboveleft vert new
:for i in range(1, g:totalLines)
:    call setline(i, 'line ' . i)
:endfor
:exe string(middle)
:normal zt
:normal M
:" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scb
:wincmd w
:let topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!
:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - topLLE[36;1HineRight))
:w! test.out
:brewind
ENDTEST

STARTTEST
:qa!
ENDTEST

E[1mE[34m~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hset cpE[?25lE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hmap dotest /^STARTTEST^E[34m^ME[mj:set ff=unix cpo-=A^E[34m^ME[m:.,/ENDTEST/-1w! Xdotest^E[34m^ME[m:set ff& cpo+=A^E[34m^ME[mnj0:s
E[59;96HoE[60;1H! Xdotest^E[34m^ME[mdotestE[?25lE[1;1HE[LE[1;1HTest for 'scrollbind' causing an unexpected scroll of one of the windows.E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H/^STARTTESTE[2;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H[New File] 35 lines, 791 characters writtenE[3;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[3;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[39;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hso small.vimE[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" We don't want the status line to cause problems:E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hset laststatus=0E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet g:totalLines = &lines * 20E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet middle = g:totalLines / 2E[?25lE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd nE[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[mE[30;1HE[1mE[7m[No Name]                                                                                       E[mE[31;2Hnormal zt
:normal ME[32;10HE[KE[33;2H" Execute the following two command at once to reproduce the problem.
:setl scb | wincmd p
:setl scbE[35;10HE[KE[36;1H:wincmd wE[36;10HE[KE[37;2Hlet topLineLeft = line('w0')
:wincmd p
:let topLineRight = line('w0')
:setl noscrollbind
:wincmd p
:setl noscrollbind
:q!E[43;4HE[KE[44;1H:%del _
:call setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - topLLE[46;1HineRight))E[46;11HE[KE[47;1H:w! test.outE[47;13HE[KE[48;1H:brewindE[48;9HE[KE[49;1HENDTESTE[49;8HE[KE[50;1HE[KE[51;1HSTARTTESTE[51;10HE[KE[52;1H:qa!E[52;5HE[KE[53;1HENDTESTE[53;8HE[KE[54;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd oE[?25lE[30;1HE[1mE[34m~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[1;1HE[?12lE[?25hE[?25lE[mE[60;1HE[KE[60;1H:E[?12lE[?25hfor i in range(1, g:totalLines)E[?25l
:  E[?12lE[?25h:    call setline(i, 'LINE ' . i)
E[?25l:  E[?12lE[?25h:endforE[1;1HE[2LE[?25lE[1;1HLINE 1
LINE 2
LINE 3E[3;7HE[KE[4;1HLINE 4E[4;7HE[KE[5;1HLINE 5E[5;7HE[KE[6;1HLINE 6E[6;7HE[KE[7;1HLINE 7E[7;7HE[KE[8;1HLINE 8E[8;7HE[KE[9;1HLINE 9E[9;7HE[KE[10;1HLINE 10E[10;8HE[KE[11;1HLINE 11E[11;8HE[KE[12;1HLINE 12E[12;8HE[KE[13;1HLINE 13E[13;8HE[KE[14;1HLINE 14E[14;8HE[KE[15;1HLINE 15E[15;8HE[KE[16;1HLINE 16E[16;8HE[KE[17;1HLINE 17E[17;8HE[KE[18;1HLINE 18E[18;8HE[KE[19;1HLINE 19E[19;8HE[KE[20;1HLINE 20E[20;8HE[KE[21;1HLINE 21E[21;8HE[KE[22;1HLINE 22E[22;8HE[KE[23;1HLINE 23E[23;8HE[KE[24;1HLINE 24E[24;8HE[KE[25;1HLINE 25E[25;8HE[KE[26;1HLINE 26E[26;8HE[KE[27;1HLINE 27E[27;8HE[KE[28;1HLINE 28E[28;8HE[KE[29;1HLINE 29E[29;8HE[KE[30;1HLINE 30E[30;8HE[KE[31;1HLINE 31E[31;8HE[KE[32;1HLINE 32E[32;8HE[KE[33;1HLINE 33E[33;8HE[KE[34;1HLINE 34E[34;8HE[KE[35;1HLINE 35E[35;8HE[KE[36;1HLINE 36E[36;8HE[KE[37;1HLINE 37E[37;8HE[KE[38;1HLINE 38E[38;8HE[KE[39;1HLINE 39E[39;8HE[KE[40;1HLINE 40E[40;8HE[KE[41;1HLINE 41E[41;8HE[KE[42;1HLINE 42E[42;8HE[KE[43;1HLINE 43E[43;8HE[KE[44;1HLINE 44E[44;8HE[KE[45;1HLINE 45E[45;8HE[KE[46;1HLINE 46E[46;8HE[KE[47;1HLINE 47E[47;8HE[KE[48;1HLINE 48E[48;8HE[KE[49;1HLINE 49E[49;8HE[KE[50;1HLINE 50E[50;8HE[KE[51;1HLINE 51E[51;8HE[KE[52;1HLINE 52E[52;8HE[KE[53;1HLINE 53E[53;8HE[KE[54;1HLINE 54E[54;8HE[KE[55;1HLINE 55E[55;8HE[KE[56;1HLINE 56E[56;8HE[KE[57;1HLINE 57E[57;8HE[KE[58;1HLINE 58E[58;8HE[KE[59;1HLINE 59E[59;8HE[KE[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hexe string(middle)E[?25lE[27mE[mE[HE[2JE[1;1HLINE 571
LINE 572
LINE 573
LINE 574
LINE 575
LINE 576
LINE 577
LINE 578
LINE 579
LINE 580
LINE 581
LINE 582
LINE 583
LINE 584
LINE 585
LINE 586
LINE 587
LINE 588
LINE 589
LINE 590
LINE 591
LINE 592
LINE 593
LINE 594
LINE 595
LINE 596
LINE 597
LINE 598
LINE 599
LINE 600
LINE 601
LINE 602
LINE 603
LINE 604
LINE 605
LINE 606
LINE 607
LINE 608
LINE 609
LINE 610
LINE 611
LINE 612
LINE 613
LINE 614
LINE 615
LINE 616
LINE 617
LINE 618
LINE 619
LINE 620
LINE 621
LINE 622
LINE 623
LINE 624
LINE 625
LINE 626
LINE 627
LINE 628
LINE 629E[30;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hnormal ztE[?25lE[1;59rE[1;1HE[29ME[1;60rE[31;1HLINE 630
LINE 631
LINE 632
LINE 633
LINE 634
LINE 635
LINE 636
LINE 637
LINE 638
LINE 639
LINE 640
LINE 641
LINE 642
LINE 643
LINE 644
LINE 645
LINE 646
LINE 647
LINE 648
LINE 649
LINE 650
LINE 651
LINE 652
LINE 653
LINE 654
LINE 655
LINE 656
LINE 657
LINE 658E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hnormal ME[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25haboveleft vert newE[?25lE[1;1H        E[40CE[7m|E[2;49H|E[3;49H|E[4;49H|E[5;49H|E[6;49H|E[7;49H|E[8;49H|E[9;49H|E[10;49H|E[11;49H|E[12;49H|E[13;49H|E[14;49H|E[15;49H|E[16;49H|E[17;49H|E[18;49H|E[19;49H|E[20;49H|E[21;49H|E[22;49H|E[23;49H|E[24;49H|E[25;49H|E[26;49H|E[27;49H|E[28;49H|E[29;49H|E[30;49H|E[31;49H|E[32;49H|E[33;49H|E[34;49H|E[35;49H|E[36;49H|E[37;49H|E[38;49H|E[39;49H|E[40;49H|E[41;49H|E[42;49H|E[43;49H|E[44;49H|E[45;49H|E[46;49H|E[47;49H|E[48;49H|E[49;49H|E[50;49H|E[51;49H|E[52;49H|E[53;49H|E[54;49H|E[55;49H|E[56;49H|E[57;49H|E[58;49H|E[59;49H|E[mE[2;1HE[1mE[34m~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               
~                                               E[mE[1;50HLINE 600E[2;50HLINE 601E[3;50HLINE 602E[4;50HLINE 603E[5;50HLINE 604E[6;50HLINE 605E[7;50HLINE 606E[8;50HLINE 607E[9;50HLINE 608E[10;50HLINE 609E[11;50HLINE 610E[12;50HLINE 611E[13;50HLINE 612E[14;50HLINE 613E[15;50HLINE 614E[16;50HLINE 615E[17;50HLINE 616E[18;50HLINE 617E[19;50HLINE 618E[20;50HLINE 619E[21;50HLINE 620E[22;50HLINE 621E[23;50HLINE 622E[24;50HLINE 623E[25;50HLINE 624E[26;50HLINE 625E[27;50HLINE 626E[28;50HLINE 627E[29;50HLINE 628E[30;50HLINE 629E[31;50HLINE 630E[32;50HLINE 631E[33;50HLINE 632E[34;50HLINE 633E[35;50HLINE 634E[36;50HLINE 635E[37;50HLINE 636E[38;50HLINE 637E[39;50HLINE 638E[40;50HLINE 639E[41;50HLINE 640E[42;50HLINE 641E[43;50HLINE 642E[44;50HLINE 643E[45;50HLINE 644E[46;50HLINE 645E[47;50HLINE 646E[48;50HLINE 647E[49;50HLINE 648E[50;50HLINE 649E[51;50HLINE 650E[52;50HLINE 651E[53;50HLINE 652E[54;50HLINE 653E[55;50HLINE 654E[56;50HLINE 655E[57;50HLINE 656E[58;50HLINE 657E[59;50HLINE 658E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hfor i in range(1, g:totalLines)E[?25l
:  E[?12lE[?25h:    call setline(i, 'line ' . i)
E[?25l:  E[?12lE[?25h:endforE[1;1HE[2LE[?25lE[1;1Hline 1E[42CE[7m|E[m
line 2E[42CE[7m|E[m
line 3                                          
line 4                                          
line 5                                          
line 6                                          
line 7                                          
line 8                                          
line 9                                          
line 10                                         
line 11                                         
line 12                                         
line 13                                         
line 14                                         
line 15                                         
line 16                                         
line 17                                         
line 18                                         
line 19                                         
line 20                                         
line 21                                         
line 22                                         
line 23                                         
line 24                                         
line 25                                         
line 26                                         
line 27                                         
line 28                                         
line 29                                         
line 30                                         
line 31                                         
line 32                                         
line 33                                         
line 34                                         
line 35                                         
line 36                                         
line 37                                         
line 38                                         
line 39                                         
line 40                                         
line 41                                         
line 42                                         
line 43                                         
line 44                                         
line 45                                         
line 46                                         
line 47                                         
line 48                                         
line 49                                         
line 50                                         
line 51                                         
line 52                                         
line 53                                         
line 54                                         
line 55                                         
line 56                                         
line 57                                         
line 58                                         
line 59                                         E[1;50HLINE 600E[2;50HLINE 601E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hexe string(middle)E[?25lE[1;6H571E[2;6H572E[3;6H573E[4;6H574E[5;7H75E[6;6H576E[7;6H577E[8;6H578E[9;6H579E[10;6H580E[11;6H581E[12;6H582E[13;6H583E[14;6H584E[15;6H585E[16;6H586E[17;6H587E[18;6H588E[19;6H589E[20;6H590E[21;6H591E[22;6H592E[23;6H593E[24;6H594E[25;6H595E[26;6H596E[27;6H597E[28;6H598E[29;6H599E[30;6H600E[31;6H601E[32;6H602E[33;6H603E[34;6H604E[35;6H605E[36;6H606E[37;6H607E[38;6H608E[39;6H609E[40;6H610E[41;6H611E[42;6H612E[43;6H613E[44;6H614E[45;6H615E[46;6H616E[47;6H617E[48;6H618E[49;6H619E[50;6H620E[51;6H621E[52;6H622E[53;6H623E[54;6H624E[55;6H625E[56;6H626E[57;6H627E[58;6H628E[59;6H629E[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hnormal ztE[?25lE[1;1Hline 600                                        
line 601                                        
line 602                                        
line 603                                        
line 604                                        
line 605                                        
line 606                                        
line 607                                        
line 608                                        
line 609                                        
line 610                                        
line 611                                        
line 612                                        
line 613                                        
line 614                                        
line 615                                        
line 616                                        
line 617                                        
line 618                                        
line 619                                        
line 620                                        
line 621                                        
line 622                                        
line 623                                        
line 624                                        
line 625                                        
line 626                                        
line 627                                        
line 628                                        
line 629                                        
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                
                                                E[31;1Hline 630
line 631
line 632
line 633
line 634
line 635
line 636
line 637
line 638
line 639
line 640
line 641
line 642
line 643
line 644
line 645
line 646
line 647
line 648
line 649
line 650
line 651
line 652
line 653
line 654
line 655
line 656
line 657
line 658E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hnormal ME[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h" Execute the following two command at once to reproduce the problem.E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetl scb | wincmd pE[?25lE[30;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetl scbE[?25lE[30;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd wE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet topLineLeft = line('w0')E[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[30;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hlet topLineRight = line('w0')E[?25lE[30;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetl noscrollbindE[?25lE[30;50HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hwincmd pE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hsetl noscrollbindE[?25lE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hq!E[?25lE[1;1HLINEE[1;49HE[KE[2;1HLINEE[2;49HE[KE[3;1HLINEE[3;49HE[KE[4;1HLINEE[4;49HE[KE[5;1HLINEE[5;49HE[KE[6;1HLINEE[6;49HE[KE[7;1HLINEE[7;49HE[KE[8;1HLINEE[8;49HE[KE[9;1HLINEE[9;49HE[KE[10;1HLINEE[10;49HE[KE[11;1HLINEE[11;49HE[KE[12;1HLINEE[12;49HE[KE[13;1HLINEE[13;49HE[KE[14;1HLINEE[14;49HE[KE[15;1HLINEE[15;49HE[KE[16;1HLINEE[16;49HE[KE[17;1HLINEE[17;49HE[KE[18;1HLINEE[18;49HE[KE[19;1HLINEE[19;49HE[KE[20;1HLINEE[20;49HE[KE[21;1HLINEE[21;49HE[KE[22;1HLINEE[22;49HE[KE[23;1HLINEE[23;49HE[KE[24;1HLINEE[24;49HE[KE[25;1HLINEE[25;49HE[KE[26;1HLINEE[26;49HE[KE[27;1HLINEE[27;49HE[KE[28;1HLINEE[28;49HE[KE[29;1HLINEE[29;49HE[KE[30;1HLINEE[30;49HE[KE[31;1HLINEE[31;49HE[KE[32;1HLINEE[32;49HE[KE[33;1HLINEE[33;49HE[KE[34;1HLINEE[34;49HE[KE[35;1HLINEE[35;49HE[KE[36;1HLINEE[36;49HE[KE[37;1HLINEE[37;49HE[KE[38;1HLINEE[38;49HE[KE[39;1HLINEE[39;49HE[KE[40;1HLINEE[40;49HE[KE[41;1HLINEE[41;49HE[KE[42;1HLINEE[42;49HE[KE[43;1HLINEE[43;49HE[KE[44;1HLINEE[44;49HE[KE[45;1HLINEE[45;49HE[KE[46;1HLINEE[46;49HE[KE[47;1HLINEE[47;49HE[KE[48;1HLINEE[48;49HE[KE[49;1HLINEE[49;49HE[KE[50;1HLINEE[50;49HE[KE[51;1HLINEE[51;49HE[KE[52;1HLINEE[52;49HE[KE[53;1HLINEE[53;49HE[KE[54;1HLINEE[54;49HE[KE[55;1HLINEE[55;49HE[KE[56;1HLINEE[56;49HE[KE[57;1HLINEE[57;49HE[KE[58;1HLINEE[58;49HE[KE[59;1HLINEE[59;49HE[KE[30;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25h%del _E[?25lE[1;1HE[KE[2;1HE[1mE[34m~                                                                                               E[3;1H~                                                                                               E[4;1H~                                                                                               E[5;1H~                                                                                               E[6;1H~                                                                                               E[7;1H~                                                                                               E[8;1H~                                                                                               E[9;1H~                                                                                               E[10;1H~                                                                                               E[11;1H~                                                                                               E[12;1H~                                                                                               E[13;1H~                                                                                               E[14;1H~                                                                                               E[15;1H~                                                                                               E[16;1H~                                                                                               E[17;1H~                                                                                               E[18;1H~                                                                                               E[19;1H~                                                                                               E[20;1H~                                                                                               E[21;1H~                                                                                               E[22;1H~                                                                                               E[23;1H~                                                                                               E[24;1H~                                                                                               E[25;1H~                                                                                               E[26;1H~                                                                                               E[27;1H~                                                                                               E[28;1H~                                                                                               E[29;1H~                                                                                               E[30;1H~                                                                                               E[31;1H~                                                                                               E[32;1H~                                                                                               E[33;1H~                                                                                               E[34;1H~                                                                                               E[35;1H~                                                                                               E[36;1H~                                                                                               E[37;1H~                                                                                               E[38;1H~                                                                                               E[39;1H~                                                                                               E[40;1H~                                                                                               E[41;1H~                                                                                               E[42;1H~                                                                                               E[43;1H~                                                                                               E[44;1H~                                                                                               E[45;1H~                                                                                               E[46;1H~                                                                                               E[47;1H~                                                                                               E[48;1H~                                                                                               E[49;1H~                                                                                               E[50;1H~                                                                                               E[51;1H~                                                                                               E[52;1H~                                                                                               E[53;1H~                                                                                               E[54;1H~                                                                                               E[55;1H~                                                                                               E[56;1H~                                                                                               E[57;1H~                                                                                               E[58;1H~                                                                                               E[59;1H~                                                                                               E[mE[60;1H--No lines in buffer--E[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hcall setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - top
E[59;96HLE[60;1HineRight))E[?25lE[1;1HE[LE[1;1HDifference between the top lines (left - right): 0E[60;1HE[KE[1;1HE[?12lE[?25hE[?25lE[60;1H:E[?12lE[?25hw! test.outE[?25l"test.out" E[60;12HE[KE[60;12H[New File] 1 line, 51 characters writtenE[1;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hbrewindE[?25l"test98.in" 43 lines, 908 charactersE[1;1HTest for 'scrollbind' causing an unexpected scroll of one of the windows.
STARTTESTE[2;10HE[KE[3;1H:so small.vimE[3;14HE[KE[4;1H:" We don't want the status line to cause problems:E[4;52HE[KE[5;1H:set laststatus=0E[5;18HE[KE[6;1H:let g:totalLines = &lines * 20E[6;32HE[KE[7;1H:let middle = g:totalLines / 2E[7;31HE[KE[8;1H:wincmd nE[8;10HE[KE[9;1H:wincmd oE[9;10HE[KE[10;1H:for i in range(1, g:totalLines)E[10;33HE[KE[11;1H:    call setline(i, 'LINE ' . i)E[11;34HE[KE[12;1H:endforE[12;8HE[KE[13;1H:exe string(middle)E[13;20HE[KE[14;1H:normal ztE[14;11HE[KE[15;1H:normal ME[15;10HE[KE[16;1H:aboveleft vert newE[16;20HE[KE[17;1H:for i in range(1, g:totalLines)E[17;33HE[KE[18;1H:    call setline(i, 'line ' . i)E[18;34HE[KE[19;1H:endforE[19;8HE[KE[20;1H:exe string(middle)E[20;20HE[KE[21;1H:normal ztE[21;11HE[KE[22;1H:normal ME[22;10HE[KE[23;1H:" Execute the following two command at once to reproduce the problem.E[23;71HE[KE[24;1H:setl scb | wincmd pE[24;21HE[KE[25;1H:setl scbE[25;10HE[KE[26;1H:wincmd wE[26;10HE[KE[27;1H:let topLineLeft = line('w0')E[27;30HE[KE[28;1H:wincmd pE[28;10HE[KE[29;1H:let topLineRight = line('w0')E[29;31HE[KE[30;1H:setl noscrollbindE[30;19HE[KE[31;1H:wincmd pE[31;10HE[KE[32;1H:setl noscrollbindE[32;19HE[KE[33;1H:q!E[33;4HE[KE[34;1H:%del _E[34;8HE[KE[35;1H:call setline(1, 'Difference between the top lines (left - right): ' . string(topLineLeft - topLLE[36;1HineRight))E[36;11HE[KE[37;1H:w! test.outE[37;13HE[KE[38;1H:brewindE[38;9HE[KE[39;1HENDTESTE[39;8HE[KE[40;1HE[KE[41;1HSTARTTESTE[41;10HE[KE[42;1H:qa!E[42;5HE[KE[43;1HENDTESTE[43;8HE[KE[44;1HE[KE[40;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H/^STARTTESTE[41;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:set ff=unix cpo-=AE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" E[60;11HE[KE[60;11H1 line, 5 characters writtenE[42;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:set ff& cpo+=AE[42;1HE[?12lE[?25hE[?25lE[60;1H/ENDTESTE[60;10HE[KE[60;1HE[43;1HE[?12lE[?25h
E[?25lE[60;1HE[KE[60;1H:so! XdotestE[44;1HE[?12lE[?25hE[?25lE[60;1HE[KE[60;1H:E[?12lE[?25hqa!E[?25lE[60;1HE[KE[60;1HE[?1lE>E[?12lE[?25hE[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo

Test results:
ALL DONE
make[3]: Leaving directory '/sources/vim74/src/testdir'
make -f Makefile unittest
make[3]: Entering directory '/sources/vim74/src'
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile_test.o memfile_test.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H   -I/usr/local/include  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
link.sh: $LINK_AS_NEEDED set to 'yes': invoking linker directly.
  gcc   -L/usr/local/lib -Wl,--as-needed 	-o memfile_test objects/buffer.o objects/blowfish.o objects/charset.o objects/diff.o objects/digraph.o objects/edit.o objects/eval.o objects/ex_cmds.o objects/ex_cmds2.o objects/ex_docmd.o objects/ex_eval.o objects/ex_getln.o objects/fileio.o objects/fold.o objects/getchar.o objects/hardcopy.o objects/hashtab.o  objects/if_cscope.o objects/if_xcmdsrv.o objects/mark.o objects/memline.o objects/menu.o objects/message.o objects/misc1.o objects/misc2.o objects/move.o objects/mbyte.o objects/normal.o objects/ops.o objects/option.o objects/os_unix.o objects/pathdef.o objects/popupmnu.o objects/quickfix.o objects/regexp.o objects/screen.o objects/search.o objects/sha256.o objects/spell.o objects/syntax.o  objects/tag.o objects/term.o objects/ui.o objects/undo.o objects/version.o objects/window.o           objects/netbeans.o  objects/memfile_test.o        -lm -lncurses -lnsl  -lacl -lattr -ldl          
link.sh: Linked fine
memfile_test passed
make[3]: Leaving directory '/sources/vim74/src'
make[2]: Leaving directory '/sources/vim74/src'
make[1]: Leaving directory '/sources/vim74'
