Sun Aug 31 06:18:15 EDT 2014
make[1]: Entering directory '/sources/vim74'
Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make test
make[2]: Entering directory '/sources/vim74/src'
make -f Makefile vim
make[3]: Entering directory '/sources/vim74/src'
make[3]: 'vim' is up to date.
make[3]: Leaving directory '/sources/vim74/src'
if test -n "yes" -a -f po/Makefile; then \
	cd po; make -f Makefile check VIM=../vim; \
fi
make[3]: Entering directory '/sources/vim74/src/po'
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq af.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"af.po" "af.po" 5393 lines, 133397 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch af.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ca.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ca.po" "ca.po" 6201 lines, 161830 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ca.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"cs.po" "cs.po" 4664 lines, 111014 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch cs.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq de.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"de.po" "de.po" 6117 lines, 156572 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch de.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq en_GB.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"en_GB.po" "en_GB.po" 290 lines, 8951 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch en_GB.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq eo.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"eo.po" "eo.po" 6873 lines, 175718 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch eo.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq es.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"es.po" "es.po" 8279 lines, 203808 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch es.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fi.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"fi.po" "fi.po" 6526 lines, 161906 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch fi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq fr.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"fr.po" "fr.po" 7091 lines, 192056 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch fr.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ga.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ga.po" "ga.po" 6503 lines, 164354 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ga.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq it.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"it.po" "it.po" 6803 lines, 174858 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch it.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ja.po" "ja.po" 6808 lines, 195581 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ja.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ko.po" "ko.po" 6447 lines, 155536 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ko.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ko.UTF-8.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ko.UTF-8.po" "ko.UTF-8.po" 6447 lines, 171433 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ko.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nb.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"nb.po" "nb.po" 6166 lines, 150557 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch nb.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq nl.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"nl.po" "nl.po" 5852 lines, 135176 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch nl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq no.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"no.po" "no.po" 6166 lines, 150557 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch no.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"pl.po" "pl.po" 6905 lines, 175274 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch pl.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pt_BR.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"pt_BR.po" "pt_BR.po" 6236 lines, 160821 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch pt_BR.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ru.po" "ru.po" 6890 lines, 226143 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ru.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"sk.po" "sk.po" 5821 lines, 147387 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch sk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sv.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"sv.po" "sv.po" 6148 lines, 149141 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch sv.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"uk.po" "uk.po" 7027 lines, 215754 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch uk.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq vi.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"vi.po" "vi.po" 5196 lines, 143932 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch vi.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.UTF-8.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"zh_CN.UTF-8.po" "zh_CN.UTF-8.po" 6139 lines, 147454 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch zh_CN.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"zh_CN.po" "zh_CN.po" 6140 lines, 136476 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch zh_CN.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.UTF-8.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"zh_TW.UTF-8.po" "zh_TW.UTF-8.po" 5282 lines, 127286 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch zh_TW.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_TW.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"zh_TW.po" "zh_TW.po" 5275 lines, 117353 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch zh_TW.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq cs.cp1250.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"cs.cp1250.po" "cs.cp1250.po" 4664 lines, 111022 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch cs.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.sjis.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ja.sjis.po" "ja.sjis.po" 6808 lines, 172634 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ja.sjis.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ja.euc-jp.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ja.euc-jp.po" "ja.euc-jp.po" 6808 lines, 172525 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ja.euc-jp.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.cp1250.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"pl.cp1250.po" "pl.cp1250.po" 6905 lines, 175270 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch pl.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq pl.UTF-8.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"pl.UTF-8.po" "pl.UTF-8.po" 6905 lines, 178060 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch pl.UTF-8.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq ru.cp1251.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"ru.cp1251.po" "ru.cp1251.po" 6890 lines, 178240 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch ru.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq sk.cp1250.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"sk.cp1250.po" "sk.cp1250.po" 5821 lines, 147383 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch sk.cp1250.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq uk.cp1251.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"uk.cp1251.po" "uk.cp1251.po" 7027 lines, 174515 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch uk.cp1251.ck
../vim -u NONE -e -X -S check.vim -c "if error == 0 | q | endif" -c cq zh_CN.cp936.po
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[?25l[24;1H"zh_CN.cp936.po" "zh_CN.cp936.po" 6140 lines, 136487 characters
search hit BOTTOM, continuing at TOPOK[24;3H[K[24;1H
[?1l>[?12l[?25h[?1049ltouch zh_CN.cp936.ck
make[3]: Leaving directory '/sources/vim74/src/po'
if test vim != vim -a ! -r vim; then \
	ln -s vim vim; \
fi
cd testdir; make -f Makefile  VIMPROG=../vim  SCRIPTSOURCE=../../runtime
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 wrongtermsize
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test1.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test1.in" 57 lines, 2069 characters[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
:" If columns or lines are too small, create wrongtermsize.
:" (Some tests will fail. When columns and/or lines are small)
:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[20;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 35 lines, 1133 characters written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[21;1H[?12l[?25h[?25l


/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:w! mzscheme.vim
:w! lua.vim
:"
:" If +multi_byte feature supported, make mbyte.vim empty.
:if has("multi_byte") | sp another | w! mbyte.vim | q | endif
:"
:" If +mzscheme feature supported, make mzscheme.vim empty.
:if has("mzscheme") | sp another | w! mzscheme.vim | q | endif
:"
:" If +lua feature supported, make lua.vim empty.
:if has("lua") | sp another | w! lua.vim | q | endif
:"
:" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.
:" Otherwise write small.vim to skip the test.
:if 1 | q! | endif
:w! small.vim
:" If +windows feature not supported :sp will fail and tiny.vim will be
:" written to skip the test.
:sp another
:wq! tiny.vim
:qa!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If columns or lines are too small, create wrongtermsize.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" (Some tests will fail. When columns and/or lines are small)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Write a single line to test.out to check if testing works at all.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%d[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25lthis is a test[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 15 characters written[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test.[?25l[1;14H[?12l[?25h[?25l[1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! small.vim[?25l"small.vim" [24;13H[K[24;13H[New File] 1 line, 1 character written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! tiny.vim[?25l"tiny.vim" [24;12H[K[24;12H[New File] 1 line, 1 character written[1;1H[?12l[?25h[?25le! test.ok
w! test.out[2;12H[K[3;1Hqa![3;4H[K[4;1H[K[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! mbyte.vim[?25l"mbyte.vim" [24;13H[K[24;13H[New File] 4 lines, 28 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! mzscheme.vim[?25l"mzscheme.vim" [24;16H[K[24;16H[New File] 4 lines, 28 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! lua.vim[?25l"lua.vim" [24;11H[K[24;11H[New File] 4 lines, 28 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If +multi_byte feature supported, make mbyte.vim empty.[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("multi_byte") | sp another | w! mbyte.vim | q | endif[?25l"another" [New File][24;21H[K[24;1H
"mbyte.vim" 0 lines, 0 characters written[1;1H[L[1;1He! test.ok[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If +mzscheme feature supported, make mzscheme.vim empty.[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("mzscheme") | sp another | w! mzscheme.vim | q | endif[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If +lua feature supported, make lua.vim empty.[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("lua") | sp another | w! lua.vim | q | endif[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If +eval feature supported quit here, leaving tiny.vim and small.vim empty.[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Otherwise write small.vim to skip the test.[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif 1 | q! | endif[?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049lrm -rf X* viminfo
rm -rf test2.failed test.ok test.out X* viminfo
cp test2.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test2.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test2.in" 29 lines, 717 characters[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>"))[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 19 lines, 336 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H5GdG:wq! test.out
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hfirst test for URL://machine.name/tmp/vimtest2a and other text[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^first[?25l[31msearch hit BOTTOM, continuing at TOP[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25htmp[?25l[23;35H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(0, expand("<cfile>"))[?25l[23;35H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^second[?25l[1;23r[23;1H
[1;24r[23;1Hsecond test for URL://machine.name/tmp/vimtest2b. And other text[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hURL[?25l[23;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(1, expand("<cfile>"))[?25l[23;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("ebcdic")[?25l
:  [?12l[?25h: set isf=@,240-249,/,.,-,_,+,,,$,:,~,\
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: set isf=@,48-57,/,.,-,_,+,,,$,:,~,\
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1HSTARTTEST
:so small.vim
/^first
/tmp[24;1H[K[23;17H[?12l[?25h[?25l
/[?12l[?25h^third[?25l[1;23r[23;1H
[1;24r[23;1Hthird test for URL:\\machine.name\vimtest2c and other text[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hname[?25l[23;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(2, expand("<cfile>"))[?25l[23;30H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^fourth[?25l[1;23r[23;1H
[1;24r[23;1Hfourth test for URL:\\machine.name\tmp\vimtest2d, and other text[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hURL[?25l[23;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(3, expand("<cfile>"))[?25l[23;17H[?12l[?25h[?25l[1;23r[1;1H[6L[1;24r[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[24;1H[K[1;1H[?12l[?25h[?25l[24;1H29 fewer lines[27m[m[H[2J[1;1HURL:\\machine.name\tmp\vimtest2d
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H29 fewer lines[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 128 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test3.failed test.ok test.out X* viminfo
cp test3.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test3.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test3.in" 2062 lines, 21255 characters[1;1H/* vim: set cin ts=4 sw=4 : */

Test for 'cindent'

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo modeline
:edit[16C" read modeline
/start of AUTO
=/end of AUTO
ENDTEST

/* start of AUTO matically checked vim: set ts=4 : */
{[15;9Hif (test)[16;17Hcmd1;[17;9Hcmd2;
}

{[21;9Hif (test)[22;17Hcmd1;[23;9Helse[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1H/* vim: set cin ts=4 sw=4 : */[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 5 lines, 125 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo modeline[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hedit                " read modeline[?25l"test3.in"[24;22H[K[24;12H2062L, 21255C[15;5Hif (test)[15;14H[K[16;9Hcmd1;[16;17H[K[17;5Hcmd2;[17;10H[K[21;5Hif (test)[21;14H[K[22;9Hcmd1;[22;17H[K[23;5Helse[23;9H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hstart of AUTO[?25l[13;4H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hend of AUTO[?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 [24;20H[K[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;1Hnamespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest[34m^[[m
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 93C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tw=0 wm=60 columns=80 noai fo=croq[?25l[27m[m[H[2J[1;1Hnamespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}

/* end of AUTO */

STARTTEST
:set tw=0 wm=60 columns=80 noai fo=croq
/serious/e
a about life, the universe, and the rest[34m^[[m
ENDTEST

{

/* this is
 * a real serious important big
 * comment
 */[16;1H[?12l[?25h[?25l[24;1H/[?12l[?25hserious/e[?25l[21;17H[?12l[?25h[?25l


[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[20;19H[K[21;4Habout life, the
 * universe, and the
 * rest important big[23;7H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H* comment[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[5M[1;24r[19;2H*/
    /* insert " about life, the universe, and the rest" after "serious" */
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set nocin[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H6L, 78C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H/comments
joabout life[34m^[[m/happens
jothere[34m^[[m/below
oline[34m^[[m/this
Ohello[34m^[[m[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hcomments[?25l[1;23r[1;1H[4M[1;24r[21;1H{
    /*[23;6H* Testing for comments, without 'cin' set[24;1H[K[23;20H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;6H*/[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[23;1Habout life[?12l[?25h[?25l
/[?12l[?25hhappens[?25l[1;23r[1;1H[3M[1;24r[22;1H/*
* what happens here?[24;1H[K[23;8H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H*/[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[23;1Hthere[?12l[?25h[?25l
/[?12l[?25hbelow[?25l[1;23r[1;1H[3M[1;24r[22;5H/*[23;8Hthe end of the comment, try inserting a line below */[24;1H[K[23;53H[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[23;1Hline[?12l[?25h[?25l
/[?12l[?25hthis[?25l[1;23r[1;1H[3M[1;24r[22;9H/* how about[23;25Hthis one */[24;1H[K[23;25H[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[23;1Hhello[23;25H[K[23;5H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;25Hthis one */[23;8H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cin[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 18C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/vec2
==[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hvec2[?25l[1;23r[1;1H[5M[1;24r[20;1H{
    var = this + that + vec[0] * vec[0][22;23H+ vec[1] * vec[1][23;23H+ vec2[2] * vec[2];[24;1H[K[23;25H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cin[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5L, 51C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[4M[1;24r[20;1H:set cino=}4
/testing1
k2==/testing2
k2==[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=}4[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25htesting1[?25l[1;23r[1;1H[8M[1;24r[17;1H{[18;9Hasdf asdflkajds f;
    if (tes & ting) {[20;9Hasdf asdf asdf ;[21;9Hasdfa sdf asdf;[22;9H}
    testing1;[24;1H[K[23;5H[?12l[?25h[22;8H [?25l

/[?12l[?25htesting2[?25l[1;23r[1;1H[6M[1;24r[18;5Hif (tes & ting)
    {[20;9Hasdf asdf asdf ;[21;9Hasdfa sdf asdf;[22;9H}
    testing2;[24;1H[K[23;5H[?12l[?25h[22;8H [23;9H[?25l
/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cin[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H4L, 36C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set cino=(0,)20
/main
=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,)20[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hmain[?25l[1;23r[1;1H[2M[1;24r[23;1Hmain ( int first_par, /*[24;1H[K[23;1H[?12l[?25h[?25l
19 lines to indent...20[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;24H* Comment for[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[27m[m[H[2J[1;23H* Comment for[2;23H* first par[3;23H*/[4;11Hsecond_par /*[5;23H* Comment for[6;23H* second par[7;23H*/[8;9H);

}

STARTTEST
:set cin
:set cino=es,n0s
/main
=][
ENDTEST

main(void)
{
    /* Make sure that cino=X0s is not parsed like cino=Xs. */
    if (cond)[23;9Hfoo();[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H4L, 36C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cin[?25l[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=es,n0s[?25l[17;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hmain[?25l[19;1H[?12l[?25h[?25l[24;1H8 lines to indent...9[7Cindented [24;18H[K[19;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[7M[1;24r[17;5Helse
    {[19;9Hbar();
    }
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cin[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 26C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H:set cino=
]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H{[24;1H[K[23;1H[?12l[?25h[?25l
11 lines to indent...12[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hdo[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[27m[m[H[2J[1;9Hif ()[2;9H{[3;13Hif ()[4;17Hasdf;[5;13Helse[6;17Hasdf;[7;9H}
    } while ();
    cmd;[8C/* this should go under the } */
}

STARTTEST
]]=][
ENDTEST

void f()
{
    if ( k() ) {[19;9Hl();[21;5H} else { /* Start (two words) end */[22;9Hm();
    }[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H1L, 6C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[14;1H[?12l[?25h


[?25l[24;1H8 lines to indent...9[7Cindented [24;18H[K[17;1H[?12l[?25h
   [?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[5M[1;24r[20;5Hn();
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino={s,e-s[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino={s,e-s[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
7 lines to indent...8[7Cindented [24;18H[K[23;1H    {[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hif ( k() )[24;1H[K[23;5H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[9M[1;24r[15;9H{[16;9Hl();[17;9H} else { /* Start (two words) end */[18;9Hm();[19;9H}
    n();    /* should be under the if () */
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino={s,fs[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 25C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H]]=/ foo[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino={s,fs[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1Hvoid bar(void)
{[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h foo[?25l30 lines to indent...31[7Cindented [24;19H[K[23;1H    {[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;1Hvoid func(void)
    {
    a = 1;[4;9H{[5;9Hb = 2;[6;9H}
    c = 3;
    d = 4;
    }
/* foo */

STARTTEST
:set cino=
/while
ohere[34m^[[m
ENDTEST

a()
{
  do {
    a = a +[22;7Ha;
  } while ( a );[8C/* add text under this line */[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 25C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hwhile[?25l[23;5H[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[23;3Hhere[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hif ( a )    i[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[4M[1;24r[20;7Ha;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino= com=[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 109C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H/comment
olabel2: b();[34m^M[mlabel3 /* post */:[34m^M[m/* pre */ label4:[34m^M[mf(/*com*/);[34m^M[mif (/*com*/)[34m^^[23;1HM[mcmd();[34m^[[m[24;1H[K[22;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino= com=[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hcomment[?25l[1;23r[1;1H[6M[1;24r[19;1Ha()
{
label1:[22;13H/* hmm */[23;13H// comment[24;1H[K[23;16H[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[1;1H[6M[1;24r[18;1Hlabel2: b();
label3 /* post */:
/* pre */ label4:[21;9Hf(/*com*/);[22;9Hif (/*com*/)[23;13Hcmd();[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set comments& comments^=s:/*,m:**,ex:*/[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 53C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/simple
=5j[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments& comments^=s:/*,m:**,ex:*/[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hsimple[?25l[1;23r[1;1H[3M[1;24r[22;1H/*
  * A simple comment[24;1H[K[23;7H[?12l[?25h[?25l
5 lines to indent...6[7Cindented [24;18H[K[23;2H* A simple comment[23;20H[K[23;2H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H*/[24;1H[K[23;2H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[19;1H/*
** A different comment
*/

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=c0[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 70C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=c0[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments& comments-=s1:/* comments^=s0:/*[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
4 lines to indent...5[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[18;5H/*********[19;7HA comment.
    *********/
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=c0,C1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 73C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H:set comments& comments-=s1:/* comments^=s0:/*
2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=c0,C1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments& comments-=s1:/* comments^=s0:/*[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
4 lines to indent...5[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[18;5H/*********
    A comment.
    *********/
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 17C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
5 lines to indent...6[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc = c1 &&[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[7M[1;24r[17;9H([18;10Hc2 ||[19;10Hc3[20;9H) && c4;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(s[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(s[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
5 lines to indent...6[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc = c1 &&[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[7M[1;24r[17;9H([18;10Hc2 ||[19;10Hc3[20;9H) && c4;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(s,U1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 28C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(s,U1  [?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
5 lines to indent...6[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc = c1 &&[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[7M[1;24r[17;9H([18;13Hc2 ||[19;13Hc3[20;9H) && c4;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
4 lines to indent...5[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hif (   c1[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[18;12H&& (   c2[19;19H|| c3))[20;9Hfoo;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0,w1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 28C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,w1  [?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
4 lines to indent...5[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hif (   c1[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[18;9H&& (   c2[19;13H|| c3))[20;9Hfoo;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(s[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(s[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
8 lines to indent...9[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc = c1 && ([24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[10M[1;24r[14;9Hc2 ||[15;9Hc3[16;9H) && c4;
    if ([18;9Hc1 && c2[19;8H)[20;9Hfoo;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(s,m1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 28C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(s,m1  [?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
8 lines to indent...9[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc = c1 && ([24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[10M[1;24r[14;9Hc2 ||[15;9Hc3
    ) && c4;
    if ([18;9Hc1 && c2
    )[20;9Hfoo;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=b1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=b1[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
9 lines to indent...10 lines indented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hswitch (x)[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[11M[1;24r[13;5H{[14;9Hcase 1:[15;13Ha = b;[16;9Hbreak;[17;9Hdefault:[18;13Ha = 0;[19;9Hbreak;
    }
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0,W5[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 26C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,W5[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
10 lines to indent...11[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hinvokeme([24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[12M[1;24r[12;10Hargu,[13;10Hment);
    invokeme([15;10Hargu,[16;10Hment[17;10H);
    invokeme(argu,[19;14Hment[20;13H);
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=/6[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=/6[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
3 lines to indent...4[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hstatement;[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[5M[1;24r[19;11H// comment 1[20;11H// comment 2
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 34C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H2kdd]]/comment 1/+1
==[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=[?25l[23;1H[?12l[?25h[21;1H[?25l==[21;3H[K[22;1HENDTEST[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hvoid f()
{[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hcomment 1/+1[?25l[1;23r[1;1H[3M[1;24r[21;5Hstatement;[22;8H// comment 1
    // comment 2[24;1H[K[23;4H[?12l[?25h[?25l    // comment 2[23;8H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=g0[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=g0[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hclass CAbc
{[24;1H[K[23;1H[?12l[?25h[?25l
6 lines to indent...7[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hint Test() { return FALSE; }[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[8M[1;24r[17;1Hpublic: // comment
    void testfall();
protected:
    void testfall();
};

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0,gs,hs[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 29C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,gs,hs[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hclass Foo : public Bar
{[24;1H[K[23;1H[?12l[?25h[?25l
5 lines to indent...6[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hpublic:[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[7M[1;24r[17;9Hvirtual void method1(void) = 0;[18;9Hvirtual void method2(int arg1,[19;30Hint arg2,[20;30Hint arg3) = 0;
};

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=+20[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 24C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=+20[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;5Hvoid
foo()
{[24;1H[K[23;1H[?12l[?25h[?25l
4 lines to indent...5[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hif (a)[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[6M[1;24r[18;5H{
    } else[20;9Hasdf;
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0,W2s[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 27C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd]]=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,W2s[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd]]=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H{[24;1H[K[23;1H[?12l[?25h[?25l
34 lines to indent...35[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Haverylongfunctionnamelongfunctionnameaverylongfunctionname()->asd([24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[27m[m[H[2J[1;21Hdec)->asdfasdfasdf([2;29Hasdfadsf,[3;29Hasdfasdf,[4;29Hasdfasdf,[5;29H),[6;13Hfunc(asdfadf,[7;18Hasdfasdf),[8;13Hasdasdf[9;13H);
}

STARTTEST
:set cino=M1
2kdd]]=][
ENDTEST

int main ()
{
    if (cond1 &&[20;13Hcond2[21;13H)[22;9Hfoo;
}[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=M1[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h[17;1H[?25l[24;1H4 lines to indent...5[7Cindented [24;18H[K[17;1H[?12l[?25h
   [?25l[24;1H[K[24;1H/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0,ts[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 26C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd2j=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0,ts[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd2j=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h

[?25l
7 lines to indent...8[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hvoid func(int a[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[9M[1;24r[15;1H#if defined(FOO)[16;11H, int b[17;11H, int c
#endif[19;10H)
{
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=(0[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 23C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd2j=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=(0[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd2j=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h

[?25l
8 lines to indent...9[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hvoid[24;1H[K[23;4H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[10M[1;24r[14;1Hfunc(int a
#if defined(FOO)[16;6H, int b[17;6H, int c
#endif
    )
{
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 22C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd2j=7][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino&[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd2j=7][
ENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h

[?25l
69 lines to indent...507[8Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hvoid func(void)[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[27m[m[H[2J[1;9Hint a,[2;9Hint b)
{
}[6;5Hvoid
func6([8;9Hint a)
{
}

STARTTEST
:set cino&
:set cino+=l1
2kdd2j=][
ENDTEST

void func(void)
{
    int tab[] =
    {[22;9H1, 2, 3,[23;9H4, 5, 6};[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino&[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino+=l1[?25l[16;1H[?12l[?25h[14;1H[?25l[14;23r[23;1H
[1;24r[24;1H[K[14;1H[?12l[?25h

[?25l[24;1H22 lines to indent...23[7Cindented [24;19H[K[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;13Hbreak;[2;9Hcase baz: {[3;13Hprintf("baz");[4;13Hbreak;[5;9H}[6;9Hcase quux:[7;13Hprintf("But don't break the indentation of this instruction\n");[8;13Hbreak;
    }
}

STARTTEST
:set cino&
2kdd2j=][
ENDTEST

void func(void)
{
    cout << "a"
    << "b"
    << ") :"
    << "c";
}[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 21C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino&[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h

[?25l[24;1H6 lines to indent...7[7Cindented [24;18H[K[19;5H    << "b"
        << ") :"
        << "c";[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set com=s1:/*,m:*,ex:*/[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 38C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H]]3jofoo();[34m^[[m[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset com=s1:/*,m:*,ex:*/[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1Hvoid func(void)
{[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;5H/*[22;6H* This is a comment.[23;6H*/[?12l[?25h[?25l
[1m-- INSERT --[m[24;1H[K[1;23r[23;1H
[1;24r[23;5Hfoo();[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 21C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd2j=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino&[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd2j=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h

[?25l
8 lines to indent...9[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hvoid func(void)[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[10M[1;24r[14;1H{
    for (int i = 0; i < 10; ++i)[16;9Hif (i & 1) {[17;13Hfoo(1);[18;9H} else[19;13Hfoo(0);
    baz();
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=k2s,(0[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 27C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;1H2kdd3j=][[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,(0[?25l[23;1H[?12l[?25h[21;1H[?25l2kdd3j=][[21;10H[K[22;1HENDTEST[22;8H[K[23;1H[K[21;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hvoid func(void)[24;1H[K[23;1H[?12l[?25h[?25l
23 lines to indent...24[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H{[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[27m[m[H[2J[2;5Hif (   c1[3;13H&& (      c2[4;23H|| c3))[5;9Hfoo;
    func( c1[7;11H&& (     c2[8;20H|| c3))[9;9Hfoo;
}

STARTTEST
:set cino=k2s,(s
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 27C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,(s[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H23 lines to indent...24[7Cindented [24;19H[K[19;5H        && condition2)
        action();[22;5H    && argument2);[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[2;5Hif (   c1[3;13H&& (      c2[4;17H|| c3))[5;9Hfoo;
    func(   c1[7;9H&& (      c2[8;13H|| c3))[9;9Hfoo;
}

STARTTEST
:set cino=k2s,(s,U1
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 30C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,(s,U1[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H24 lines to indent...25[7Cindented [24;19H[K[19;5H        && condition2)
        action();[22;5H    && argument2);[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;13H&& (c22345[2;17H|| c3))[3;9Hprintf("foo\n");[5;5Hc = c1 &&[6;9H([7;13Hc2 ||[8;13Hc3[9;9H) && c4;
}

STARTTEST
:set cino=k2s,(0,W4
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 30C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,(0,W4[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H29 lines to indent...30[7Cindented [24;19H[K[19;5H        && condition2)
        action();[22;5H         && argument2);[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;13H&& (   c2[2;20H|| c3))[3;9Hfoo;[5;5Ha_long_line([6;9Hargument,[7;9Hargument);
    a_short_line(argument,[9;18Hargument);
}

STARTTEST
:set cino=k2s,u2
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 27C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,u2[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H18 lines to indent...19[7Cindented [24;19H[K[19;5H        && condition2)
        action();[22;5H        && argument2);[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;9Hfoo;
    if (c1 &&[3;13H(c2 || c3))
    {
    }
    if (c123456789[7;13H&& (c22345[8;15H|| c3))[9;9Hprintf("foo\n");
}

STARTTEST
:set cino=k2s,(0,w1
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1
    && condition2)
    action();
    function(argument1
    && argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 30C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2s,(0,w1[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H27 lines to indent...28[7Cindented [24;19H[K[19;5H        && condition2)
        action();[22;5H         && argument2);[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[2;5Hif (   c1[3;13H&& (      c2[4;17H|| c3))[5;9Hfoo;
    func(   c1[7;10H&& (      c2[8;14H|| c3))[9;9Hfoo;
}

STARTTEST
:set cino=k2,(s
2kdd3j=][
ENDTEST

void func(void)
{
    if (condition1[20;7H&& condition2)[21;9Haction();
    function(argument1[23;9H&& argument2);[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 26C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=k2,(s[?25l[15;1H[?12l[?25h[13;1H[?25l[13;23r[23;1H
[1;24r[24;1H[K[13;1H[?12l[?25h


[?25l[24;1H14 lines to indent...15[7Cindented [24;19H[K[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[10M[1;24r[14;5Hif (c1 && (c2 ||[15;11Hc3))[16;9Hfoo;
    if (c1 &&[18;7H(c2 || c3))
    {
    }
}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=N-s[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 47C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/^NAMESPACESTART
=/^NAMESPACEEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=N-s[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^NAMESPACESTART[?25l[1;23r[1;1H[2M[1;24r[23;1HNAMESPACESTART[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^NAMESPACEEND[?25l61 lines to indent...5062[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;1Hnamespace test test2
{
    1111111111111111111;
}
namespace111111111
{
    111111111111111111;
}
NAMESPACEEND


STARTTEST
:set cino=j1,J1
/^JSSTART
=/^JSEND
ENDTEST

JSSTART
var bar = {
foo: {
that: this,
some: ok,
},[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSEND[?25l12 lines to indent...13[7Cindented [24;19H[K[20;1H    foo: {
        that: this,
        some: ok,
    },[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[10M[1;24r[14;5H"bar":{[15;9Ha : 2,[16;9Hb: "123abc",[17;9Hx: 4,[18;9H"y": 5
    }
}
JSEND

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=j1,J1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/^JSSTART
=/^JSEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[1;23r[1;1H[2M[1;24r[23;1HJSSTART[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^JSEND[?25l5 lines to indent...6[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[8M[1;24r[16;1Hvar foo = [
    1,
    2,
    3
];
JSEND

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=j1,J1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/^JSSTART
=/^JSEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[1;23r[1;1H[2M[1;24r[23;1HJSSTART[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^JSEND[?25l7 lines to indent...8[7Cindented [24;18H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[10M[1;24r[14;1Hfunction bar() {
    var foo = [[16;9H1,[17;9H2,[18;9H3
    ];
}
JSEND

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=j1,J1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/^JSSTART
=/^JSEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[1;23r[1;1H[2M[1;24r[23;1HJSSTART[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^JSEND[?25l58 lines to indent...509[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[27m[m[H[2J[1;21Hreturn false;[2;17H}[3;17H_arguments[0]=options;[4;17Hmethod.apply(this,_arguments);[5;13H}[6;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: [[12;1H[?12l[?25h
[?25l[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST/+-1[24;13H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSEND[?25l14 lines to indent...15[7Cindented [24;19H[K[20;1H    $(this).data(class_name+'_public',$.extend({},{
        foo: 'bar',
        bar: 2,
        foobar: [[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[12M[1;24r[12;13H1,[13;13H2,[14;13H3[15;9H],[16;9Hcallback: function(){[17;13Hreturn true;[18;9H}
    }, options||{}));
}
JSEND

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set cino=j1,J1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3L, 35C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/^JSSTART
=/^JSEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HENDTEST[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cino=j1,J1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^JSSTART[?25l[1;23r[1;1H[2M[1;24r[23;1HJSSTART[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^JSEND[?25l16 lines to indent...17[7Cindented [24;19H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[19M[1;24r[5;1H(function($){
    function init(options) {[7;9H$(this).data(class_name+'_public',$.extend({},{[8;13Hfoo: 'bar',[9;13Hbar: 2,[10;13Hfoobar: [[11;17H1,[12;17H2,[13;17H3[14;13H],[15;13Hcallback: function(){[16;17Hreturn true;[17;13H}[18;9H}, options||{}));
    }
})(jQuery);
JSEND

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:g/^STARTTEST/.,/^ENDTEST/d[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2L, 61C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST/+-1[24;13H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d[?25l216 fewer lines[24;16H[K[1;1H}[1;2H[K[2;1HJSEND[3;1H[K[4;1H[K[5;1HJSSTART[5;8H[K[6;1H(function($){[6;14H[K[7;5Hfunction init(options) {[8;9H$(this).data(class_name+'_public',$.extend({},{[9;16H: 'bar',[10;13Hbar: 2,[11;13Hfoobar: [[12;17H1,[13;13H    2,[14;13H    3[14;18H[K[15;13H],[15;17H[K[16;13Hcallback: function(){[17;9H        return true;
     [7C}
        }, options||{}));
    }
})(jQuery);
JSEND[22;6H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1;/start of AUTO/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New] 1826L, 18139C written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test4.failed test.ok test.out X* viminfo
cp test4.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test4.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test4.in" 31 lines, 839 characters[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 Xxx[13C" split to Xxx, autocmd will do :brew
G?this is a
othis should be auto-indented[34m^[[m
:[19C" Append text with autoindent to this file
:au! BufEnter Xxx
:buf Xxx[12C" go to Xxx, no autocmd anymore
G?this is a
othis should be in column 1[34m^[[m:wq " append text without autoindent to Xxx
G:r Xxx[13C" include Xxx in the current file
:?startstart?,$w! test.out
:qa!
ENDTEST[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for autocommand that changes current buffer on BufEnter event.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 557 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufEnter Xxx brew[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hstart of[?25l[1;23r[1;1H[2M[1;24r[22;1Hstartstart
start of test file Xxx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h.,/end of/w! Xxx   " write test file Xxx[?25l"Xxx" [24;7H[K[24;7H[New] 7L, 124C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ai modeline modelines=3[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xxx             " split to Xxx, autocmd will do :brew[?25l"Xxx" [24;7H[K[24;7H7L, 124C[1;1HTest for autocommand that changes current buffer on BufEnter event.
Check if modelines are interpreted for the correct buffer.[3;1H[K[4;1HSTARTTEST[4;10H[K[5;2Hso small.vim[5;14H[K[6;1H:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew[7;23H[K[8;1H/start of[8;10H[K[9;2H.,/end of/w! Xxx   " write test file Xxx[9;42H[K[10;1H:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew
[1m[7mtest4.in                                                                        [m[13;2Hbuf Xxx            " go to Xxx, no autocmd anymore
G?this is a[14;21H[K[15;1Hothis should be in column 1[34m^[[m:wq " append text without autoindent to Xxx
G:r Xxx             " include Xxx in the current file[16;54H[K[17;1H:?startstart?,$w! test.out[17;27H[K[18;2Hqa![18;5H[K[19;1HENDTEST[20;1H[K[21;1Hstartstart[22;6H of test file Xxx
[7mtest4.in                                                                        [m[24;2Htest4.in" line 1 of 31 --3%-- col 1[1;1H[?12l[?25h[?25l:qa![1;6H[K[2;1HENDTEST[2;8H[K[4;1Hstartstart
start of test file Xxx
vim: set noai :[6;16H[K[7;1H        this is a test
        this is a test
        this is a test[9;23H[K[10;1H        this is a test[10;23H[K[11;1Hend of test file Xxx[11;21H[K[11;1H[?12l[?25h[?25l[24;1H[K[24;1H?[?12l[?25hthis is a[?25l[10;9H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[11;1H        this should be auto-indented[12;10H[1m[7m[+][m[23;10H[7m[+][11;36H[?12l[?25h[?25l[1;11r[m[11;1H
[1;24r[11;1Hend of test file Xxx[?12l[?25h[?25l[24;1H:[?12l[?25h                   " Append text with autoindent to this file[?25l[11;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau! BufEnter Xxx[?25l[11;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbuf Xxx            " go to Xxx, no autocmd anymore[?25l"Xxx" [24;7H[K[24;7H7L, 124C[1;1Hstart of test file Xxx
vim: set noai :
        this is a test
        this is a test
        this is a test

end of test file Xxx[7;21H[K[8;1H[1m[34m~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXxxt          [1;1H[?12l[?25h[7;1H[?25l[m[24;1H[K[24;1H?[?12l[?25hthis is a[?25l[6;9H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[7;11r[7;1H[L[1;24r[7;1Hthis should be in column 1[12;5H[1m[7m[+][7;26H[?12l[?25h[?25l[24;1H[m:[?12l[?25hwq " append text without autoindent to Xxx[?25l"Xxx[24;7H[K[24;7H8L, 151C written[1;1H[K[2;1HSTARTTEST[2;10H[K[3;1H:so small.vim[3;14H[K[4;1H:set nocompatible viminfo+=nviminfo
:au BufEnter Xxx brew[5;22H[K[6;1H/start of[6;10H[K[7;1H:.,/end of/w! Xxx   " write test file Xxx
:set ai modeline modelines=3
:sp Xxx             " split to Xxx, autocmd will do :brew[9;58H[K[10;1HG?this is a[10;12H[K[11;1Hothis should be auto-indented[34m^[[m[11;32H[K[12;1H:                   " Append text with autoindent to this file[12;63H[K[13;2Hau! BufEnter Xxx[13;21H[K[14;1H:buf Xxx   [9C" go to Xxx, no autocmd anymore
G?this is a[15;12H[K[16;1Hothis should be in column 1[34m^[[m:wq " append text without autoindent to Xxx
G:r Xxx             " include Xxx in the current file
:?startstart?,$w! test.out
:qa![19;5H[K[20;1HENDTEST[21;1H[K[22;6Hstar[22;11H[K[23;1Hstart of test file Xxx[23;23H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[7M[1;24r[17;1Hvim: set noai :[18;9Hthis is a test[19;9Hthis is a test[20;9Hthis is a test[21;9Hthis is a test[22;9Hthis should be auto-indented
end of test file Xxx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hr Xxx             " include Xxx in the current file[?25l"Xxx" [24;20H[K[24;7H8L, 151C[1;23r[23;1H
[1;24r[23;1Hstart of test file Xxx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h?startstart?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 17L, 316C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test5.failed test.ok test.out X* viminfo
cp test5.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test5.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test5.in" 29 lines, 949 characters[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! Xxx[15C" write test file Xxx
:sp Xxx[25C" split to Xxx
:bwipe[26C" delete buffer Xxx, now we're back here
G?this is a
othis is some more text[34m^[[m
:[31C" Append some text to this file
:?start?,$w! test.out[11C" Write current file contents
:bwipe test.out[17C" delete alternate buffer
:au bufleave test5.in bwipe
:bwipe![25C" delete current buffer, get an empty one
ithis is another test line[34m^[[m:w >>test.out
:[31C" append an extra line to the output file
:qa!
ENDTEST

start of test file Xxx[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for autocommand that deletes the current buffer on BufLeave event.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 16 lines, 664 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufLeave Xxx bwipe[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hstart of[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx               " write test file Xxx[?25l"Xxx" [24;7H[K[24;7H[New File] 7 lines, 124 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xxx                         " split to Xxx[?25l"Xxx" [24;7H[K[24;7H7 lines, 124 characters[1;1Hstart of test file Xxx[1;23H[K[2;1Hvim: set noai :[2;16H[K[3;9Hthis is a test
        this is a test
        this is a test
        this is a test
end of test file Xxx
[1m[34m~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXxx                                                                             [m[13;2H?start?,$w! test.out[13CWrite current file contents[13;62H[K[14;2Hbwipe test.out      [13Cdelete alternate buffer[14;58H[K[15;2Hau bufleave test5.in bwipe[15;33H[K[16;2Hbwipe!                         " delete current buffer, get an empty one
ithis is another test line[34m^[[m:w >>test.out[17;42H[K[18;1H:                               " append an extra line to the output file
:qa![19;33H[K[20;1HENDTEST[21;1H[K[22;1Hstart of test file Xxx
[7mtest5.in                                                                        [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hbwipe                          " delete buffer Xxx, now we're back here[?25l[1;1HTest for autocommand that deletes the current buffer on BufLeave event.
Also test deleting the last buffer, should give a new, empty buffer.[3;9H[K[4;1HSTARTTEST[4;10H[K[5;1H:so small.vim[5;14H[K[6;1H:au BufLeave Xxx bwipe
/start of[7;10H[K[8;1H:.,/end of/w! Xxx               " write test file Xxx[8;54H[K[9;1H:sp Xxx                         " split to Xxx[9;47H[K[10;1H:bwipe                          " delete buffer Xxx, now we're back here[10;73H[K[11;1HG?this is a[11;12H[K[12;1Hothis is some more text[34m^[[m[12;26H[K[13;2H                    [13CAppend some text to this file
:?start?,$w! test.out[13CWrite current file contents
:bwipe test.out                 " delete alternate buffer
:au bufleave test5.in bwipe[16;33H[K[17;1H:bwipe!                         " delete current buffer, get an empty one
ithis is another test line[34m^[[m:w >>test.out[18;42H[K[19;2H   [28C" append an extra line to the output file
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1Hstart of test file Xxx[23;23H[K[24;1H"test5.in" line 23 of 29 --79%-- col 1[24;39H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[6M[1;24r[18;1Hvim: set noai :[19;9Hthis is a test[20;9Hthis is a test[21;9Hthis is a test[22;9Hthis is a test
end of test file Xxx[24;1H[K[23;1H[?12l[?25h[?25l
?[?12l[?25hthis is a[?25l[22;9H[?12l[?25h[?25l
this is some more text[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hend of test file Xxx[24;1H[K[23;20H[?12l[?25h[?25l
:[?12l[?25h                               " Append some text to this file[?25l[23;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?start?,$w! test.out           " Write current file contents[?25l"test.out" [24;12H[K[24;12H[New File] 8 lines, 147 characters written[23;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe test.out                 " delete alternate buffer[?25l[23;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau bufleave test5.in bwipe[?25l[23;20H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe!                         " delete current buffer, get an empty one[?25l[1m[37m[41mError detected while processing BufLeave Auto commands for "test5.in":[m[24;71H[K[24;1H
[1m[37m[41mE89: No write since last change for buffer 1 (add ! to override)[m
[32mPress ENTER or type command to continue[?12l[?25h[m[1;1H[2L[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25lthis is another test line[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 26 characters appended[1;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h                               " append an extra line to the output file[?25l[1;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test6.failed test.ok test.out X* viminfo
cp test6.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test6.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test6.in" 24 lines, 739 characters[1;1HTest for autocommand that redefines the argument list, when doing ":all".

STARTTEST
:so small.vim
:au BufReadPost Xxx2 next Xxx2 Xxx1
/^start of
A1[34m^[[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
:all[22C" open window for all args
:w! test.out[14C" Write contents of Xxx1
[34m^W^W^W^W[m:w >>test.out     " Append contents of last window (Xxx1)
:rew[22C" should now be in Xxx2
:w >>test.out[13C" Append contents of Xxx2
:qa!
ENDTEST

start of test file Xxx[20;9Hthis is a test[21;9Hthis is a test[22;9Hthis is a test[23;9Hthis is a test[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for autocommand that redefines the argument list, when doing ":all".[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 13 lines, 537 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[17;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPost Xxx2 next Xxx2 Xxx1[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of[?25l[19;1H[?12l[?25h[?25l[22C1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx1    " write test file Xxx1[?25l"Xxx1" [24;9H[K[24;8H[New File] 6 lines, 109 characters written[19;23H[?12l[?25h[?25l2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx2     " write test file Xxx2[?25l"Xxx2" [24;9H[K[24;8H[New File] 6 lines, 109 characters written[19;23H[?12l[?25h[?25l3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx3     " write test file Xxx3[?25l"Xxx3" [24;9H[K[24;8H[New File] 6 lines, 109 characters written[19;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnext! Xxx1 Xxx2 Xxx3     " redefine arglist; go to Xxx1[?25l"Xxx1"[24;8H[K[24;8H6 lines, 109 characters[1;1Hstart of test file Xxx1[1;24H[K[2;9Hthis is a test
        this is a test
        this is a test
        this is a test[5;23H[K[6;1Hend of test file Xxx
[1m[34m~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hall                      " open window for all args[?25l"Xxx2"[24;27H[K[24;8H6 lines, 109 characters
"Xxx2" 6 lines, 109 characters
"Xxx1" line 1 of 6 --16%-- col 1 (file (3) of 2)
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out              " Write contents of Xxx1[?25l"test.out" [24;12H[K[24;12H[New File] 6 lines, 109 characters written
[32mPress ENTER or type command to continue[?12l[?25h[27m[m[H[2J[?25l[1;1Hstart of test file Xxx1[2;9Hthis is a test[3;9Hthis is a test[4;9Hthis is a test[5;9Hthis is a test
end of test file Xxx
[1m[34m~                                                                               [m[8;1H[1m[7mXxx1                                                                            [m[9;1Hstart of test file Xxx2[10;9Hthis is a test[11;9Hthis is a test[12;9Hthis is a test[13;9Hthis is a test
end of test file Xxx
[7mXxx2                                                                            [m[16;1Hstart of test file Xxx1[17;9Hthis is a test[18;9Hthis is a test[19;9Hthis is a test[20;9Hthis is a test
end of test file Xxx
[1m[34m~                                                                               [m[23;1H[7mXxx1                                                                            [1;1H[?12l[?25h[8;1HXxx1[m[1m[7m [m[7m                                                                            [m[15;1H[1m[7mXxx2                                                                            [9;1H[m[15;1H[7mXxx2[m[1m[7m [m[7m                                                                            [m[23;1H[1m[7mXxx1                                                                            [16;1H[?25l[24;1H[m:[?12l[?25hw >>test.out     " Append contents of last window (Xxx1)[?25l"test.out" [24;12H[K[24;12H6 lines, 109 characters appended[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hrew                      " should now be in Xxx2[?25l"Xxx2" line 1 of 6 --16%-- col 1 (file 1 of 2)[24;47H[K[16;23H2[23;4H[1m[7m2 [16;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out             " Append contents of Xxx2[?25l"test.out" [24;12H[K[24;12H6 lines, 109 characters appended[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test7.failed test.ok test.out X* viminfo
cp test7.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test7.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test7.in" 26 lines, 675 characters[1;1HTest for autocommand that changes the buffer list, when doing ":ball".

STARTTEST
:so small.vim
/^start of
A1[34m^[[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:ball[17C" open window for all args, close Xxx2
:.,$w! test.out[10C" Write contents of this file
[34m^W^W[m:w >>test.out[8C" Append contents of second window (Xxx1)
[34m^W^W[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for autocommand that changes the buffer list, when doing ":ball".[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 508 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of[?25l[23;1H[?12l[?25h[?25l[22C1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx1   " write test file Xxx1[?25l"Xxx1" [24;9H[K[24;8H[New File] 4 lines, 77 characters written[23;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xxx1[?25l"Xxx1" [24;8H[K[24;8H4 lines, 77 characters[1;1Hstart of test file Xxx1[1;24H[K[2;9Hthis is a test
        this is a test
end of test file Xxx
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXxx1                                                                            [m[13;2Hclose[13;7H[K[14;2Hau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.out[12CWrite contents of this file[16;55H[K[17;1H[34m^W^W[m:w >>test.out[10CAppend contents of second window (Xxx1)[18;6H/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![19;5H[K[20;1HENDTEST[21;1H[K[22;1Hstart of test file Xxx1
[7mtest7.in [+]                                                                    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1HTest for autocommand that changes the buffer list, when doing ":ball".[2;9H[K[3;1HSTARTTEST[3;10H[K[4;1H:so small.vim[4;14H[K[5;1H/^start of[5;11H[K[6;1HA1[34m^[[m:.,/end of/w! Xxx1   " write test file Xxx1[6;48H[K[7;1H:sp Xxx1[7;9H[K[8;1H:close[8;7H[K[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2[9;48H[K[10;1H:sp Xxx2[10;9H[K[11;1H:close[11;7H[K[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3[12;48H[K[13;2Hsp Xxx3
:close[14;7H[K[15;1H:au BufReadPost Xxx2 bwipe[15;28H[K[16;1H$r4:ball       [12Copen window for all args, close Xxx2
:.,$w! test.out  [10CWrite contents of this file[17;55H[K[18;6Hw >>test.out        " Append contents of second window (Xxx1)[18;67H[K[19;1H[34m^W^W[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1Hstart of test file Xxx1[23;24H[K[23;23H[?12l[?25h[?25l2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx2    " write test file Xxx2[?25l"Xxx2" [24;9H[K[24;8H[New File] 4 lines, 77 characters written[23;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xxx2[?25l"Xxx2" [24;8H[K[24;8H4 lines, 77 characters[1;1Hstart of test file Xxx2[1;24H[K[2;9Hthis is a test
        this is a test
end of test file Xxx
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXxx2                                                                            [m[13;2Hclose[13;7H[K[14;2Hau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.out[12CWrite contents of this file[16;55H[K[17;1H[34m^W^W[m:w >>test.out[10CAppend contents of second window (Xxx1)[18;6H/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![19;5H[K[20;1HENDTEST[21;1H[K[22;1Hstart of test file Xxx2
[7mtest7.in [+]                                                                    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1HTest for autocommand that changes the buffer list, when doing ":ball".[2;9H[K[3;1HSTARTTEST[3;10H[K[4;1H:so small.vim[4;14H[K[5;1H/^start of[5;11H[K[6;1HA1[34m^[[m:.,/end of/w! Xxx1   " write test file Xxx1[6;48H[K[7;1H:sp Xxx1[7;9H[K[8;1H:close[8;7H[K[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2[9;48H[K[10;1H:sp Xxx2[10;9H[K[11;1H:close[11;7H[K[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3[12;48H[K[13;2Hsp Xxx3
:close[14;7H[K[15;1H:au BufReadPost Xxx2 bwipe[15;28H[K[16;1H$r4:ball       [12Copen window for all args, close Xxx2
:.,$w! test.out  [10CWrite contents of this file[17;55H[K[18;6Hw >>test.out        " Append contents of second window (Xxx1)[18;67H[K[19;1H[34m^W^W[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1Hstart of test file Xxx2[23;24H[K[23;23H[?12l[?25h[?25l3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx3    " write test file Xxx3[?25l"Xxx3" [24;9H[K[24;8H[New File] 4 lines, 77 characters written[23;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xxx3[?25l"Xxx3" [24;8H[K[24;8H4 lines, 77 characters[1;1Hstart of test file Xxx3[1;24H[K[2;9Hthis is a test
        this is a test
end of test file Xxx
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXxx3                                                                            [m[13;2Hclose[13;7H[K[14;2Hau BufReadPost Xxx2 bwipe
$r4:ball                 " open window for all args, close Xxx2
:.,$w! test.out[12CWrite contents of this file[16;55H[K[17;1H[34m^W^W[m:w >>test.out[10CAppend contents of second window (Xxx1)[18;6H/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![19;5H[K[20;1HENDTEST[21;1H[K[22;1Hstart of test file Xxx3
[7mtest7.in [+]                                                                    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1HTest for autocommand that changes the buffer list, when doing ":ball".[2;9H[K[3;1HSTARTTEST[3;10H[K[4;1H:so small.vim[4;14H[K[5;1H/^start of[5;11H[K[6;1HA1[34m^[[m:.,/end of/w! Xxx1   " write test file Xxx1[6;48H[K[7;1H:sp Xxx1[7;9H[K[8;1H:close[8;7H[K[9;1H$r2:.,/end of/w! Xxx2    " write test file Xxx2[9;48H[K[10;1H:sp Xxx2[10;9H[K[11;1H:close[11;7H[K[12;1H$r3:.,/end of/w! Xxx3    " write test file Xxx3[12;48H[K[13;2Hsp Xxx3
:close[14;7H[K[15;1H:au BufReadPost Xxx2 bwipe[15;28H[K[16;1H$r4:ball       [12Copen window for all args, close Xxx2
:.,$w! test.out  [10CWrite contents of this file[17;55H[K[18;6Hw >>test.out        " Append contents of second window (Xxx1)[18;67H[K[19;1H[34m^W^W[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1Hstart of test file Xxx3[23;24H[K[23;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPost Xxx2 bwipe[?25l[23;23H[?12l[?25h[?25l4[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hball                 " open window for all args, close Xxx2[?25l"Xxx1"[24;23H[K[24;8H4 lines, 77 characters
"Xxx2" 4 lines, 77 characters
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.,$w! test.out          " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 77 characters written
[32mPress ENTER or type command to continue[?12l[?25h[27m[m[H[2J[?25l[1;1H:close
:au BufReadPost Xxx2 bwipe
$r4:ball[17C" open window for all args, close Xxx2
:.,$w! test.out[10C" Write contents of this file
[34m^W^W[m:w >>test.out[8C" Append contents of second window (Xxx1)
[34m^W^W[m:/^start of/,$w >>test.out   " Append contents of last window (this file)
:qa!
ENDTEST

start of test file Xxx4
[1m[7mtest7.in [+]                                                                    [m[12;1Hstart of test file Xxx1[13;9Hthis is a test[14;9Hthis is a test
end of test file Xxx
[1m[34m~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[7mXxx1                                                                            [10;23H[?12l[?25h
test7.in [+][m[1m[7m [m[7m                                                                    [m[23;1H[1m[7mXxx1                                                                            [12;1H[?25l[24;1H[m:[?12l[?25hw >>test.out        " Append contents of second window (Xxx1)[?25l"test.out" [24;12H[K[24;12H4 lines, 77 characters appended[12;1H[?12l[?25h[11;1H[1m[7mtest7.in [+]                                                                    [m[23;1H[7mXxx1[m[1m[7m [m[7m                                                                            [10;23H[?25l[m[24;1H[K[24;1H:[?12l[?25h/^start of/,$w >>test.out   " Append contents of last window (this file)[?25l[31msearch hit BOTTOM, continuing at TOP[m[24;37H[K[24;1H"test.out" [24;12H[K[24;12H4 lines, 77 characters appended[10;23H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test8.failed test.ok test.out X* viminfo
cp test8.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test8.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test8.in" 46 lines, 1236 characters[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
A1[34m^[[m:.,/end of/w! Xxx1  " write test file Xxx1
$r2:.,/end of/w! Xxx2   " write test file Xxx2
:e! Xxx2[16C" edit Xxx2
:bdel test8.in[10C" delete this file from the buffer list
:e Xxx1[17C" edit Xxx1
:w[22C" write it, will unload it and give an error msg
:w! test.out[12C" Write contents of this file
:e! Xxx2[16C" start editing Xxx2
:bwipe test.out[9C" remove test.out from the buffer list
:w[22C" write it, will delete the buffer and give an error msg[19;1H:w >>test.out[11C" Append contents of this file
:au! BufWritePre
:func CloseAll()
  let i = 0
  while i <= bufnr('$')[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for BufWritePre autocommand that deletes or unloads the buffer.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 37 lines, 1054 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[19M[1;24r[5;5Hif i != bufnr('%') && bufloaded(i)[6;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[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufWritePre Xxx1 bunload[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufWritePre Xxx2 bwipe[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of[?25l[1;23r[23;1H
[1;24r[23;1Hstart of Xxx[24;1H[K[23;1H[?12l[?25h[?25l[12C1[?12l[?25h[?25l
:[?12l[?25h.,/end of/w! Xxx1  " write test file Xxx1[?25l"Xxx1" [24;9H[K[24;8H[New File] 3 lines, 31 characters written[23;13H[?12l[?25h[?25l2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/end of/w! Xxx2   " write test file Xxx2[?25l"Xxx2" [24;9H[K[24;8H[New File] 3 lines, 31 characters written[23;13H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xxx2                " edit Xxx2[?25l"Xxx2" [24;8H[K[24;8H3 lines, 31 characters[1;1Hstart of Xxx2
        test[2;14H[K[3;1Hend of Xxx[3;11H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hbdel test8.in[34m^I^I[m" delete this file from the buffer list[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xxx1                 " edit Xxx1[?25l"Xxx1" [24;25H[K[24;8H3 lines, 31 characters[1;13H1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw                      " write it, will unload it and give an error msg[?25l"Xxx2"[24;25H[K[24;8H3 lines, 31 characters
[1m[37m[41mE203: Autocommands deleted or unloaded buffer to be written[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out            " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 3 lines, 31 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he! Xxx2                " start editing Xxx2[?25l"Xxx2" [24;8H[K[24;8H3 lines, 31 characters[1;1H[3L[1;1Hstart of Xxx2[2;9Htest
end of Xxx[24;1H[K[24;1H"Xxx2" 3 lines, 31 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe test.out         " remove test.out from the buffer list[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw                      " write it, will delete the buffer and give an error ms
[23;80Hg[24;1H[?25l[23;1H"Xxx1"[23;25H[K[23;8H3 lines, 31 characters
[1m[37m[41mE203: Autocommands deleted or unloaded buffer to be written[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out           " Append contents of this file[?25l"test.out" [24;12H[K[24;12H3 lines, 31 characters appended
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau! BufWritePre[?25l[1;1H[3L[1;1Hstart of Xxx1[2;9Htest
end of Xxx[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfunc CloseAll()[?25l
:  [?12l[?25h  let i = 0
[?25l:  [?12l[?25h  while i <= bufnr('$')
[?25l:    [?12l[?25h    if i != bufnr('%') && bufloaded(i)
[?25l:      [?12l[?25h      exe  i . "bunload"
[?25l:      [?12l[?25h    endif
[?25l:    [?12l[?25h    let i += 1
[?25l:    [?12l[?25h  endwhile
[?25l:  [?12l[?25hendfunc[1;1H[8L[?25l[1;1Hstart of Xxx1[2;9Htest
end of Xxx
[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfunc WriteToOut()[?25l
:  [?12l[?25h  edit! test.out
[?25l:  [?12l[?25h  $put ='VimLeave done'
[?25l:  [?12l[?25h  write
[?25l:  [?12l[?25hendfunc[1;1H[4L[?25l[1;1Hstart of Xxx1[2;9Htest
end of Xxx
[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset viminfo='100,nviminfo[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufUnload * call CloseAll()[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau VimLeave * call WriteToOut()[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he small.vim[?25l[1m[37m[41mError detected while processing function CloseAll:[m
[33mline    4:[m
[1m[37m[41mE515: No buffers were unloaded: 0bunload[m
"small.vim" 1 line, 1 character
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsp mbyte.vim[?25l"mbyte.vim" [24;13H[K[24;13H0 lines, 0 characters[1;1H[4L[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [m[12;1H[1m[7mmbyte.vim                                                                       [m[13;1H[K[23;1H[7msmall.vim                                                                       [m[24;1H[K[24;1H"mbyte.vim" 0 lines, 0 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq[?25l[1m[37m[41mError detected while processing function CloseAll:[m
[33mline    4:[m
[1m[37m[41mE515: No buffers were unloaded: 0bunload[m
"test.out" 6 lines, 62 characters
"test.out" 7 lines, 76 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test9.failed test.ok test.out X* viminfo
cp test9.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test9.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test9.in" 12 lines, 255 characters[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
[1m[34m~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for Bufleave autocommand that deletes the buffer we are about to edit.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 5 lines, 117 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[9;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufLeave test9.in bwipe yy[?25l[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he yy[?25l[1m[37m[41mE143: Autocommands unexpectedly deleted new buffer yy[10;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h/^start of/,$w! test.out      " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 2 lines, 42 characters written[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test10.failed test.ok test.out X* viminfo
cp test10.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test10.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test10.in" 114 lines, 3080 characters[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
lgR[34m^R[m=a[34m^M^[[m
:cf Xerrorfile1
grA
:cn
gRLINE 6, COL 19[34m^[[m
:cn[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for 'errorformat'.  This will fail if the quickfix feature was disabled.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 50 lines, 801 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:cn
gR. TAB-SPACE POINTER[34m^[[m
:clast
:cprev
:cprev
:wincmd w
:let a=w:quickfix_title
:wincmd p
lgR[34m^R[m=a[34m^M^[[m
:w! test.out[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.c
Xtestfile:9: parse error before `asd'
make: *** [vim] Error 1
in file "Xtestfile" linenr 10: there is an error

2 returned
"Xtestfile", line 11 col 1; this is an error[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Also test a BOM is ignored.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=utf-8[?25l[27m[m[H[2J[1;1H:cn
gR. TAB-SPACE POINTER[34m^[[m
:clast
:cprev
:cprev
:wincmd w
:let a=w:quickfix_title
:wincmd p
lgR[34m^R[m=a[34m^M^[[m
:w! test.out[13C" Write contents of this file
:qa!
ENDTEST

start of errorfile
"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
[34m<feff>[m"Xtestfile", line 6 col 19; this is an error
gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
Xtestfile:9: parse error before `asd'
make: *** [vim] Error 1
in file "Xtestfile" linenr 10: there is an error

2 returned
"Xtestfile", line 11 col 1; this is an error[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h7/start of errorfile/,/end of errorfile/w! Xerrorfile1[?25l"Xerrorfile1" [24;15H[K[24;15H[New File] 83 lines, 1974 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2[?25l"Xerrorfile2" [24;15H[K[24;15H[New File] 82 lines, 1957 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/start of testfile/,/end of testfile/w! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[New File] 23 lines, 937 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcf Xerrorfile2[?25l"Xtestfile" [24;13H[K[24;13H23 lines, 937 characters
(50 of 70): 1506-045 (S) Undeclared identifier fd_set.
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hclast[?25l(70 of 70): What is the title of the quickfix window?
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcopen[?25l[1;1H[3L[1;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12[2;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13[3;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 14
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 15
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 21[10;51H[K[11;1H        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22
[7mXtestfile                                                                       [m[13;1HXtestfile|18 col 14|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[14;1H8[14;2H[K[15;1HXtestfile|19 col 15|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[16;1H9[16;2H[K[17;1HXtestfile|20 col 16|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22[18;1H0[18;2H[K[19;1H|| [19;4H[K[20;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?
[30m[43mXtestfile|22 col 9| What is the title of the quickfix window?                   [m[23;1H[1m[7m[Quickfix List]                                                                 [m[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hlet a=w:quickfix_title[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;1H[1m[7mXtestfile                                                                       [m[23;1H[7m[Quickfix List][m[1m[7m [m[7m                                                                 [11;16H[?12l[?25h[mx[?25l[24;1H[K[24;1H=[?12l[?25ha[?25l[11;17H:cf Xerrorfile2[12;11H[1m[7m[+][11;31H[?12l[?25h[?25l[1;11r[m[11;1H
[1;24r[11;1Hend of testfile[24;1H[K[11;15H[?12l[?25h[?25l[24;1H:[?12l[?25hcf Xerrorfile1[?25l[1;1Hstart of testfile[1;18H[K[2;48H 2[3;48H 3[4;48H 4[5;48H 5[6;48H 6[7;48H 7[8;48H 8[9;48H 9[10;17Hxxxxxxxxxxxxxxx[16C10
        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11

|| :qa![13;8H[K[14;1H|| ENDTEST
|| [15;4H[K[16;1H|| start of errorfile
[30m[43mXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set.                  [m[18;1HXtestfile|6 col 19| this is an error
|| gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
Xtestfile|9| parse error before `asd'[20;38H[K[21;1H|| make: *** [vim] Error 1[21;27H[K[22;1HXtestfile|10| there is an error[22;32H[K[4;19H[?12l[?25h[?25lA[?12l[?25h[5;19H[?25l[24;1H[K[24;1H:[?12l[?25hcn[?25l[17;1HXtestfile|4 col 12| 1506-045 (S) Undeclared identifier fd_set.[17;63H[K[18;1H[30m[43mXtestfile|6 col 19| this is an error                                            [6;26H[?12l[?25h[?25l[mLINE 6, COL 19[?12l[?25h[7;39H[?25l[24;1H[K[24;1H:[?12l[?25hcn[?25l[18;1HXtestfile|6 col 19| this is an error[18;37H[K[20;1H[30m[43mXtestfile|9| parse error before `asd'                                           [9;9H[?12l[?25h[?25l[mNO COLUMN SPECIFIED[?12l[?25h[10;27H[?25l[24;1H[K[24;1H:[?12l[?25hcn[?25l[20;1HXtestfile|9| parse error before `asd'[20;38H[K[22;1H[30m[43mXtestfile|10| there is an error                                                 [10;9H[?12l[?25h[?25l[mAGAIN NO COLUMN[?12l[?25h[11;23H[?25l[24;1H[K[24;1H:[?12l[?25hcn[?25l[13;22r[13;1H[3M[1;24r[19;1HXtestfile|10| there is an error[19;32H[K[20;1H||
|| 2 returned
[30m[43mXtestfile|11 col 1| this is an error                                            [m[24;1H[K[11;8H[?12l[?25h[?25lCOL 1[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 12[11;8H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[22;1H
[1;24r[21;1HXtestfile|11 col 1| this is an error[21;37H[K[22;1H[30m[43mXtestfile|12 col 2| this is another error                                       [m[24;1H[K[11;9H[?12l[?25h[?25lCOL 2[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 13[11;13H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 14[13;22r[22;1H
[1;24r[21;1HXtestfile|12 col 2| this is another error[21;42H[K[22;1H[30m[43mXtestfile|14 col 10| this is an error in column 10                              [m[24;1H[K[11;17H[?12l[?25h[?25lCOL 10[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 15[11;22H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[22;1H
[1;24r[21;1HXtestfile|14 col 10| this is an error in column 10[21;51H[K[22;1H[30m[43mXtestfile|15 col 10| this is another error, but in vcol 10 this time            [m[24;1H[K[11;10H[?12l[?25h[?25lVCOL 10[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 16[11;16H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[22;1H
[1;24r[21;1HXtestfile|15 col 10| this is another error, but in vcol 10 this time[21;69H[K[22;1H[30m[43mXtestfile|16| yet another problem                                               [m[24;1H[K[11;9H[?12l[?25h[?25lI[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 17[11;9H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[13;1H[2M[1;24r[20;1HXtestfile|16| yet another problem[20;34H[K[21;1H[30m[43mXtestfile|17 col 13|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[22;1H7                                                                               [m[24;1H[K[11;13H[?12l[?25h[?25l. SPACE POINTER[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 18[11;27H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[13;1H[2M[1;24r[19;1HXtestfile|17 col 13|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[20;1H7[20;2H[K[21;1H[30m[43mXtestfile|18 col 14|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[22;1H8                                                                               [m[24;1H[K[11;14H[?12l[?25h[?25l. DOT POINTER[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 19[11;26H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[13;1H[2M[1;24r[19;1HXtestfile|18 col 14|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[20;1H8[20;2H[K[21;1H[30m[43mXtestfile|19 col 15|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[22;1H9                                                                               [m[24;1H[K[11;15H[?12l[?25h[?25l. DASH POINTER[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 20[11;28H[?12l[?25h[?25l[24;1H:[?12l[?25hcn[?25l[13;22r[13;1H[2M[1;24r[19;1HXtestfile|19 col 15|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 11[20;1H9[20;2H[K[21;1H[30m[43mXtestfile|20 col 16|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22[22;1H0                                                                               [m[24;1H[K[11;16H[?12l[?25h[?25l. TAB-SPACE POINTER[?12l[?25h[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 21[11;34H[?12l[?25h[?25l[24;1H:[?12l[?25hclast[?25l[13;22r[13;1H[6M[1;24r[15;1HXtestfile|20 col 16|  x should be a dot xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx    line 22[16;1H0[16;2H[K[17;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?
[30m[43m|| end of errorfile                                                             [m[22;1H[1m[34m~                                                                               [m[24;1H[K[11;9H[?12l[?25h[?25l[24;1H:[?12l[?25hcprev[?25l[1;11r[11;1H
[1;24r[11;9Hxxxxxxxx:cf Xerrorfile2xxxxxxx    line 22[20;1H[30m[43mXtestfile|22 col 9| What is the title of the quickfix window?                   [m[21;1H|| end of errorfile[21;20H[K[24;1H[K[11;16H[?12l[?25h[?25l[24;1H:[?12l[?25hcprev[?25l[19;1H[30m[43mXtestfile|21 col 9| What is the title of the quickfix window?                   [m[20;1HXtestfile|22 col 9| What is the title of the quickfix window?[20;62H[K[10;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd w[?25l[12;1H[7mXtestfile [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[Quickfix List]                                                                 [19;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet a=w:quickfix_title[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;1H[1m[7mXtestfile [+]                                                                   [m[23;1H[7m[Quickfix List][m[1m[7m [m[7m                                                                 [10;16H[?12l[?25h[mx[?25l[24;1H[K[24;1H=[?12l[?25ha[?25l[10;17H:cf Xerrorfile1[?12l[?25h[11;31H[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out             " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 23 lines, 942 characters written[12;11H[1m[7m    [11;31H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test11.failed test.ok test.out X* viminfo
cp test11.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test11.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test11.in" 84 lines, 3345 characters[1;1HTests for autocommands:
- FileWritePre[10Cwriting a compressed file
- FileReadPost[10Creading a compressed file
- BufNewFile[12Creading a file template
- BufReadPre[12Cdecompressing the file to be read
- FilterReadPre[9Csubstituting characters in the temp file
- FilterReadPost[8Csubstituting characters after filtering
- FileReadPre[11Cset options for decompression
- FileReadPost[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for autocommands:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 48 lines, 2277 characters written[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[17;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:23,$s/\r$//[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.gz[13C" Read compressed file
:w[27C" write it, after filtering
:au![13C" remove all autocommands
:e[15C" Edit test.out again
:set nobin ff&   " use the default fileformat for writing
:w
:qa!
ENDTEST

startstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 4  Abcdefghijklmnopqrstuvwxyz
line 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 6  Abcdefghijklmnopqrstuvwxyz
line 7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 8  Abcdefghijklmnopqrstuvwxyz
line 9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" drop out when there is no gzip program[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !executable("gzip")[?25l
:  [?12l[?25h: e! test.ok
[?25l:  [?12l[?25h: w! test.out
[?25l:  [?12l[?25h: qa!
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:23,$s/\r$//[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/[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet $GZIP = ""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FileChangedShell * echo "caught FileChangedShell"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FileWritePre    *.gz   '[,']!gzip[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FileWritePost   *.gz   undo[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestfile.gz[?25l[?12l[?25h[?25l11 lines filtered[24;18H[K[24;1H
"Xtestfile.gz" [New File][Incomplete last line] 1 line, 111 characters written
10 more lines; before #1  1 seconds ago
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau FileReadPost    *.gz   '[,']!gzip -d[?25l[1;1H[3L[1;1H:au  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))
:au! FileReadPost   *.gz   '[,']s/l/L/
:$r Xtestfile.gz[13C" Read compressed file
:w                           " write it, after filtering
:au!             " remove all autocommands[5;43H[K[6;2He[15C" Edit test.out again[6;39H[K[7;2Hset nobin ff&   " use the default fileformat for writing
:w[8;18H[K[9;2Hqa![9;6H[K[10;1HENDTEST[11;1H[K[12;1Hstartstart
start of testfile
line 2  Abcdefghijklmnopqrstuvwxyz
line 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[16;6H4[17;6H5[18;6H6[19;6H7[20;6H8[21;6H9[22;6H10
end of testfile[23;16H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtestfile.gz                " Read and decompress the testfile[?25l"Xtestfile.gz" [24;16H[K[24;16H[Incomplete last line] 1 line, 111 characters[?12l[?25h[60C[?25l[1;23r[1;1H[7M[1;24r[18;1Hstart of test.c
/*
 * Here is a new .c file
 */
end of test.c
start of testfile[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h?startstart?,$w! test.out      " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 29 lines, 788 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufNewFile      *.c    read Xtest.c[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of test.c/+1,/^end of test.c/-1w! Xtest.c[?25l[31msearch hit BOTTOM, continuing at TOP[m[24;37H[K[24;1H"Xtest.c" [24;11H[K[24;11H[New File] 3 lines, 32 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! foo.c                       " Will load Xtest.c[?25l"foo.c" [New File][24;33H[K[24;1H
"Xtest.c" 3 lines, 32 characters
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau FileAppendPre   *.out  '[,']s/new/NEW/[?25l[1;1H[2L[2;1H/*
 * Here is a new .c file
 */
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hau FileAppendPost  *.out  !cat Xtest.c >>test.out[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw>>test.out                    " Append it to the output file[?25l"test.out" [24;12H[K[24;12H4 lines, 33 characters appended
:!cat Xtest.c >>test.out
[?12l[?25h[m
[32mPress ENTER or type command to continue[?25l[m[24;1H[K[24;1H:[?12l[?25hau! FileAppendPre[?25l[27m[m[H[2J[2;1H/*
 * Here is a NEW .c file
 */
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [3;2H[?12l[?25h[?25l[24;1H[m:[?12l[?25h" setup autocommands to decompress before reading and re-compress afterwards[?25l[3;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPre      *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))[?25l[3;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPre      *.gz   call rename(expand("<afile>:r"), expand("<afile>"))[?25l[3;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPost     *.gz   call rename(expand("<afile>"), expand("<afile>:r"))[?25l[3;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadPost     *.gz   exe '!gzip ' . shellescape(expand("<afile>:r"))[?25l[3;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtestfile.gz                " Edit compressed file[?25l:!gzip -d 'Xtestfile.gz'[24;33H[K[24;25H
[?12l[?25h[?25l[m"Xtestfile.gz"[23;1H"Xtestfile.gz" 11 lines, 357 characters[24;1H[K[24;1H:!gzip 'Xtestfile'
[?12l[?25h[?25l[m[23;1Hcaught FileChangedShell
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw>>test.out                    " Append it to the output file[?25l"test.out" [24;12H[K[24;12H11 lines, 357 characters appended
:!cat Xtest.c >>test.out
[?12l[?25h[m
[32mPress ENTER or type command to continue[?25l[m[24;1H[K[24;1H:[?12l[?25hset shelltemp                  " need temp files here[?25l[27m[m[H[2J[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
[1m[34m~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hau FilterReadPre   *.out  call rename(expand("<afile>"), expand("<afile>") . "
[23;80H.[24;1Ht")[?25l[1;1H[L[1;1Hstart of testfile[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hau FilterReadPre   *.out  exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) 
[23;80H.[24;1H ".t >" . shellescape(expand("<afile>"))[?25l[1;1H[L[1;1Hstart of testfile[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hau FilterReadPre   *.out  exe '!rm ' . shellescape(expand("<afile>")) . '.t'[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FilterReadPost  *.out  '[,']s/x/X/g[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! test.out                    " Edit the output file[?25l"test.out" [24;12H[K[24;12H50 lines, 1242 characters[1;6Hstar[1;11H[K[2;1Hstart of testfile[2;18H[K[3;6H2  Abcdefghijklmnopqrstuvwxyz[3;35H[K[4;6H3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[5;6H4  Abcdefghijklmnopqrstuvwxyz[5;35H[K[6;6H5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[7;6H6  Abcdefghijklmnopqrstuvwxyz[7;35H[K[8;6H7  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[9;6H8  Abcdefghijklmnopqrstuvwxyz[9;35H[K[10;6H9  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line 10 Abcdefghijklmnopqrstuvwxyz
end of testfile[12;16H[K[13;1H[K[14;1Hstart of test.c[14;16H[K[15;1H/*[15;3H[K[16;1H * Here is a new .c file[16;25H[K[17;1H */[17;4H[K[18;1Hend of test.c[18;14H[K[19;1Hstart of testfile[19;18H[K[20;1Hline 2  Abcdefghijklmnopqrstuvwxyz[20;35H[K[21;1Hline 3  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[21;39H[K[22;1Hline 4  Abcdefghijklmnopqrstuvwxyz[22;35H[K[23;1Hline 5  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[23;39H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h23,$!cat[?25l[?12l[?25h[?25l:!sed s/e/E/ '/tmp/v70MLQF/1'.t >'/tmp/v70MLQF/1'
[?12l[?25h[?25l[m:!rm '/tmp/v70MLQF/1'.t
[?12l[?25h[?25l[m218 substitutions on 15 lines
28 lines filtered
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h23,$s/\r$//                 " remove CR for when sed adds them[?25l[1m[37m[41mE486: Pattern not found: \r$[m[24;30H[K[24;1H
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau! FileReadPre    *.gz   exe '!gzip -d ' . shellescape(expand("<afile>"))[?25l[27m[m[H[2J[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[?12l[?25h[?25l
:[?12l[?25hau  FileReadPre    *.gz   call rename(expand("<afile>:r"), expand("<afile>"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau! FileReadPost   *.gz   '[,']s/l/L/[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r Xtestfile.gz             " Read compressed file[?25l:!gzip -d 'Xtestfile.gz'[24;30H[K[24;25H
[?12l[?25h[?25l[m"Xtestfile.gz"[23;1H"Xtestfile.gz" 11 lines, 357 characters[24;1H[K[24;1H11 substitutions on 11 lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw                           " write it, after filtering[?25l"test.out"[24;30H[K[24;12H61 lines, 1599 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau!             " remove all autocommands[?25l[1m[37m[41mE216: No such group or event: " remove all autocommands[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he               " Edit test.out again[?25l"test.out"[24;18H[K[24;12H61 lines, 1599 characters[27m[m[H[2J[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
"test.out" 61 lines, 1599 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin ff&   " use the default fileformat for writing[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" 61 lines, 1599 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test12.failed test.ok test.out X* viminfo
cp test12.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test12.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test12.in" 52 lines, 1199 characters[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/[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for 'directory' option.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 40 lines, 965 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:!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[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset dir=.,~[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/start of testfile/,/end of testfile/w! Xtest1[?25l"Xtest1" [24;10H[K[24;10H[New] 4L, 70C written[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" do an ls of the current dir to find the swap file (should not be there)[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("unix")[?25l
:  [?12l[?25h:  !ls .X*.swp >test.out
[?25l:!ls .X*.swp >test.out[?1l>[?12l[?25h[?1049l
ls: cannot access .X*.swp: No such file or directory

shell returned 2

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25helse
[?25l:  [?12l[?25h:  r !ls X*.swp >test.out
[?25l:  [?12l[?25h:endif[?25l[24;1H[K[24;1H:[?12l[?25h!echo first line >>test.out[?25l[28C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25he Xtest1[?25l"Xtest1" 4L, 70C[27m[m[H[2J[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H"Xtest1" 4L, 70C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("unix")[?25l
:  [?12l[?25h:" Do an ls of the current dir to find the swap file, remove the leading dot
[?25l:  [?12l[?25h:" to make the result the same for all systems.
[?25l:  [?12l[?25h:  r!ls .X*.swp[m
[?25l:  [?12l[?25h:  s/\.*X/X/
[?25l:  [?12l[?25h:  .w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 11C appended
:  [?12l[?25h:  undo
[?25l1 line less; before #1  0 seconds ago
:  [?12l[?25h:else
[?25l:  [?12l[?25h:  !ls X*.swp >>test.out
[?25l:  [?12l[?25h:endif[27m[m[H[2J[?25l[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h!echo under Xtest1.swp >>test.out[?25l[34C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xtest2[?25l[14C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hset dir=./Xtest2,.,~[?25l[27m[m[H[2J[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25he Xtest1[?25l"Xtest1" 4L, 70C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h!ls X*.swp >>test.out[?25l[22C[?1l>[?12l[?25h[?1049l
ls: cannot access X*.swp: No such file or directory

shell returned 2

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!echo under under >>test.out[?25l[29C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!ls Xtest2 >>test.out[?25l[22C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!echo under Xtest1.swp >>test.out[?25l[34C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xtest.je[?25l[16C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h/start of testfile/,/end of testfile/w! Xtest2/Xtest3[?25l[31msearch hit BOTTOM, continuing at TOP[m[24;37H[K[24;1H"Xtest2/Xtest3" [24;17H[K[24;17H[New] 4L, 70C written[27m[m[H[2J[1;1Hstart of testfile
line 2 Abcdefghij
line 3 Abcdefghij
end of testfile
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H"Xtest2/Xtest3" [New] 4L, 70C written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset dir=Xtest.je,~[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtest2/Xtest3[?25l"Xtest2/Xtest3" 4L, 70C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hswap[?25lXtest.je/Xtest3.swp[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h!ls Xtest2 >>test.out[?25l[22C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!echo under Xtest3 >>test.out[?25l[30C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!ls Xtest.je >>test.out[?25l[24C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!echo under Xtest3.swp >>test.out[?25l[34C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test13.failed test.ok test.out X* viminfo
cp test13.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test13.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test13.in" 58 lines, 1133 characters[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
otestje1[34m^[[m
:w
:sp Xtestje2
otestje2[34m^[[m
:w[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for autocommands on :close command[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 38 lines, 631 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[14;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:au!
:au! BufUnload Xtestje1 bwipe
:e Xtestje3
:w >>test.out
:e Xtestje2
:sp Xtestje1
:e
:w >>test.out
:au!
:only
:e Xtestje1
:bwipe Xtestje2 Xtestje3 test.out test13.in
:au BufWipeout Xtestje1 buf Xtestje1
:bwipe
:w >>test.out
:qa!
ENDTEST

start of testfile[20;9Hcontents[21;9Hcontents[22;9Hcontents
end of testfile[17;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje1[?25l"Xtestje1" [24;13H[K[24;12H[New File] 5 lines, 64 characters written[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje2[?25l"Xtestje2" [24;13H[K[24;12H[New File] 5 lines, 64 characters written[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of testfile/,/^end of testfile/w! Xtestje3[?25l"Xtestje3" [24;13H[K[24;12H[New File] 5 lines, 64 characters written[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestje1[?25l"Xtestje1" 5 lines, 64 characters[1;1Hstart of testfile
        contents[2;17H[K[3;1H        contents
        contents
end of testfile
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[2;23r[m[2;1H[L[1;24r[2;1Htestje1[24;1H[K[2;7H[?12l[?25h[3;8H[?25l[24;1H:[?12l[?25hw[?25l"Xtestje1" 6 lines, 72 characters written[3;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xtestje2[?25l"Xtestje2" [24;12H[K[24;12H5 lines, 64 characters[2;1H        contents


end of testfile[5;16H[K[6;1H[1m[34m~                                                                               [m[12;1H[1m[7mXtestje2                                                                        [m[13;1Htestje1[13;8H[K[14;1H        contents[14;17H[K[15;1H        contents[15;17H[K[16;1H        contents[16;17H[K[17;1Hend of testfile[17;16H[K[23;1H[7mXtestje1                                                                        [1;1H[?12l[?25h[?25l[2;11r[m[2;1H[L[1;24r[2;1Htestje2[12;10H[1m[7m[+][m[24;1H[K[2;7H[?12l[?25h[3;8H[?25l[24;1H:[?12l[?25hw[?25l"Xtestje2" 6 lines, 72 characters written[12;10H[1m[7m    [3;8H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsp Xtestje3[?25l"Xtestje3" [24;12H[K[24;12H5 lines, 64 characters[27m[m[H[2J[1;1Hstart of testfile[2;9Hcontents[3;9Hcontents[4;9Hcontents
end of testfile
[1m[34m~                                                                               [7;1H~                                                                               [m[8;1H[1m[7mXtestje3                                                                        [m[9;1Htestje2[10;9Hcontents[11;9Hcontents[12;9Hcontents
end of testfile
[1m[34m~                                                                               [15;1H~                                                                               [m[16;1H[7mXtestje2                                                                        [m[17;1Htestje1[18;9Hcontents[19;9Hcontents[20;9Hcontents
end of testfile
[1m[34m~                                                                               [m[23;1H[7mXtestje1                                                                        [1;1H[?12l[?25h[?25l[2;7r[m[2;1H[L[1;24r[2;1Htestje3[8;10H[1m[7m[+][2;7H[?12l[?25h[3;8H[?25l[24;1H[m:[?12l[?25hw[?25l"Xtestje3" 6 lines, 72 characters written[8;10H[1m[7m    [3;8H[?12l[?25h[m[8;1H[7mXtestje3[m[1m[7m [m[7m                                                                        [m[16;1H[1m[7mXtestje2                                                                        [10;8H[11;8H[?25l[m[24;1H[K[24;1H:[?12l[?25hau WinLeave Xtestje2 bwipe[?25l[11;8H[?12l[?25h[27m[m[H[2J[?25l[1;1Hstart of testfile
testje3[3;9Hcontents[4;9Hcontents[5;9Hcontents
end of testfile
[1m[34m~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [m[11;1H[7mXtestje3                                                                        [m[12;1Htestje1[13;9Hcontents[14;9Hcontents[15;9Hcontents
end of testfile
[1m[34m~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[1m[7mXtestje1                                                                        [13;8H[?12l[?25h[14;8H[?25l[24;1H[m:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 6 lines, 72 characters written[14;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau WinLeave Xtestje1 bwipe Xtestje3[?25l[14;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[2;7H1[11;1H[1m[34m~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [23;1H~                                                                               [4;8H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H6 lines, 72 characters appended[4;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestje1[?25l"Xtestje1" 6 lines, 72 characters[4;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe Xtestje2 Xtestje3 test.out[?25l[1m[37m[41mE94: No matching buffer for Xtestje2 Xtestje3 test.out[4;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau![?25l[4;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau! BufUnload Xtestje1 bwipe[?25l[4;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestje3[?25l"Xtestje3" 6 lines, 72 characters[2;7H3[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H6 lines, 72 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestje2[?25l"Xtestje2" 6 lines, 72 characters[2;7H2[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xtestje1[?25l"Xtestje1" [24;12H[K[24;12H6 lines, 72 characters[2;7H1[12;1H[1m[7mXtestje1                                                                        [m[13;1Hstart of testfile[13;18H[K[14;1Htestje2[14;8H[K[15;1H        contents[15;17H[K[16;1H        contents[16;17H[K[17;1H        contents[17;17H[K[18;1Hend of testfile[18;16H[K[23;1H[7mXtestje2                                                                        [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he[?25l[1m[37m[41mE143: Autocommands unexpectedly deleted new buffer Xtestje1[m[2;7H2[12;8H[1m[7m2 [m[24;1H"Xtestje2" line 1 of 6 --16%-- col 1[1m[37m[41mt[m[24;37H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H6 lines, 72 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau![?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25honly[?25l[12;1H[1m[34m~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xtestje1[?25l"Xtestje1" 6 lines, 72 characters[2;7H1[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe Xtestje2 Xtestje3 test.out test13.in[?25l4 buffers wiped out[24;20H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufWipeout Xtestje1 buf Xtestje1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe[?25l"Xtestje1" 6 lines, 72 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H6 lines, 72 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test14.failed test.ok test.out X* viminfo
cp test14.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test14.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test14.in" 99 lines, 1606 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for "vaBiB", end could be wrong.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[7;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 56 lines, 1141 characters written[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[8;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute
Y:$put =@0
/bar /e
:$put =@0
-:keeppatterns /xyz
0dn:/^search()/,$w >>test.out
:qa!
ENDTEST

- Bug in "vPPPP" on this text (Webb):[15;9H{[16;17Hcmd;[17;17H{[18;25Hcmd;    /* <-- Start cursor here */[19;25H{[20;25H}[21;17H}[22;9H}[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hStart cursor here[?25l[18;40H[?12l[?25h[?25l[?12l[?25h[?25l[17;17H[7m{ 
                        cmd;    /* <-- Start cursor here */ 
                        { 
                        } 
                [?12l[?25h[?25l[16;1H                cmd; 
                [21;17H}[?12l[?25h[?25l[m


6 fewer lines[24;15H[K[16;1H        }[16;10H[K[17;1H[K[18;1HPiece of Java[18;14H[K[19;1H{[19;2H[K[20;1H        tt m1 {[20;16H[K[21;1H                t1;[22;11He1[16;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?Bug?,/Piece/-2w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 3 lines, 44 characters written[16;9H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^- Bug[?25l[31msearch hit BOTTOM, continuing at TOP[14;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hs/u/~u~/[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/i/~u~/[?25l[14;7Huuun "vPPPP" on this text (Webb):[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/o/~~~/[?25l[14;20Huuuuuuuuun this text (Webb):[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 48 characters appended[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("ebcdic")[?25l
:  [?12l[?25h: let tt = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>
[23;80H"[24;1H
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>"
[?25l:  [?12l[?25h:endif[1;1H[5L[?25l[1;1H:$put =@/
/^substitute
:keeppatterns s/asdf/xyz/
:$put =@/
/^substitute[24;1H[K[14;1H[?12l[?25h[?25l[24;1H:[?12l[?25hexe "normal " . tt[?25l[15;23r[15;1H[L[1;24r[15;1HABC !a[34m^O[mg[34m^G[m8[24;1H[K[15;12H[?12l[?25h[?25l[24;1H:[?12l[?25hunlet tt[?25l[15;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[15;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset vb[?25l[15;12H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Piece[?25l[19;1H[?12l[?25h[21;15H[?25l{A[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[21;16H[?12l[?25h[22;16H[?25l[1;23r[1;1H[2M[1;24r[23;9Htt m2 {[24;1H[K[23;15H[?12l[?25h[?25l{B[?12l[?25h[?25l
:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;16H[?12l[?25h[?25l[1;23r[1;1H[4M[1;24r[20;17Ht2;[21;9H} e2[23;9Htt m3 {[24;1H[K[23;15H[?12l[?25h[?25l{C[?12l[?25h[?25l
:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;16H[?12l[?25h[?25l{DC[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[23;16H[?12l[?25h[22;1H[15;15H[?25l{EA[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[15;16H[?12l[?25h[14;1H[?25l{F[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 3 characters appended[14;2H[?12l[?25h[17;9H[?25l}G e1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[17;10H[?12l[?25h
[?25l[1;23r[1;1H[5M[1;24r[19;17Hif (x)[20;17H{[21;25Ht3;[22;17H}[23;9H} e3[24;1H[K[23;9H[?12l[?25h[?25l}H e3[?12l[?25h[?25l
:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;10H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[24;1H[K[23;1H[?12l[?25h[?5h[?5l[?25l}I[?12l[?25h[?25l
:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 3 characters appended[23;2H[?12l[?25h[22;9H[?25l}JH e3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 8 characters appended[22;10H[?12l[?25h[21;16H[15;9H[?25l}K e2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[15;10H[?12l[?25h[8;1H[?25l{LF[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 4 characters appended[8;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[8;2H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^foobar[?25l[1;23r[1;1H[2M[1;24r[23;1Hfoobar[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet startline = line('.')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall search('foobar', 'c')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), line('.') - startline)[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hcall search('^$', 'c')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), line('.') - startline)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall search('^$', 'bc')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), line('.') - startline)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25htwo[?25l[1;23r[1;1H[3M[1;24r[21;1Hsubstitute foo asdf

one two[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25hcall search('.', 'c')[?25l[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), getline('.')[col('.') - 1:])[?25l[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;5H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^substitute[?25l[31msearch hit BOTTOM, continuing at TOP[21;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hs/foo/bar/[?25l[21;12Hbar[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =@/[?25l[1;23r[1;1H[6M[1;24r[18;1Hsearch()
0
1
1
two
foo[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^substitute[?25l[31msearch hit BOTTOM, continuing at TOP[15;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hkeeppatterns s/asdf/xyz/[?25l[15;16Hxyz[15;19H[K[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =@/[?25l[1;23r[23;1H
[1;24r[23;1H^substitute[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^substitute[?25l[31msearch hit BOTTOM, continuing at TOP[14;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =@0[?25l[1;23r[23;1H
[1;24r[23;1Hsubstitute bar xyz[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hbar /e[?25l[23;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =@0[?25l[1;23r[23;1H
[1;24r[23;1Hsubstitute bar xyz[24;1H[K[23;1H[?12l[?25h[22;1H[?25l

:[?12l[?25hkeeppatterns /xyz[?25l[23;1H[?12l[?25h[?25l
/bar /e[24;8H[K[24;1H[23;1Hxyz[23;4H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^search()/,$w >>test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H9 lines, 58 characters appended[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test15.failed test.ok test.out X* viminfo
cp test15.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test15.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test15.in" 136 lines, 2246 characters[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
u[34m^R[m
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for :right on text with embedded TAB.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 401 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tw=65[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;9Htest for :left[24;1H[K[23;8H[?12l[?25h[?25l
:[?12l[?25h/^\s*test for :left/,/^\s*test for :center/ left[?25l[31msearch hit BOTTOM, continuing at TOP[m[24;37H[K[23;1Htest for :left[23;15H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^\s*test for :center/,/^\s*test for :right/ center[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^\s*test for :right/,/^xxx/-1 right[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fo+=tcroql tw=72[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hxxxxxxxx$[?25l[27m[m[H[2J[1;40Hasxa;ofa[9Caxxxoike[2;39Hasdfaqwer[9Caxxxoike[3;47Ha[9Caxxxoikey[4;46Hfa[9Caxxxoikey[5;45Hdfa[9Caxxxoikey[6;44Hsdfa[9Caxxxoikey[7;43Hasdfa[9Caxxxoikey[8;42Hxasdfa[9Caxxxoikey[9;41Hasxxdfa[9Caxxxoikey[10;40Hasxa;ofa[9Caxxxoikey[11;39Hasdfaqwer[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 cc[19;50H[?12l[?25h[?25l[13;23r[23;1H
[1;24r[13;6H xx xxxxxx xxxxxxx xxxxxxxxx xxx xxxx xxxxx xxxxx xxx xx[14;62Hxx xxxxxxx.
xxxx xxxx.[15;11H[K[17;65Hxxxxxx[18;9Hx: xxxx xxxxxxx, xx xxxx[7C xxxxxxx[18;51H[K[23;1H[1m[34m~                                                                               [18;1H[?12l[?25h[17;1H
[?25l[24;1H[m:[?12l[?25hset nocp viminfo+=nviminfo[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" undo/redo here to make the next undo only work on the following changes[?25l[18;1H[?12l[?25h[?25l[24;1H1 more line; before #1  0 seconds ago[24;38H[K[27m[m[H[2J[1;1H0gq6kk
:set nocp viminfo+=nviminfo
:" undo/redo here to make the next undo only work on the following changes
u[34m^R[m
:map gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq
/^aa
ggu
:?test for :left?,$w! test.out
:qa!
ENDTEST[12;9Htest for :left[13;11Ha[13Ca[14;13Hfa[10Ca[15;11Hdfa[11Ca[16;17Hsdfa[12Ca[17;11Hasdfa[9Ca[18;17Hxasdfa[10Ca
asxxdfa[9Ca[21;9Htest for :center[22;11Ha[13Ca[23;13Hfa[10Cafd asdf[12;8H[?12l[?25h[?25l[24;1H1 line less; after #1  0 seconds ago[12;1Htest for :left[12;15H[K[13;1Ha[9C      a[13;25H[K[14;1Hfa[10C    a[14;25H[K[15;1Hdfa[7C      a[15;25H[K[16;1Hsdfa[12Ca[16;18H[K[17;1Hasdfa           a[17;25H[K[18;1Hxasdfa[10Ca[18;18H[K[21;9H                test for :center[22;11H [13C a[14Ca[23;13H  [8Cfa        [8Cafd asdf[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hmap gg :.,.+2s/^/x/<CR>kk:set tw=3<CR>gqq[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^aa[?25l[27m[m[H[2J[1;41Hasxxdfa[9Caxxxoike[2;40Hasxa;ofa[9Caxxxoike[3;39Hasdfaqwer[9Caxxxoike[4;47Ha[9Caxxxoikey[5;46Hfa[9Caxxxoikey[6;45Hdfa[9Caxxxoikey[7;44Hsdfa[9Caxxxoikey[8;43Hasdfa[9Caxxxoikey[9;42Hxasdfa[9Caxxxoikey[10;41Hasxxdfa[9Caxxxoikey[11;40Hasxa;ofa[9Caxxxoikey[12;39Hasdfaqwer[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 cc[21;1H[?12l[?25h[?25l


:.,.+2s/^/x/3 substitutions on 3 lines[21;1Hxaa aa aa aa
xbb bb bb bb
xcc cc cc cc[?12l[?25h[22;1H[21;1H[?25l[24;1H[K[24;1H:set tw=3[21;1H[?12l[?25h[?25l


3 more lines[1;23r[23;1H
[1;24r[20;5H[K[21;1Haa[21;3H[K[22;1Haa[22;3H[K[23;1Haa[24;1H[K[24;1H3 more lines[23;1H[?12l[?25h[?25l
3 fewer lines; before #2  0 seconds ago[20;1Haa aa aa aa
bb bb bb bb
cc cc cc cc
[1m[34m~                                                                               [20;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25h?test for :left?,$w! test.out[?25l"test.out"[24;12H[K[24;12H[New] 111L, 2304C written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test17.failed test.ok test.out X* viminfo
cp test17.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test17.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test17.in" 141 lines, 2634 characters[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""[14;1H)
:  exec "silent !rmdir /Q /S " . a:dir
: else
:  exec "silent !rm -rf " . a:dir
: endif
:endfun
:if has("unix")
:let $CDIR = "."
/CDIR
:else[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 33 lines, 771 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H/TDIR
:endif
:" Dummy writing for making that sure gf doesn't fail even if the current
:" file is modified. It can be occurred when executing the following command
:" directly on Windows without fixing the 'fileformat':
:"  > nmake -f Make_dos.mak test17.out
:w! test.out
gf
:set ff=unix
:w! test.out
:brewind
ENDTEST[14;9H${CDIR}/test17a.in[15;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"[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("ebcdic")[?25l
:  [?12l[?25h: set isfname=@,240-249,/,.,-,_,+,,,$,:,~,{,}
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: set isfname=@,48-57,/,.,-,_,+,,,$,:,~,{,}
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H/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[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfunction! DeleteDirectory(dir)[?25l
:  [?12l[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("do
[23;80Hs[24;1H32")
[?25l:    [?12l[?25h:  exec "silent !rmdir /Q /S " . a:dir
[?25l:    [?12l[?25h: else
[?25l:    [?12l[?25h:  exec "silent !rm -rf " . a:dir
[?25l:    [?12l[?25h: endif
[?25l:  [?12l[?25h:endfun[1;1H[7L[?25l[1;1H/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[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hif has("unix")[?25l
:  [?12l[?25h:let $CDIR = "."
[?25l:  [?12l[?25h/CDIR
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:if has("amiga")
[?25l:    [?12l[?25h:let $TDIR = "/testdir"
[?25l:    [?12l[?25h:else
[?25l:    [?12l[?25h:let $TDIR = "."
[?25l:    [?12l[?25h:endif
[?25l:  [?12l[?25h/TDIR
[?25l:  [?12l[?25h:endif[1;1H[10L[?25l[1;1H/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[24;1H[K[14;9H[?12l[?25h[?25l[24;1H:[?12l[?25h" Dummy writing for making that sure gf doesn't fail even if the current[?25l[14;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" file is modified. It can be occurred when executing the following command[?25l[14;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" directly on Windows without fixing the 'fileformat':[?25l[14;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"  > nmake -f Make_dos.mak test17.out[?25l[14;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 141 lines, 2634 characters written[14;9H[?12l[?25h[?25l[24;2H/sources/vim74/src/testdir/./test17a.in" [24;43H[K[24;43H3 lines, 88 characters[1;1HThis file is just to test "gf" in test 17.
The contents is not important.
Just testing![3;14H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hset ff=unix[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H3 lines, 88 characters written[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbrewind[?25l"test17.in" 141 lines, 2634 characters[1;1H:" 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[4;39H[K[5;1H:w! test.out[5;13H[K[6;1Hgf[6;3H[K[7;1H:set ff=unix[7;13H[K[8;1H:w! test.out[8;13H[K[9;1H:brewind[9;9H[K[10;1HENDTEST[10;8H[K[11;1H[K[12;1H        ${CDIR}/test17a.in[12;27H[K[13;1H        $TDIR/test17a.in[13;25H[K[14;1H[K[15;1HSTARTTEST[15;10H[K[16;1H:" check for 'include' without \zs or \ze[16;42H[K[17;1H:lang C[17;8H[K[18;1H:call delete("./Xbase.a")[18;26H[K[19;1H:call DeleteDirectory("Xdir1")[19;31H[K[20;1H:!mkdir Xdir1[20;14H[K[21;1H:!mkdir "Xdir1/dir2"[21;21H[K[22;1H:e! Xdir1/dir2/foo.a[22;21H[K[23;1Hi#include   "bar.a"[34m^[[m[23;22H[K[12;8H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H23 lines, 395 characters written[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[16;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:e Xdir1/dir2/baz.a
i#include[12C"foo.a"[34m^[[m
:w
:e Xbase.a
:set path=Xdir1/dir2
i#include    <foo.a>[34m^[[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[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" check for 'include' without \zs or \ze[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlang C[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall delete("./Xbase.a")[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DeleteDirectory("Xdir1")[?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[13;1H[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir1[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir "Xdir1/dir2"[?25l[20C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25he! Xdir1/dir2/foo.a[?25l"Xdir1/dir2/foo.a" [New File][27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m#include   "bar.a"[?12l[?25h[?25l[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/foo.a" [New File] 1 line, 19 characters written[1;18H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/bar.a[?25l"Xdir1/dir2/bar.a" [New File][1;1H[K[1;1H[?12l[?25h[?25l#include      "baz.a"[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/bar.a" [New File] 1 line, 22 characters written[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/baz.a[?25l"Xdir1/dir2/baz.a" [New File][1;1H[K[1;1H[?12l[?25h[?25l#include[12C"foo.a"[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/baz.a" [New File] 1 line, 28 characters written[1;27H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xbase.a[?25l"Xbase.a" [New File][1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset path=Xdir1/dir2[?25l[1;1H[?12l[?25h[?25l#include    <foo.a>[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xbase.a" [New File] 1 line, 20 characters written[1;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir! >>test.out[?25l[1;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcheckpath![?25l[24;1H[K[24;1H[35m--- Included files in path ---[m
[34mXdir1/dir2/foo.a[m
Xdir1/dir2/foo.a -->
  [34mXdir1/dir2/bar.a[m
  Xdir1/dir2/bar.a -->
    [34mXdir1/dir2/baz.a[m
    Xdir1/dir2/baz.a -->
      [34m"foo.a"[m  (Already listed)
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[8L[1;1H#include    <foo.a>
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[24;1H[K[1;19H[?12l[?25h[?25l[24;1H:[?12l[?25hbrewind[?25l"test17.in" 141 lines, 2634 characters[1;1Hi#include            "foo.a"[34m^[[m
:w[2;3H[K[3;1H:e Xbase.a[3;11H[K[4;1H:set path=Xdir1/dir2[4;21H[K[5;1Hi#include    <foo.a>[34m^[[m[5;23H[K[6;1H:w[6;3H[K[7;1H:redir! >>test.out[7;19H[K[8;1H:checkpath![8;12H[K[9;1H:redir END[9;11H[K[10;1H:brewind[10;9H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1HSTARTTEST[13;10H[K[14;1H:" check for 'include' with \zs and \ze[14;40H[K[15;1H:call delete("./Xbase.b")[15;26H[K[16;1H:call DeleteDirectory("Xdir1")[16;31H[K[17;1H:!mkdir Xdir1[17;14H[K[18;1H:!mkdir "Xdir1/dir2"[18;21H[K[19;1H:let &include='^\s*%inc\s*/\zs[^/]\+\ze'[19;41H[K[20;1H:function! DotsToSlashes()[20;27H[K[21;1H:  return substitute(v:fname, '\.', '/', 'g') . '.b'[21;53H[K[22;1H:endfunction[22;13H[K[23;1H:let &includeexpr='DotsToSlashes()'[23;36H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H27 lines, 531 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[14;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:e Xdir1/dir2/baz.b
i%inc[12C/foo/[34m^[[m
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/[34m^[[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][12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" check for 'include' with \zs and \ze[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall delete("./Xbase.b")[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DeleteDirectory("Xdir1")[?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[13;1H[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir1[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir "Xdir1/dir2"[?25l[20C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hlet &include='^\s*%inc\s*/\zs[^/]\+\ze'[?25l[27m[m[H[2J[1;1H:e Xdir1/dir2/baz.b
i%inc[12C/foo/[34m^[[m
:w
:e Xbase.b
:set path=Xdir1/dir2
i%inc    /foo/[34m^[[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][13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfunction! DotsToSlashes()[?25l
:  [?12l[?25h:  return substitute(v:fname, '\.', '/', 'g') . '.b'
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[1;1H:e Xdir1/dir2/baz.b
i%inc[12C/foo/[34m^[[m[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet &includeexpr='DotsToSlashes()'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xdir1/dir2/foo.b[?25l"Xdir1/dir2/foo.b" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m%inc   /bar/[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/foo.b" [New File] 1 line, 13 characters written[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/bar.b[?25l"Xdir1/dir2/bar.b" [New File][1;1H[K[1;1H[?12l[?25h[?25l%inc      /baz/[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/bar.b" [New File] 1 line, 16 characters written[1;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/baz.b[?25l"Xdir1/dir2/baz.b" [New File][1;1H[K[1;1H[?12l[?25h[?25l%inc[12C/foo/[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/baz.b" [New File] 1 line, 22 characters written[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xbase.b[?25l"Xbase.b" [New File][1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset path=Xdir1/dir2[?25l[1;1H[?12l[?25h[?25l%inc    /foo/[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xbase.b" [New File] 1 line, 14 characters written[1;13H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir! >>test.out[?25l[1;13H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcheckpath![?25l[24;1H[K[24;1H[35m--- Included files in path ---[m
[34mXdir1/dir2/foo.b[m
Xdir1/dir2/foo.b -->
  [34mXdir1/dir2/bar.b[m
  Xdir1/dir2/bar.b -->
    [34mXdir1/dir2/baz.b[m
    Xdir1/dir2/baz.b -->
      [34mfoo[m  (Already listed)
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[8L[1;1H%inc    /foo/
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[24;1H[K[1;13H[?12l[?25h[?25l[24;1H:[?12l[?25hbrewind[?25l"test17.in" 141 lines, 2634 characters[1;1Hi%inc            /foo/[34m^[[m
:w[2;3H[K[3;1H:e Xbase.b[3;11H[K[4;1H:set path=Xdir1/dir2[4;21H[K[5;1Hi%inc    /foo/[34m^[[m[5;17H[K[6;1H:w[6;3H[K[7;1H:redir! >>test.out[7;19H[K[8;1H:checkpath![8;12H[K[9;1H:redir END[9;11H[K[10;1H:brewind[10;9H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1HSTARTTEST[13;10H[K[14;1H:" check for 'include' with \zs and no \ze[14;43H[K[15;1H:call delete("./Xbase.c")[15;26H[K[16;1H:call DeleteDirectory("Xdir1")[16;31H[K[17;1H:!mkdir Xdir1[17;14H[K[18;1H:!mkdir "Xdir1/dir2"[18;21H[K[19;1H:let &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'[19;73H[K[20;1H:function! StripNewlineChar()[20;30H[K[21;1H:  if v:fname =~ '\n$'[21;23H[K[22;1H:    return v:fname[:-2][22;25H[K[23;1H:  endif[23;9H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H39 lines, 743 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[14;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:w
:e Xdir1/dir2/baz.c
i%inc[12Cfoo.c[34m^[[m
:w
:e Xdir1/dir2/FALSE.c
i%inc[12Cfoo.c[34m^[[m
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c[34m^[[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[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" check for 'include' with \zs and no \ze[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall delete("./Xbase.c")[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DeleteDirectory("Xdir1")[?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[23;1H[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir1[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir "Xdir1/dir2"[?25l[20C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hlet &include='^\s*%inc\s*\%([[:upper:]][^[:space:]]*\s\+\)\?\zs\S\+\ze'[?25l[27m[m[H[2J[1;1H:w
:e Xdir1/dir2/baz.c
i%inc[12Cfoo.c[34m^[[m
:w
:e Xdir1/dir2/FALSE.c
i%inc[12Cfoo.c[34m^[[m
:w
:e Xbase.c
:set path=Xdir1/dir2
i%inc    FALSE.c foo.c[34m^[[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
[?12l[?25h[?25l
:[?12l[?25hfunction! StripNewlineChar()[?25l
:  [?12l[?25h:  if v:fname =~ '\n$'
[?25l:    [?12l[?25h:    return v:fname[:-2]
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:  return v:fname
[?25l:  [?12l[?25h:endfunction[1;1H[5L[?25l[1;1H:w
:e Xdir1/dir2/baz.c
i%inc[12Cfoo.c[34m^[[m
:w
:e Xdir1/dir2/FALSE.c[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet &includeexpr='StripNewlineChar()'[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xdir1/dir2/foo.c[?25l"Xdir1/dir2/foo.c" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m%inc   bar.c[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/foo.c" [New File] 1 line, 13 characters written[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/bar.c[?25l"Xdir1/dir2/bar.c" [New File][1;1H[K[1;1H[?12l[?25h[?25l%inc      baz.c[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/bar.c" [New File] 1 line, 16 characters written[1;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/baz.c[?25l"Xdir1/dir2/baz.c" [New File][1;1H[K[1;1H[?12l[?25h[?25l%inc[12Cfoo.c[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/baz.c" [New File] 1 line, 22 characters written[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xdir1/dir2/FALSE.c[?25l"Xdir1/dir2/FALSE.c" [New File][1;1H[K[1;1H[?12l[?25h[?25l%inc[12Cfoo.c[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xdir1/dir2/FALSE.c" [New File] 1 line, 22 characters written[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xbase.c[?25l"Xbase.c" [New File][1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset path=Xdir1/dir2[?25l[1;1H[?12l[?25h[?25l%inc    FALSE.c foo.c[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xbase.c" [New File] 1 line, 22 characters written[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir! >>test.out[?25l[1;21H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcheckpath![?25l[24;1H[K[24;1H[35m--- Included files in path ---[m
[34mXdir1/dir2/foo.c[m
Xdir1/dir2/foo.c -->
  [34mXdir1/dir2/bar.c[m
  Xdir1/dir2/bar.c -->
    [34mXdir1/dir2/baz.c[m
    Xdir1/dir2/baz.c -->
      [34mfoo.c[m  (Already listed)
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[8L[1;1H%inc    FALSE.c foo.c
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[24;1H[K[1;21H[?12l[?25h[?25l[24;1H:[?12l[?25hbrewind[?25l"test17.in" 141 lines, 2634 characters[1;1H:w[1;3H[K[2;1H:e Xdir1/dir2/baz.c[2;20H[K[3;1Hi%inc            foo.c[34m^[[m[3;25H[K[4;1H:w[4;3H[K[5;1H:e Xdir1/dir2/FALSE.c[5;22H[K[6;1Hi%inc            foo.c[34m^[[m[6;25H[K[7;1H:w[7;3H[K[8;1H:e Xbase.c[8;11H[K[9;1H:set path=Xdir1/dir2[9;21H[K[10;1Hi%inc    FALSE.c foo.c[34m^[[m[10;25H[K[11;1H:w[11;3H[K[12;1H:redir! >>test.out[12;19H[K[13;1H:checkpath![13;12H[K[14;1H:redir END[14;11H[K[15;1H:brewind[15;9H[K[16;1H:" change "\" to "/" for Windows and fix 'fileformat'[16;54H[K[17;1H:e test.out[17;12H[K[18;1H:%s#\\#/#g[18;11H[K[19;1H:set ff&[19;9H[K[20;1H:w[20;3H[K[21;1H:q[21;3H[K[22;1HENDTEST[22;8H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" change "\" to "/" for Windows and fix 'fileformat'[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he test.out[?25l"test.out" 33 lines, 655 characters[1;1HThis file is just to test "gf" in test 17.
The contents is not important.
Just testing![3;18H[K[4;1H[K[5;1H[K[6;1H--- Included files in path ---
Xdir1/dir2/foo.a
Xdir1/dir2/foo.a -->
  Xdir1/dir2/bar.a[9;19H[K[10;1H  Xdir1/dir2/bar.a -->[10;23H[K[11;1H    Xdir1/dir2/baz.a
    Xdir1/dir2/baz.a -->
      "foo.a"  (Already listed)[14;1H[K[15;1H[K[16;1H--- Included files in path ---[16;31H[K[17;1HXdir1/dir2/foo.b
Xdir1/dir2/foo.b -->
  Xdir1/dir2/bar.b
  Xdir1/dir2/bar.b -->
    Xdir1/dir2/baz.b
    Xdir1/dir2/baz.b -->[23;7Hfoo  (Already listed)[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%s#\\#/#g[?25l[1m[37m[41mE486: Pattern not found: \\[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset ff&[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" 33 lines, 655 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq[?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test18.failed test.ok test.out X* viminfo
cp test18.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test18.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test18.in" 16 lines, 213 characters[1;1HTests for not doing smart indenting when it isn't set.

STARTTEST
:so small.vim
:set nocin nosi ai
/some
2cc#test[34m^[[m
:?start?,$w! test.out
:qa!
ENDTEST

start text[13;17Hsome test text[14;17Htest text
test text[16;17Htest text
[1m[34m~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for not doing smart indenting when it isn't set.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 6 lines, 76 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[10;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocin nosi ai[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hsome[?25l[13;17H[?12l[?25h[?25l[13;23r[23;1H
[1;24r[13;17H#test[13;22H[K[23;1H[1m[34m~                                                                               [m[24;1H[K[13;21H[?12l[?25h[14;9H[?25l[24;1H:[?12l[?25h?start?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 41 characters written[14;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test19.failed test.ok test.out X* viminfo
cp test19.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test19.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test19.in" 33 lines, 692 characters[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=[34m^V[mx7f t_kb=[34m^V[mx08
/some
r[7C:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR[21C[34m^H^H^H^[[m
:" Test replacing with Tabs
0wR[21C[34m^[[m
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x[34m^[[m:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa![1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for "r<Tab>" with 'smarttab' and 'expandtab' set/not set.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 19 lines, 447 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[23;1H
[1;24r[23;1HENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset smarttab expandtab ts=8 sw=4[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" make sure that backspace works, no matter what termcap is used[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset t_kD=^[34m^?[m t_kb=^[34m^H[?25l[27m[m[H[2J[2;1HSTARTTEST
:so small.vim
:set smarttab expandtab ts=8 sw=4
:" make sure that backspace works, no matter what termcap is used
:set t_kD=[34m^V[mx7f t_kb=[34m^V[mx08
/some
r[7C:set noexpandtab
/other
r
:" Test replacing with Tabs and then backspacing to undo it
0wR[21C[34m^H^H^H^[[m
:" Test replacing with Tabs
0wR[21C[34m^[[m
:" Test that copyindent works with expandtab set
:set expandtab smartindent copyindent ts=8 sw=8 sts=8
o{
x[34m^[[m:set nosol
/Second line/
fwdv_:?^start?,$w! test.out
:qa!
ENDTEST
[?12l[?25h[?25l
/[?12l[?25hsome[?25l[1;23r[1;1H[2M[1;24r[22;1Hstart text[23;17Hsome test text[24;1H[K[23;17H[?12l[?25h[?25l    ome test text[23;20H[?12l[?25h[?25l
:[?12l[?25hset noexpandtab[?25l[23;20H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hother[?25l[1;23r[1;1H[2M[1;24r[22;1Htest text[23;17Hother test text[24;1H[K[23;17H[?12l[?25h[?25l    ther test text[23;20H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Ha cde[?12l[?25h[?25l
:[?12l[?25h" Test replacing with Tabs and then backspacing to undo it[?25l[23;9H[?12l[?25h    [?25l[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hf ghi[24;1H[K[23;4H[?12l[?25h[?25l
:[?12l[?25h" Test replacing with Tabs[?25l[23;4H[?12l[?25h    [?25l     [7Chi[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Htest text[24;1H[K[23;9H[?12l[?25h[?25l
:[?12l[?25h" Test that copyindent works with expandtab set[?25l[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset expandtab smartindent copyindent ts=8 sw=8 sts=8[?25l[23;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H{[23;9Hx[24;1H[K[23;9H[?12l[?25h[?25l
:[?12l[?25hset nosol[?25l[23;9H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hSecond line/[?25l[24;13H[K[24;1H[1;23r[23;1H
[1;24r[23;3HSecond line beginning with whitespace[24;1H[K[23;3H[?12l[?25h[22C[?25l  with whitespace[23;18H[K[23;3H[?12l[?25h[?25l
:[?12l[?25h?^start?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 10 lines, 121 characters written[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test20.failed test.ok test.out X* viminfo
cp test20.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test20.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test20.in" 28 lines, 398 characters[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$
"by$[34m^V[mjjlld
/456$
[34m^V[mjj"bP
:/56$/,$-1w! test.out
:qa!
ENDTEST

123456
234567
345678

test text test tex start here[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests Blockwise Visual when there are TABs before the text.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 11 lines, 107 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[17;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso tiny.vim[?25l[18;1H[?12l[?25h[?25l[1;23r[1;1H[5M[1;24r[19;17Hsome text[20;17Htest text
test text

Ox[34m^[[mjAy[34m^[[mkdd[24;1H[K[23;1H[?12l[?25h[22;1H[?25lx[23;1H[K[22;1H[?12l[?25h
[?25ly[?12l[?25h[22;1H[?25ly
Ox[34m^[[mjAy[34m^[[mkdd[22;1H[?12l[?25h[?25l

2 changes; before #1  0 seconds ago[22;1H[K[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1H123456
234567
345678[16;1H[K[17;1Htest text test tex start here
                some text[18;26H[K[19;17Htest
test text[20;17H[K[21;1H[K[22;1HOx[34m^[[mjAy[34m^[[mkdd
[7mtest20.in                                                                       [1;1H[?12l[?25h[?25l[1;11r[m[1;1H[L[1;24r[1;1Hx[12;11H[1m[7m[+][m[24;1H[K[1;1H[?12l[?25h
[?25ly[?12l[?25h[1;1H[?25l[1;11r[11;1H
[1;24r[11;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H1 line less; before #1  0 seconds ago[1;1H[K[12;11H[1m[7m    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hquit![?25l[1;1H:so tiny.vim
G0"ay$k@au[2;11H[K[3;1H:new[3;5H[K[4;1H@auY:quit![4;11H[K[5;1HGP[5;3H[K[6;1H/start here$[6;13H[K[7;1H"by$[34m^V[mjjlld[7;12H[K[8;1H/456$[8;6H[K[9;1H[34m^V[mjj"bP[9;8H[K[10;1H:/56$/,$-1w! test.out[10;22H[K[11;1H:qa![11;5H[K[12;1HENDTEST[12;8H[K[13;1H[K[14;1H123456
234567
345678[17;1H[K[18;1Htest text test tex start here[19;17Hsome
         [7Ctest text
test text[22;1H[K[23;1HOx[34m^[[mjAy[34m^[[mkdd[23;13H[K[23;1H[?12l[?25h[?25l[23;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HOx[34m^[[mjAy[34m^[[mkdd[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25hstart here$[?25l[31msearch hit BOTTOM, continuing at TOP[17;20H[?12l[?25h[?25l[?12l[?25h[?25l[m[7ms[18;20H[?12l[?25h[?25le[19;20H[?12l[?25h[?25l[17;21Ht[18;21H [19;20Ht[?12l[?25h[?25l[17;22Ha[18;22Ht[19;21H [?12l[?25h[?25l[m[17;20Hrt here[17;27H[K[18;20Hext[18;23H[K[19;20Hex[19;23H[K[17;20H[?12l[?25h[18;20H[?25l[24;1H[K[24;1H/[?12l[?25h456$[?25l[31msearch hit BOTTOM, continuing at TOP[13;4H[?12l[?25h[?25l[?12l[?25h[?25l[m[7m4
[m234[?12l[?25h[?25l[7m5
[m345[?12l[?25h[?25l[?12l[?25h[?25l[13;4Hstart here56
234start here67
345start here78[13;13H[?12l[?25h[14;13H[?25l[24;1H[K[24;1H:[?12l[?25h/56$/,$-1w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 10 lines, 106 characters written[14;13H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test21.failed test.ok test.out X* viminfo
cp test21.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test21.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test21.in" 19 lines, 297 characters[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
6[34m^W[m     :.w >>test.out
:qa!
ENDTEST

#include test21.in

/* test text test tex start here[15;17Hsome text[16;17Htest text[17;17Hstart OK if found this line[18;9Hstart found wrong line
test text
[1m[34m~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for [ CTRL-I with a count and CTRL-W CTRL-I with a count[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 6 lines, 73 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[10;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hstart[?25l[14;23H[?12l[?25h[17;17H[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 30 characters written[17;17H[?12l[?25h[?25l[24;1H[K[24;1H?[?12l[?25hstart here[?25l[14;23H[?12l[?25h[?25l[1;1H6[34m^W[m     :.w >>test.ou[1;23H[K[2;1H:qa!
ENDTEST[3;8H[K[4;1H[K[5;1H#include test21.in[6;1H[K[7;1H/* test text test tex start here
                some text
    [12Ctest text
       [9Cstart OK if found this line[11;9Hstart found wrong line
[1m[7mtest21.in                                                                       [m[13;1H6[34m^W[m     :.w >>test.out
:qa![14;5H[K[15;1HENDTEST[15;17H[K[16;17H[K[17;1H#include test21.in[17;19H[K[18;9H[K[19;1H/* test text test tex start here
                some text[20;26H[K[21;1H                test text[21;26H[K[22;1H                start OK if found this line[22;44H[K[23;1H[7mtest21.in                                                                       [10;17H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 30 characters appended[10;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test22.failed test.ok test.out X* viminfo
cp test22.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test22.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test22.in" 13 lines, 197 characters[1;1HTests for file with some lines ending in CTRL-M, some not[34m^M
^M[m
STARTTEST
:set ta tx
:e!
:$-3,$w! test.out
:qa!
ENDTEST

this lines ends in a[34m^M[m
this one doesn't
this one does[34m^M[m
and the last one doesn't
[1m[34m~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for file with some lines ending in CTRL-M, some not[34m^M[m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 4 lines, 38 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[8;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ta tx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he![?25l"test22.in" 13 lines, 197 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$-3,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 79 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test23.failed test.ok test.out X* viminfo
cp test23.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test23.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test23.in" 15 lines, 282 characters[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
[1m[34m~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for complicated + argument to :edit command[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 7 lines, 125 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$-1w! Xfile1[?25l"Xfile1" [24;10H[K[24;10H[New File] 1 line, 8 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w! Xfile2[?25l"Xfile2" [24;10H[K[24;10H[New File] 1 line, 8 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hedit +1|s/|/PIPE/|w Xfile1| e Xfile2|1 | s/\//SLASH/|w[?25l"Xfile1" [24;10H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 12 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xfile1[?25l"Xfile1" 1 line, 11 characters[1;1H[7L[1;1HfooPIPEbar
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [m[24;1H[K[24;1H"Xfile1" 1 line, 11 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >> test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test24.failed test.ok test.out X* viminfo
cp test24.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test24.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test24.in" 89 lines, 1301 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for regexp with backslash and other special characters inside [][24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 51 lines, 519 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[2;1H:s/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/

:s/aaa/xyz/

:s/~/bcd/

:s/~\+/BB/
:"
:?start?,$w! test.out
:qa!
ENDTEST

start
test \text test text
test    text test text
test text ]test text
test ]text test text
test text te^st text
test te$xt test text
test taext test text  x61
test tbext test text  x60-x64
test 5text test text  x78 5[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\x][?25l[15;6H[?12l[?25h[?25ltext test text[15;20H[K[15;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\t\]][?25l[16;8H[?12l[?25h[?25ltext test tex[16;20H[K[16;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[]y][?25l[17;11H[?12l[?25h[?25ltest text[17;20H[K[17;11H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\]][?25l[18;6H[?12l[?25h[?25ltext test text[18;20H[K[18;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[y^][?25l[19;13H[?12l[?25h[?25lst text[19;20H[K[19;13H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[$y][?25l[20;8H[?12l[?25h[?25lxt test text[20;20H[K[20;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\x61][?25l[21;7H[?12l[?25h[?25lext test text  x61[21;25H[K[21;7H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\x60-\x64][?25l[22;7H[?12l[?25h[?25lext test text  x60-x64[22;29H[K[22;7H[?12l[?25h[23;7H[?25l[24;1H[K[24;1H/[?12l[?25h[\x785][?25l[23;6H[?12l[?25h[?25ltext test text  x78 5[23;27H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[\o143][?25l[1;23r[23;1H
[1;24r[23;1Htestc text test text  o143[24;1H[K[23;5H[?12l[?25h[?25l text test text  o143[23;26H[K[23;5H[?12l[?25h[?25l
/[?12l[?25h[\o140-\o144][?25l[1;23r[23;1H
[1;24r[23;1Htesdt text test text  o140-o144[24;1H[K[23;4H[?12l[?25h[?25lt text test text  o140-o14[23;31H[K[23;4H[?12l[?25h[?25l
/[?12l[?25h[\o417][?25l[1;23r[23;1H
[1;24r[23;1Htest7 text test text  o41 7[24;1H[K[23;5H[?12l[?25h[?25l text test text  o41 7[23;27H[K[23;5H[?12l[?25h[?25l
/[?12l[?25h\%x42[?25l[1;23r[23;1H
[1;24r[23;1Htest text tBest text  \%x42[24;1H[K[23;12H[?12l[?25h[?25lest text  \%x42[23;27H[K[23;12H[?12l[?25h[?25l
/[?12l[?25h\%o103[?25l[1;23r[23;1H
[1;24r[23;1Htest text teCst text  \%o103[24;1H[K[23;13H[?12l[?25h[?25lst text  \%o103[23;28H[K[23;13H[?12l[?25h[?25l
/[?12l[?25h[\x00][?25l[1;23r[23;1H
[1;24r[23;1Htest text [34m^@[mtest text  [\x00][24;1H[K[23;11H[?12l[?25h[?25ltest text  [\x00][23;28H[K[23;11H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Htest te[34m^@[mxt t[34m^D[mest t[34m^P[mext  [\x00-\x10][23;11H[?12l[?25h[?25l
:[?12l[?25hs/[\x00-\x10]//g[?25l3 substitutions on 1 line[23;8Hxt test text  [\x00-\x10][23;33H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Htest \xyztext test text  [\x-z][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/[\x-z]\+//[?25l[23;6Htext test text  [\x-z][23;28H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Htest text tev\uyst text  [\u-z][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/[\u-z]\{2,}//[?25l[23;13Hst text  [\u-z][23;28H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaaaa xx a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a\)\+//[?25l[23;4H xx [23;10H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaaaa xx a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a*\)\+//[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaaaa xx a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a*\)*//[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaaaa xx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a\)\{2,3}/A/[?25l[23;4HAaa xx[23;10H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaaaa xx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a\)\{-2,3}/A/[?25l[23;4HAaaa x[23;11H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx aaa12aa xx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(a\)*\(12\)\@>/A/[?25l[23;4HAaa xx[23;10H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx foobar xbar xx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(foo\)\@<!bar/A/[?25l[23;12HA xx[23;16H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxx an file xx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(an\_s\+\)\@<=file/A/[?25l[23;7HA xx[23;12H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hx= 9;[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/^\(\h\w*\%(->\|\.\)\=\)\+=/XX/[?25l[23;1HXX[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hhh= 77;[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/^\(\h\w*\%(->\|\.\)\=\)\+=/YY/[?25l[23;1HYY 77;[23;7H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2Haaa[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/aaa/xyz/[?25l[23;2Hxyz [?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2Hxyz[24;1H[K[23;2H[?12l[?25h[?25l
:[?12l[?25hs/~/bcd/[?25l[23;2Hbcd [?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2Hbcdbcdbcd[24;1H[K[23;2H[?12l[?25h[?25l
:[?12l[?25hs/~\+/BB/[?25l[23;2HBB[23;4H[K[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?start?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 32L, 586C written[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test25.failed test.ok test.out X* viminfo
cp test25.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test25.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test25.in" 31 lines, 840 characters[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
G[34m^][m x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for jumping to a tag with 'hidden' set, with symbolic link in path of tag.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 540 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hidden[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Create a link from test25.dir to the current directory.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h!rm -f test25.dir[?25l[18C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!ln -s . test25.dir[?25l[20C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h" Create tags.text, with the current directory name inserted.[?25l[27m[m[H[2J[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
G[34m^][m x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST
[?12l[?25h[?25l
/[?12l[?25htags line[?25l[1;2Hhis only works for Unix, because of the symbolic link.[1;56H[K[2;1H[K[3;1HSTARTTEST
:so small.vim
:set hidden[5;12H[K[6;2H" Create a link from test25.dir to the current directory.
:!rm -f test25.dir[7;19H[K[8;3Hln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line[10;11H[K[11;1H:r !pwd[11;8H[K[12;1Hd$/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[17;20H[K[18;1HG[34m^][m x:.w! test.out[18;19H[K[19;1H:!rm -f test25.dir tags.test
:qa![20;6H[K[21;1HENDTEST[22;1H[K[23;1Htags line:[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hr !pwd[?25l[?12l[?25h[27m[m[H[2J[?25l[2;1HSTARTTEST
:so small.vim
:set hidden
:" Create a link from test25.dir to the current directory.
:!rm -f test25.dir
:!ln -s . test25.dir
:" Create tags.text, with the current directory name inserted.
/tags line
:r !pwd
d$/test
hP:.w! tags.test
:" Try jumping to a tag in the current file, but with a path that contains a
:" symbolic link.  When wrong, this will give the ATTENTION message.  The next
:" space will then be eaten by hit-return, instead of moving the cursor to 'd'.
:set tags=tags.test
G[34m^][m x:.w! test.out
:!rm -f test25.dir tags.test
:qa!
ENDTEST

tags line:
/sources/vim74/src/testdir[?12l[?25h[?25l[23;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25htest[?25l[1;23r[23;1H
[1;24r[23;1HSECTION_OFF     /test25.dir/test25.in   /^#define  SECTION_OFF  3$/[24;1H[K[23;18H[?12l[?25h[?25l/sources/vim74/src/testdir/test25.dir/test25.in /^#define  SECTI[23;1H[1m[34m@                                                                               [1;23r[m[23;1H
[1;24r[22;1HSECTION_OFF     /sources/vim74/src/testdir/test25.dir/test25.in /^#define  SECTII[23;1HON_OFF  3$/[22;42H[?12l[?25h[?25l

:[?12l[?25h.w! tags.test[?25l"tags.test" [24;13H[K[24;13H[New File] 1 line, 88 characters written[22;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Try jumping to a tag in the current file, but with a path that contains a[?25l[22;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" symbolic link.  When wrong, this will give the ATTENTION message.  The next[?25l[22;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" space will then be eaten by hit-return, instead of moving the cursor to 'd'.[?25l[22;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tags=tags.test[?25l[22;42H[?12l[?25h[?25l[1;23r[1;1H[6M[1;24r[19;1H/*tx.c*/
#define  SECTION_OFF  3
#define  NUM_SECTIONS 3

SECTION_OFF[24;1H[K[23;1H[?12l[?25h[20;1H#[?25lefine  SECTION_OFF  3[20;23H[K[20;2H[?12l[?25h[?25l[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 23 characters written[20;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h!rm -f test25.dir tags.test[?25l[28C[?1l>[?12l[?25h[?1049l
[No write since last change]

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test26.failed test.ok test.out X* viminfo
cp test26.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test26.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test26.in" 44 lines, 750 characters[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 Ax[34m^V^[[m
:    if i == 9
:      break
:    endif
:    if i == 5
:      continue
:    else
:      let j = 9
:      while j > 0
:[8Cif has("ebcdic")[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for :execute, :while and :if[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 39 lines, 696 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:      let j = 9
:      while j > 0
:[8Cif has("ebcdic")
:[10Cexecute "normal" j . "a" . j . "\x27"
:[8Celse
:[10Cexecute "normal" j . "a" . j . "\x1b"
:[8Cendif
:[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[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet i = 0[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwhile i < 12[?25l
:  [?12l[?25h:  let i = i + 1
[?25l:  [?12l[?25h:  if has("ebcdic")
[?25l:    [?12l[?25h:    execute "normal o" . i . "\047"
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    execute "normal o" . i . "\033"
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:  if i % 2
[?25l:    [?12l[?25h:    normal Ax^[34m^[[m
[?25l:    [?12l[?25h:    if i == 9
[?25l:      [?12l[?25h:      break
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    if i == 5
[?25l:      [?12l[?25h:      continue
[?25l:      [?12l[?25h:    else
[?25l:      [?12l[?25h:      let j = 9
[?25l:      [?12l[?25h:      while j > 0
[?25l:[8C[?12l[?25h:        if has("ebcdic")
[?25l:[10C[?12l[?25h:          execute "normal" j . "a" . j . "\x27"
[?25l:[10C[?12l[?25h:        else
[?25l:[10C[?12l[?25h:          execute "normal" j . "a" . j . "\x1b"
[?25l:[10C[?12l[?25h:        endif
[?25l:[8C[?12l[?25h:        let j = j - 1
[?25l:[8C[?12l[?25h:      endwhile
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:  if i == 9
[?25l:    [?12l[?25h:    if has("ebcdic")
[?25l:      [?12l[?25h:      execute "normal Az\047"
[?25l:      [?12l[?25h:    else
[?25l:      [?12l[?25h:      execute "normal Az\033"
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endwhile[27m[m[H[2J[?25l[1;1H:  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

1x999999999888888887777777666666555554444333221
2
3x999999999888888887777777666666555554444333221
4
5x
6
7x999999999888888887777777666666555554444333221
8
9x[?12l[?25h[?25l
:[?12l[?25hunlet i j[?25l[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h't,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 10 lines, 159 characters written[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test27.failed test.ok test.out X* viminfo
cp test27.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test27.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test27.in" 20 lines, 270 characters[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
Go[34m^R[m%[34m^[[m:.w! test.out
:n! Xdir?/*/nofile
Go[34m^R[m%[34m^[[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

[1m[34m~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for expanding file names[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 15 lines, 220 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[19;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir1[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir2[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25h!mkdir Xdir3[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hcd Xdir3[?25l/sources/vim74/src/testdir/Xdir3[27m[m[H[2J[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
Go[34m^R[m%[34m^[[m:.w! test.out
:n! Xdir?/*/nofile
Go[34m^R[m%[34m^[[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

[1m[34m~                                                                               [22;1H~                                                                               [23;1H~                                                                               [20;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h!mkdir Xdir4[?25l[13C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir[27m[m[H[2J[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
Go[34m^R[m%[34m^[[m:.w! test.out
:n! Xdir?/*/nofile
Go[34m^R[m%[34m^[[m:.w >>test.out
:e! xx
:!rm -rf Xdir1 Xdir2 Xdir3
:qa!
ENDTEST

[1m[34m~                                                                               [22;1H~                                                                               [23;1H~                                                                               [20;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw Xdir1/file[?25l"Xdir1/file" [New File] 20 lines, 270 characters written[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw Xdir3/Xdir4/file[?25l"Xdir3/Xdir4/file" [New File] 20 lines, 270 characters written[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hn Xdir?/*/file[?25l"Xdir3/Xdir4/file" 20 lines, 270 characters[1;1H[?12l[?25h[20;1H[?25l
Xdir3/Xdir4/file[21;17H[K[21;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 17 characters written[21;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hn! Xdir?/*/nofile[?25l"Xdir?/*/nofile" [New DIRECTORY][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [1;1H[?12l[?25h[?25l[m
Xdir?/*/nofile[2;15H[K[2;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 15 characters appended[2;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! xx[?25l"xx" [New File][2;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h!rm -rf Xdir1 Xdir2 Xdir3[?25l[26C[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test28.failed test.ok test.out X* viminfo
cp test28.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test28.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test28.in" 23 lines, 364 characters[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__1[34m^[^[[m__2[34m^[[m__3[34m^[^[[m__4[34m^[[m__5[34m^[[m:'m,$s/[34m^@[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 asd[34m^V[m
map __2 asd[34m^V^V[m
map __3 asd[34m^V^V[m
map __4 asd[34m^V^V^V[m
map __5 asd[34m^V^V^V[m
lastline[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for sourcing a file with CTRL-V's at the end of the line[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 5 lines, 114 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[9;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/firstline/+1,/lastline/-1w! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[New File] 10 lines, 148 characters written[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso Xtestfile[?25l[10;1H[?12l[?25h[23;1H[11C[?25l[1;23r[23;1H
[1;24r[22;1Hsd
map __2 asd[34m^[[m[24;1H[K[23;12H[?12l[?25h[?25l[2Csecond[?12l[?25hd  [?25lsd[34m^[[?12l[?25h^[[m  [13C[?25l[23;24Hsd[34m^@[mmap __5 asd[34m^@[?12l[?25h[?25l[m[2Cfifth[?12l[?25h[?25l
:[?12l[?25h'm,$s/[34m^@[m/0/g[?25l[23;26H0map __5 asd0fifth[23;44H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h'm,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 2 lines, 45 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test29.failed test.ok test.out X* viminfo
cp test29.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test29.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test29.in" 230 lines, 4222 characters[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[14;1Hj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j joinspaces
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptionss[16;1H+=j
j05lmx2j06lmy2k4Jy3l$p`xyl$p`yy2l$p:set cpoptions-=j nojoinspaces compatible
j"tpJjJjJjJjJjJjJjJjJjJjJjJjJjJj4Jy3l$pjd/STARTTEST/-2
ENDTEST

firstline
asdfasdf.
asdf[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for joining lines and marks in them[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 11 lines, 478 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[19;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nojoinspaces[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpoptions-=j[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hfirstline/[?25l[24;11H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H/[?12l[?25h^STARTTEST/-1[?25l[12C+-137 fewer lines[24;15H[K[22;1HSTARTTEST
/^{/+1[22;1H[?12l[?25h[?25l[24;4Hmore lines[24;14H[K[22;1Hasdfasdf.
asdf[23;5H[K[22;1H[?12l[?25h[?25l[10Casdf
asdfasdf.[22;10H[?12l[?25h[23;10H[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[24;1H[K[23;11H[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[14C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25lf asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[8C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[15C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hzx cvn.[?12l[?25hzx cv[?25l[1;23r[1;1H[3M[1;24r[21;1Has dfg?
hjkl iop!
ert[22;6H[?12l[?25hhjkl i[20;7H[?25l. as dfg? hjkl iop! ert
zx cvn.
as dfg?[22;8H[K[23;1Hhjkl iop![20;26H[?12l[?25h er[?25lt er[?12l[?25hzx cv[26C[?25lrn[?12l[?25h[20;23H[10C[?25lnop[?12l[?25h[?25l[24;1H:[?12l[?25hset cpoptions+=j[?25l[20;35H[?12l[?25h[21;7Hzx cv[23;6Hhjkl i[21;7H[?25l. as dfg? hjkl iop! ert[22;1H[K[23;1HSTARTTEST[21;26H[?12l[?25h er[?25lt er[?12l[?25hzx cv[26C[?25lrn[?12l[?25h[21;23H[10C[?25lnop[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpoptions-=j joinspaces[?25l[21;35H[?12l[?25h
[?25l

37 more lines[24;14H[K[23;1Hasdfasdf.[?12l[?25h[?25l[11Casdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[24;1H[K[23;10H[?12l[?25h[?25l  asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf. [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[14C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25lf asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[8C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[15C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hzx cvn.[?12l[?25hzx cv[?25l[1;23r[1;1H[2M[1;24r[22;1Has dfg?
hjkl iop![?12l[?25hhjkl i[21;7H[?25l.  as dfg?  hjkl iop!  ert
zx cvn.
as dfg?[23;8H[K[21;28H[?12l[?25h  er[?25lt  e[?12l[?25hzx cv[29C[?25len[?12l[?25h[21;25H[11C[?25lnop[?12l[?25h[?25l


:[?12l[?25hset cpoptions+=j[?25l[21;38H[?12l[?25h[22;7Hzx cv[?25l[1;23r[23;1H
[1;24r[23;1Hhjkl iop![24;1H[K[23;6H[?12l[?25hhjkl i[21;7H[?25l.  as dfg? hjkl iop! ert[22;1H[K[23;1HSTARTTEST[21;27H[?12l[?25h er[?25lt er[?12l[?25hzx cv[27C[?25lrn[?12l[?25h[21;24H[10C[?25lnop[?12l[?25h[?25l


:[?12l[?25hset cpoptions-=j nojoinspaces compatible[?25l[21;36H[?12l[?25h
[?25l

37 more lines[24;14H[K[23;1Hasdfasdf.[?12l[?25h[?25l[11Casdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[24;1H[K[23;10H[?12l[?25h[?25l  asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf. [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.      [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf.[14C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25lf asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf [?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[8C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[7C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hasdfasdf[15C[?12l[?25h[?25l asdf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hzx cvn.[?12l[?25h[?25l.  as dfg? hjkl iop! ert[23;8H[?12l[?25h[22C[?25lt  a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hzx cvn.[?12l[?25h[?25l
/[?12l[?25hSTARTTEST/-2[?25l[11C+-24 fewer lines[24;14H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H12 lines, 147 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[12M[1;24r[12;1H:set comments=s1:/*,mb:*,ex:*/,://
:set nojoinspaces fo=j
:set backspace=eol,start
:.,+3join
j4J
:.,+2join
j3J
:.,+2join
j3J
:.,+2join
jj3J
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset comments=s1:/*,mb:*,ex:*/,://[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nojoinspaces fo=j[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset backspace=eol,start[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,+3join[?25l[23;1H/* Make sure the previous comment leader is not removed. */[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l/* Make sure the previous comment leader is not removed. */[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h.,+2join[?25l[23;1H// Should the next comment leader be left alone? Yes.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l// Should the next comment leader be left alone? Yes.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h.,+2join[?25l[23;1H/* Here the comment leader should be left intact. */ // And so should this one.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l/* Here the comment leader should be left intact. */ // And so should this one.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h.,+2join[?25l[23;1Hif (condition) // Remove the next comment leader! OK, I will.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Haction();[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lif (condition) // Remove the next comment leader! OK, I will.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Haction();[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:" Test with backspace set to the non-compatible setting[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H17 lines, 308 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:inoremap <c-u> <left><c-u>
Avim3[34m^U^[[m
:iunmap <c-u>
Avim4[34m^U^U^[[m
:" Test with backspace set to the compatible setting
:set bs=
A vim5[34m^[[mA[34m^U^U^[[m
A vim6[34m^[[mAzwei[34m^G[mu[34m^U^[[m
:inoremap <c-u> <left><c-u>
A vim7[34m^U^U^[[m
:set cp
ENDTEST
1 this shouldn't be deleted
2 this shouldn't be deleted
3 this shouldn't be deleted
4 this should be deleted
5 this shouldn't be deleted
6 this shouldn't be deleted
7 this shouldn't be deleted
8 this shouldn't be deleted (not touched yet)

STARTTEST
/^{/+1[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test with backspace set to the non-compatible setting[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^\d\+ this[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp bs=2[?25l[14;1H[?12l[?25h[?25l[26C[?12l[?25h[15;27Hd    [?25lvim2[?12l[?25h[?25l[15;28H[K[15;27H[?12l[?25h[16;24H[?25l[24;1H[K[24;1H:[?12l[?25hset cpo-=<[?25l[16;24H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <c-u> <left><c-u>[?25l[16;24H[?12l[?25h[?25ld3[?12l[?25h[17;24H[?25l[24;1H[K[24;1H:[?12l[?25hiunmap <c-u>[?25l[17;24H[?12l[?25h[?25l[17;1H[K[17;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h" Test with backspace set to the compatible setting[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bs=[?25l[18;1H[?12l[?25h[?25l[28Cvim5[?12l[?25h[19;27H[?25ld vim6[?12l[?25h6    [?25lzwei[?12l[?25h[?25l[19;33H[K[19;32H[?12l[?25h[20;32H[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <c-u> <left><c-u>[?25l[20;32H[?12l[?25h[?25l[15Cvim7[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H21 lines, 356 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj3J
:.,+2join
j3J
:.,+2join
jj3J
j:.,+2join
jj3J
j:.,+5join
j6J
oSome code![34m^M[m// Make sure backspacing does not remove this comment leader.[34m^[[m0i[34m^HH[11;1H^[[m
ENDTEST

{

/*
 * Make sure the previous comment leader is not removed.
 */

/*
 * Make sure the previous comment leader is not removed.
 */[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments=sO:*\ -,mO:*\ \ ,exO:*/[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments+=s1:/*,mb:*,ex:*/,://[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset comments+=s1:>#,mb:#,ex:#<,:<[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpoptions-=j joinspaces fo=j[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset backspace=eol,start[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,+3join[?25l[15;23r[15;1H[3M[1;24r[15;1H/* Make sure the previous comment leader is not removed.  */[21;1H/* List:
 * - item1
 *   foo bar baz[24;1H[K[15;1H[?12l[?25h
[?25l[16;23r[16;1H[3M[1;24r[16;1H/* Make sure the previous comment leader is not removed.  */[21;2H*   foo bar baz
 * - item2
 *   foo bar baz[16;1H[?12l[?25h
[?25l[24;1H:[?12l[?25h.,+8join[?25l[17;1H/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */[18;1H[K[19;1H/* List:[19;9H[K[20;4H- item1[20;11H[K[22;4H  foo bar baz
 * - item2[23;11H[K[17;1H[?12l[?25h
[?25l/* List: item1 foo bar baz foo bar baz item2 foo bar baz foo bar baz */[19;1H[K[20;1H// Should the next comment leader be left alone?
// Yes.[21;8H[K[22;2H[K[23;1H// Should the next comment leader be left alone?[18;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h.,+2join[?25l[19;23r[19;1H[2M[1;24r[19;4HShould the next comment leader be left alone?  Yes.


// Yes.[24;1H[K[19;1H[?12l[?25h
[?25l// Should the next comment leader be left alone?  Yes.[21;1H[K[22;2H* Here the comment leader should be left intact. */
// And so should this one.[20;1H[?12l[?25h
[?25l


:[?12l[?25h.,+2join[?25l[21;1H/* Here the comment leader should be left intact. */ // And so should this one.[22;1H[K[23;2H* Here the comment leader should be left intact. */[21;1H[?12l[?25h
[?25l/* Here the comment leader should be left intact. */ // And so should this one.[23;1H[K[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h.,+2join[?25l[23;1Hif (condition) // Remove the next comment leader!  OK, I will.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Haction();[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lif (condition) // Remove the next comment leader!  OK, I will.[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Haction();[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h.,+2join[?25l[23;1Hint i = 7 /* foo *// 3 // comment[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H;[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lint i = 7 /* foo *// 3 // comment[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H;[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h.,+5join[?25l[23;1H># Note that the last character of the ending comment leader (left angle bracket[23;1H[1m[34m@                                                                               [1;23r[m[1;1H[3M[1;24r[20;1H># Note that the last character of the ending comment leader (left angle brackett[21;1H) is a comment leader itself. Make sure that this comment leader is not removed  [22;1Hfrom the next line #< < On this line a new comment is opened which spans 2 liness[23;1H. This comment should retain its comment leader.[24;1H[K[20;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l># Note that the last character of the ending comment leader (left angle bracket[23;1H[1m[34m@                                                                               [1;23r[m[1;1H[3M[1;24r[20;1H># Note that the last character of the ending comment leader (left angle brackett[21;1H) is a comment leader itself. Make sure that this comment leader is not removed  [22;1Hfrom the next line #< < On this line a new comment is opened which spans 2 liness[23;1H. This comment should retain its comment leader.[20;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1HSome code!
// Make sure backspacing does not remove this comment leader.[?12l[?25h[?25l[22;11H// Make sure backspacing does not remove this comment leader.
}[23;2H[K[22;10H[?12l[?25h
[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:g/^STARTTEST/.,/^ENDTEST/d[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 61 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[23;19H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:?firstline?+1,$w! test.out[24;1H[K[23;19H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d[?25l74 fewer lines[24;15H[K[1;1H// Should the next comment leader be left alone?  Yes.[1;56H[K[2;1H/* Here the comment leader should be left intact. */ // And so should this one.
/* Here the comment leader should be left intact. */ // And so should this one.
if (condition) // Remove the next comment leader!  OK, I will.
    action();[5;14H[K[6;1Hif (condition) // Remove the next comment leader!  OK, I will.
    action();[7;14H[K[8;1Hint i = 7 /* foo *// 3 // comment
 ;[9;4H[K[10;1Hint i = 7 /* foo *// 3 // comment[10;34H[K[11;1H ;[11;3H[K[12;1H># Note that the last character of the ending comment leader (left angle brackett[13;1H) is a comment leader itself. Make sure that this comment leader is not removed  [14;1Hfrom the next line #< < On this line a new comment is opened which spans 2 liness[15;1H. This comment should retain its comment leader.[15;49H[K[16;1H># Note that the last character of the ending comment leader (left angle brackett[17;1H) is a comment leader itself. Make sure that this comment leader is not removed  [18;1Hfrom the next line #< < On this line a new comment is opened which spans 2 liness[19;1H. This comment should retain its comment leader.

Some code!// Make sure backspacing does not remove this comment leader.
}[22;2H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?firstline?+1,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 97 lines, 3018 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test30.failed test.ok test.out X* viminfo
cp test30.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test30.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test30.in" 222 lines, 3463 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for a lot of variations of the 'fileformats' option[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 195 lines, 3271 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$r XXtt62
:$r XXtt63
Go7[34m^[[m:$r XXtt71
Go8[34m^[[m:$r XXtt81
Go9[34m^[[m:$r XXtt91
:$r XXtt92
:$r XXtt93
Go10[34m^[[m:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

1
2
3
4
5
6
7
8
9
10[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" first write three test files, one in each format[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformat=unix[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^1/w! XX1[?25l"XX1" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^2/w! XX2[?25l"XX2" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^3/w! XX3[?25l"XX3" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^4/w! XX4[?25l"XX4" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^5/w! XX5[?25l"XX5" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^6/w! XX6[?25l"XX6" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^7/w! XX7[?25l"XX7" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^8/w! XX8[?25l"XX8" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^9/w! XX9[?25l"XX9" [24;7H[K[24;7H[New File] 1 line, 2 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^10/w! XX10[?25l"XX10" [24;8H[K[24;8H[New File] 1 line, 3 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^unix/;/eof/-1w! XXUnix[?25l"XXUnix" [24;10H[K[24;10H[New File] 2 lines, 10 characters written[1;23r[1;1H[2M[1;24r[23;1Hunix[24;1H[K[24;1H"XXUnix" [New File] 2 lines, 10 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^dos/;/eof/-1w! XXDos[?25l"XXDos" [24;9H[K[24;9H[New File] 2 lines, 10 characters written[1;23r[1;1H[4M[1;24r[20;1Hunix
eof

dos[34m^M[m[24;1H[K[24;1H"XXDos" [New File] 2 lines, 10 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin noeol[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w! XXMac[?25l"XXMac" [24;9H[K[24;9H[New File][Incomplete last line] 1 line, 8 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin eol[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUnix XXDos XXMac[?25l3 buffers wiped out[24;21H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" create mixed format files[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("vms")[?25l
:  [?12l[?25h: !copy XXUnix,XXDos XXUxDs.
[?25l:  [?12l[?25h: !copy XXUnix,XXMac XXUxMac.
[?25l:  [?12l[?25h: !copy XXDos,XXMac  XXDosMac.
[?25l:  [?12l[?25h: !copy XXUnix,XXDos,XXMac XXUxDsMc.
[?25l:  [?12l[?25h:elseif has("win32")
[?25l:  [?12l[?25h: !copy /b XXUnix+XXDos XXUxDs
[?25l:  [?12l[?25h: !copy /b XXUnix+XXMac XXUxMac
[?25l:  [?12l[?25h: !copy /b XXDos+XXMac XXDosMac
[?25l:  [?12l[?25h: !copy /b XXUnix+XXDos+XXMac XXUxDsMc
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: !cat XXUnix XXDos >XXUxDs
[?25l:!cat XXUnix XXDos >XXUxDs[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25h !cat XXUnix XXMac >XXUxMac
[?25l:!cat XXUnix XXMac >XXUxMac[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25h !cat XXDos XXMac >XXDosMac
[?25l:!cat XXDos XXMac >XXDosMac[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25h !cat XXUnix XXDos XXMac >XXUxDsMc
[?25l:!cat XXUnix XXDos XXMac >XXUxDsMc[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25hendif[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[27m[m[H[2J[1;1H:$r XXtt93
Go10[34m^[[m:$r XXUnix
:set nobinary ff&
:w
:qa!
ENDTEST

1
2
3
4
5
6
7
8
9
10

unix
unix
eof

dos[34m^M[?12l[?25h[?25l
[m:[?12l[?25h" try reading and writing with 'fileformats' empty[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformat=unix[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUnix[?25l"XXUnix" [24;10H[K[24;10H2 lines, 10 characters[1;1Hunix[1;5H[K[2;1Hunix[2;5H[K[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 2 lines, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXDos[?25l"XXDos" [24;9H[K[24;9H2 lines, 10 characters[1;1Hdos[34m^M[m
dos[34m^M[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt01[?25l"XXtt01" [24;10H[K[24;10H[New File] 2 lines, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXMac[?25l"XXMac" [24;9H[K[24;9H[Incomplete last line] 1 line, 8 characters[1;1Hmac[2Cmac[34m^M[m
[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt02[?25l"XXtt02" [24;10H[K[24;10H[New File] 1 line, 9 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUnix XXDos XXMac[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters
3 buffers wiped out
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset fileformat=dos[?25l[1;1H[2L[1;1H:qa!
ENDTEST[3;1H[K[4;1H1[4;2H[K[5;1H2[5;2H[K[6;1H3[6;2H[K[7;1H4[7;2H[K[8;1H5[8;2H[K[9;1H6[9;2H[K[10;1H7[10;2H[K[11;1H8[11;2H[K[12;1H9[12;2H[K[13;1H10[13;3H[K[14;1H[K[15;1Hunix[15;5H[K[16;1Hunix[16;5H[K[17;1Heof[17;4H[K[18;1H[K[19;1Hdos[34m^M[m[19;6H[K[20;1Hdos[34m^M[m[20;6H[K[21;1Heof[21;4H[K[22;1H[K[23;1Hmac[34m^M[mmac[34m^M[m[23;11H[K[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25he! XXUnix[?25l"XXUnix" [24;10H[K[24;10H[CR missing][dos format] 2 lines, 10 characters[1;1Hunix
unix[2;5H[K[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt11[?25l"XXtt11" [24;10H[K[24;10H[New File][dos format] 2 lines, 12 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXDos[?25l"XXDos" [24;9H[K[24;9H[dos format] 2 lines, 10 characters[1;1Hdos[1;4H[K[2;1Hdos[2;4H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! XXtt12[?25l"XXtt12" [24;10H[K[24;10H[New File][dos format] 2 lines, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXMac[?25l"XXMac" [24;9H[K[24;9H[Incomplete last line][dos format] 1 line, 8 characters[1;1Hmac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt13[?25l"XXtt13" [24;10H[K[24;10H[New File][dos format] 1 line, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUnix XXDos XXMac[?25l"test30.in" [24;13H[K[24;13H[CR missing][dos format] 222 lines, 3463 characters
3 buffers wiped out
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset fileformat=mac[?25l[1;1H[2L[1;1H:qa!
ENDTEST[3;1H[K[4;1H1[4;2H[K[5;1H2[5;2H[K[6;1H3[6;2H[K[7;1H4[7;2H[K[8;1H5[8;2H[K[9;1H6[9;2H[K[10;1H7[10;2H[K[11;1H8[11;2H[K[12;1H9[12;2H[K[13;1H10[13;3H[K[14;1H[K[15;1Hunix[15;5H[K[16;1Hunix[16;5H[K[17;1Heof[17;4H[K[18;1H[K[19;1Hdos[19;4H[K[20;1Hdos[20;4H[K[21;1Heof[21;4H[K[22;1H[K[23;1Hmac[34m^J[mmac[23;9H[K[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25he! XXUnix[?25l"XXUnix" [24;10H[K[24;10H[Incomplete last line][mac format] 1 line, 10 characters[1;1Hunix[34m^J[munix[34m^J[m
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt21[?25l"XXtt21" [24;10H[K[24;10H[New File][mac format] 1 line, 11 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXDos[?25l"XXDos" [24;9H[K[24;9H[Incomplete last line][mac format] 3 lines, 10 characters[1;1Hdos[1;4H[K[2;1H[34m^J[mdos[2;6H[K[3;1H[34m^J[m[3;3H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! XXtt22[?25l"XXtt22" [24;10H[K[24;10H[New File][mac format] 3 lines, 11 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXMac[?25l"XXMac" [24;9H[K[24;9H[mac format] 2 lines, 8 characters[1;1Hmac
mac[2;4H[K[3;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt23[?25l"XXtt23" [24;10H[K[24;10H[New File][mac format] 2 lines, 8 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUnix XXDos XXMac[?25l"test30.in" [24;13H[K[24;13H[Incomplete last line][mac format] 5 lines, 3463 characters
3 buffers wiped out
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[2L[1;1H[34m^J[mdos
[34m^J[meof[34m^J^J[mmac
mac[3;4H[K[4;1H[34m^J[m[4;3H[K[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" try reading and writing with 'fileformats' set to one format[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=unix[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;5H[K[2;1Hunix[2;5H[K[3;1Hdos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m[5;11H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! XXtt31[?25l"XXtt31" [24;10H[K[24;10H[New File] 5 lines, 29 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=dos[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line][CR missing][dos format] 5 lines, 28 character
[23;80Hs[24;1H
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt32[?25l"XXtt32" [24;10H[K[24;10H[New File][dos format] 5 lines, 32 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H[CR missing][dos format] 222 lines, 3463 characters[1;1H[3L[1;1HTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.[24;1H[K[24;1H"test30.in" [CR missing][dos format] 222 lines, 3463 characters[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=mac[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[mac format] 4 lines, 28 characters[1;1Hunix[34m^J[munix[34m^J[mdos[1;16H[K[2;1H[34m^J[mdos
[34m^J[mmac[3;7H[K[4;1Hmac
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt33[?25l"XXtt33" [24;10H[K[24;10H[New File][mac format] 4 lines, 28 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H[Incomplete last line][mac format] 5 lines, 3463 characters[1;1H[34m^J[mdos[1;6H[K[2;3Heof[34m^J^J[mmac
mac[3;4H[K[4;1H[34m^J[m[4;3H[K[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" try reading and writing with 'fileformats' set to two formats[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=unix,dos[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;5H[K[2;1Hunix[2;5H[K[3;1Hdos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m[5;11H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! XXtt41[?25l"XXtt41" [24;10H[K[24;10H[New File] 5 lines, 29 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxMac[?25l"XXUxMac" [24;11H[K[24;11H[Incomplete last line] 3 lines, 18 characters[1;1Hunix[1;6H[K[2;1Hunix
mac[34m^M[mmac[34m^M[m[3;12H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt42[?25l"XXtt42" [24;10H[K[24;10H[New File] 3 lines, 19 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxMac[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXDosMac[?25l"XXDosMac" [24;12H[K[24;12H[Incomplete last line][dos format] 3 lines, 18 characters[1;1Hdo[1;4H[K[2;1Hdos
mac[34m^M[mmac[34m^M[m[3;12H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt43[?25l"XXtt43" [24;10H[K[24;10H[New File][dos format] 3 lines, 20 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXDosMac[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=unix,mac[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDs[?25l"XXUxDs" [24;10H[K[24;10H4 lines, 20 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt51[?25l"XXtt51" [24;10H[K[24;10H[New File] 4 lines, 20 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDs[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt52[?25l"XXtt52" [24;10H[K[24;10H[New File] 5 lines, 29 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXDosMac[?25l"XXDosMac" [24;12H[K[24;12H[mac format] 4 lines, 18 characters[1;1Hdo[1;4H[K[2;1H[34m^J[mdos
[34m^J[mmac[3;7H[K[4;1Hmac
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt53[?25l"XXtt53" [24;10H[K[24;10H[New File][mac format] 4 lines, 18 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXDosMac[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=dos,mac[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDs[?25l"XXUxDs" [24;10H[K[24;10H[CR missing][dos format] 4 lines, 20 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[3;4H[K[4;1Hdos
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt61[?25l"XXtt61" [24;10H[K[24;10H[New File][dos format] 4 lines, 22 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDs[?25l"test30.in" [24;13H[K[24;13H[CR missing][dos format] 222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxMac[?25l"XXUxMac" [24;11H[K[24;11H[Incomplete last line][CR missing][dos format] 3 lines, 18 characters[1;1Hunix[1;6H[K[2;1Hunix
mac[34m^M[mmac[34m^M[m[3;12H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt62[?25l"XXtt62" [24;10H[K[24;10H[New File][dos format] 3 lines, 22 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxMac[?25l"test30.in" [24;13H[K[24;13H[CR missing][dos format] 222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line][CR missing][dos format] 5 lines, 28 character
[23;80Hs[24;1H
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt63[?25l"XXtt63" [24;10H[K[24;10H[New File][dos format] 5 lines, 32 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H[CR missing][dos format] 222 lines, 3463 characters[1;1H[3L[1;1HTest for a lot of variations of the 'fileformats' option

Note: This test will fail if "cat" is not available.[24;1H[K[24;1H"test30.in" [CR missing][dos format] 222 lines, 3463 characters[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" try reading and writing with 'fileformats' set to three formats[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=unix,dos,mac[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt71[?25l"XXtt71" [24;10H[K[24;10H[New File] 5 lines, 29 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=mac,dos,unix[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt81[?25l"XXtt81" [24;10H[K[24;10H[New File] 5 lines, 29 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" try with 'binary' set[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=mac,unix,dos[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset binary[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt91[?25l"XXtt91" [24;10H[K[24;10H[New File][Incomplete last line] 5 lines, 28 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=mac[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt92[?25l"XXtt92" [24;10H[K[24;10H[New File][Incomplete last line] 5 lines, 28 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe XXUxDsMc[?25l"test30.in" [24;13H[K[24;13H222 lines, 3463 characters[1;1HTest for a lot of variations of the 'fileformats' option[2;1H[K[3;1HNote: This test will fail if "cat" is not available.[4;1H[K[5;1HSTARTTEST[5;10H[K[6;1H:so small.vim[6;14H[K[7;1H:" first write three test files, one in each format[7;52H[K[8;1H:set fileformat=unix[8;21H[K[9;1H:set fileformats=[9;18H[K[10;1H:/^1/w! XX1[10;12H[K[11;1H:/^2/w! XX2[11;12H[K[12;1H:/^3/w! XX3[12;12H[K[13;1H:/^4/w! XX4[13;12H[K[14;1H:/^5/w! XX5[14;12H[K[15;1H:/^6/w! XX6[15;12H[K[16;1H:/^7/w! XX7[16;12H[K[17;1H:/^8/w! XX8[17;12H[K[18;1H:/^9/w! XX9[18;12H[K[19;1H:/^10/w! XX10[19;14H[K[20;1H:/^unix/;/eof/-1w! XXUnix[20;26H[K[21;1H:/^dos/;/eof/-1w! XXDos[21;24H[K[22;1H:set bin noeol[22;15H[K[23;1H:$w! XXMac[23;11H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=dos[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! XXUxDsMc[?25l"XXUxDsMc" [24;12H[K[24;12H[Incomplete last line] 5 lines, 28 characters[1;1Hunix[1;6H[K[2;1Hunix
dos[34m^M[m[3;7H[K[4;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[m
[1m[34m~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! XXtt93[?25l"XXtt93" [24;10H[K[24;10H[New File][Incomplete last line] 5 lines, 28 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Append "END" to each file so that we can see what the last written char was.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformat=unix nobin[?25l[1;1H[?12l[?25h[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [m[24;1H--No lines in buffer--[24;23H[K[1;1H[?12l[?25h[?25lEND[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt01[?25l"XXtt01" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt02[?25l"XXtt02" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt11[?25l"XXtt11" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt12[?25l"XXtt12" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt13[?25l"XXtt13" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt21[?25l"XXtt21" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt22[?25l"XXtt22" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt23[?25l"XXtt23" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt31[?25l"XXtt31" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt32[?25l"XXtt32" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt33[?25l"XXtt33" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt41[?25l"XXtt41" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt42[?25l"XXtt42" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt43[?25l"XXtt43" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt51[?25l"XXtt51" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt52[?25l"XXtt52" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt53[?25l"XXtt53" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt61[?25l"XXtt61" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt62[?25l"XXtt62" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt63[?25l"XXtt63" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt71[?25l"XXtt71" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt81[?25l"XXtt81" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt91[?25l"XXtt91" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt92[?25l"XXtt92" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XXtt93[?25l"XXtt93" [24;10H[K[24;10H1 line, 4 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Concatenate the results.[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Make fileformat of test.out the native fileformat.[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Add a newline at the end.[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset binary[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! test.out[?25l"test.out" [24;12H[K[24;12H2 lines, 10 characters[1;1Hunix
unix[2;5H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt01[?25l"XXtt01" [24;10H[K[24;10H3 lines, 14 characters[3;1Hdos[34m^M[m[3;6H[K[4;1Hdos[34m^M[m[4;6H[K[5;1HEND[5;4H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt02[?25l"XXtt02" [24;10H[K[24;10H2 lines, 13 characters[6;1Hmac[34m^M[mmac[34m^M[m[6;11H[K[7;1HEND[7;4H[K[6;1H[?12l[?25h
[?25l
1[8;2H[K[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt11[?25l"XXtt11" [24;10H[K[24;10H3 lines, 16 characters[9;1Hunix[34m^M[m[9;7H[K[10;1Hunix[34m^M[m[10;7H[K[11;1HEND[11;4H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt12[?25l"XXtt12" [24;10H[K[24;10H3 lines, 14 characters[12;1Hdos[34m^M[m[12;6H[K[13;1Hdos[34m^M[m[13;6H[K[14;1HEND[14;4H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt13[?25l"XXtt13" [24;10H[K[24;10H2 lines, 14 characters[15;1Hmac[34m^M[mmac[34m^M^M[m[15;13H[K[16;1HEND[16;4H[K[15;1H[?12l[?25h
[?25l
2[17;2H[K[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt21[?25l"XXtt21" [24;10H[K[24;10H3 lines, 15 characters[18;1Hunix[18;5H[K[19;1Hunix[19;5H[K[20;1H[34m^M[mEND[20;6H[K[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt22[?25l"XXtt22" [24;10H[K[24;10H3 lines, 15 characters[21;1Hdos[34m^M[m[21;6H[K[22;1Hdos[34m^M[m[22;6H[K[23;1H[34m^M[mEND[23;6H[K[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XXtt23[?25l"XXtt23" [24;10H[K[24;10H1 line, 12 characters[1;23r[23;1H
[1;24r[23;1Hmac[34m^M[mmac[34m^M[mEND[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H3[?12l[?25h[?25l
:[?12l[?25h$r XXtt31[?25l"XXtt31" [24;10H[K[24;10H6 lines, 33 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt32[?25l"XXtt32" [24;10H[K[24;10H6 lines, 36 characters[1;23r[1;1H[6M[1;24r[18;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m
END
unix[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt33[?25l"XXtt33" [24;10H[K[24;10H5 lines, 32 characters[1;23r[1;1H[6M[1;24r[18;1Hunix[34m^M[m
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M^M[m
END
unix[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[4M[1;24r[20;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[mEND[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H4[?12l[?25h[?25l
:[?12l[?25h$r XXtt41[?25l"XXtt41" [24;10H[K[24;10H6 lines, 33 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt42[?25l"XXtt42" [24;10H[K[24;10H4 lines, 23 characters[1;23r[1;1H[6M[1;24r[18;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m
END
unix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt43[?25l"XXtt43" [24;10H[K[24;10H4 lines, 24 characters[1;23r[1;1H[4M[1;24r[20;1Hunix
mac[34m^M[mmac[34m^M[m
END
dos[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M^M[m
END[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H5[?12l[?25h[?25l
:[?12l[?25h$r XXtt51[?25l"XXtt51" [24;10H[K[24;10H5 lines, 24 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt52[?25l"XXtt52" [24;10H[K[24;10H6 lines, 33 characters[1;23r[1;1H[5M[1;24r[19;1Hunix
dos[34m^M[m
dos[34m^M[m
END
unix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt53[?25l"XXtt53" [24;10H[K[24;10H3 lines, 22 characters[1;23r[1;1H[6M[1;24r[18;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m
END
dos[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hdos[34m^M[m
mac[34m^M[mmac[34m^M[mEND[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H6[?12l[?25h[?25l
:[?12l[?25h$r XXtt61[?25l"XXtt61" [24;10H[K[24;10H5 lines, 26 characters[1;23r[23;1H
[1;24r[23;1Hunix[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt62[?25l"XXtt62" [24;10H[K[24;10H4 lines, 26 characters[1;23r[1;1H[5M[1;24r[19;1Hunix[34m^M[m
dos[34m^M[m
dos[34m^M[m
END
unix[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt63[?25l"XXtt63" [24;10H[K[24;10H6 lines, 36 characters[1;23r[1;1H[4M[1;24r[20;1Hunix[34m^M[m
mac[34m^M[mmac[34m^M^M[m
END
unix[34m^M[m[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[5M[1;24r[19;1Hunix[34m^M[m
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M^M[m
END[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H7[?12l[?25h[?25l
:[?12l[?25h$r XXtt71[?25l"XXtt71" [24;10H[K[24;10H6 lines, 33 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[5M[1;24r[19;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m
END[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H8[?12l[?25h[?25l
:[?12l[?25h$r XXtt81[?25l"XXtt81" [24;10H[K[24;10H6 lines, 33 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[5M[1;24r[19;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[m
END[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H9[?12l[?25h[?25l
:[?12l[?25h$r XXtt91[?25l"XXtt91" [24;10H[K[24;10H5 lines, 32 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt92[?25l"XXtt92" [24;10H[K[24;10H5 lines, 32 characters[1;23r[1;1H[5M[1;24r[19;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[mEND
unix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r XXtt93[?25l"XXtt93" [24;10H[K[24;10H5 lines, 32 characters[1;23r[1;1H[5M[1;24r[19;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[mEND
unix[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[4M[1;24r[20;1Hunix
dos[34m^M[m
dos[34m^M[m
mac[34m^M[mmac[34m^M[mEND[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H10[?12l[?25h[?25l
:[?12l[?25h$r XXUnix[?25l"XXUnix" [24;10H[K[24;10H2 lines, 10 characters[1;23r[23;1H
[1;24r[23;1Hunix[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset nobinary ff&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" 121 lines, 664 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test31.failed test.ok test.out X* viminfo
cp test31.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test31.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test31.in" 75 lines, 1545 characters[1;1HTest for commands that close windows and/or buffers:
:quit
:close
:hide
:only
:sall
:all
:ball
:buf
:edit

STARTTEST
:so tiny.vim
GA 1[34m^[[m:$w! Xtest1
$r2:$w! Xtest2
$r3:$w! Xtest3
:n! Xtest1 Xtest2
A 1[34m^[[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for commands that close windows and/or buffers:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 60 lines, 1410 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set hidden
:e Xtest1
:w >>test.out
:" test ":close" not hiding when 'hidden' not set in modified buffer;
:" write "testtext 3 3 3"
:sp Xtest3
:set nohidden
A 3[34m^[[m:close
:w >>test.out
:" test ":close!" does hide when 'hidden' not set in modified buffer;
:" write "testtext 1"
A 3[34m^[[m:close!
:w >>test.out
:set nohidden
:" test ":all!" hides changed buffer; write "testtext 2 2 2"
:sp Xtest4
GA 4[34m^[[m:all!
:1wincmd w
:w >>test.out
:qa!
ENDTEST

testtext[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso tiny.vim[?25l[22;1H[?12l[?25h
[?25l[9C1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w! Xtest1[?25l"Xtest1" [24;10H[K[24;10H[New File] 1 line, 11 characters written[23;10H[?12l[?25h[?25l2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w! Xtest2[?25l"Xtest2" [24;10H[K[24;10H[New File] 1 line, 11 characters written[23;10H[?12l[?25h[?25l3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w! Xtest3[?25l"Xtest3" [24;10H[K[24;10H[New File] 1 line, 11 characters written[23;10H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hn! Xtest1 Xtest2[?25l"Xtest1" [24;10H[K[24;10H1 line, 11 characters[1;1Htesttext 1[1;11H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[11C1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hidden[?25l[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for working :n when hidden set; write "testtext 2"[?25l[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hn[?25l"Xtest2" 1 line, 11 characters[1;10H2[1;12H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 11 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for failing :rew when hidden not set; write "testtext 2 2"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nohidden[?25l[1;1H[?12l[?25h[?25l[11C2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hrew[?25l[1m[37m[41mE37: No write since last change (add ! to override)[1;12H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 13 characters appended[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for working :rew when hidden set; write "testtext 1 1"[?25l[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hidden[?25l[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hrew[?25l"Xtest1" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)[1;10H1 1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 13 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for :all keeping a buffer when it's modified; write "testtext 1 1 1"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nohidden[?25l[1;1H[?12l[?25h[?25l[13C1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp[?25l[12;1H[1m[7mXtest1 [+]                                                                      [m[13;1Htesttext 1 1 1[13;15H[K[23;1H[7mXtest1 [+]                                                                      [1;14H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hn Xtest2 Xtest3[?25l"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)[1;10H2 2[1;14H[K[12;6H[1m[7m2 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hall[?25l"Xtest3" 1 line, 11 characters[27m[m[H[2J[1;1Htesttext 1 1 1
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[8;1H[7mXtest1 [+]                                                                      [m[9;1Htesttext 2 2
[1m[34m~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [m[15;1H[1m[7mXtest2 [+]                                                                      [m[16;1Htesttext 3
[1m[34m~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[7mXtest3                                                                          [9;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h1wincmd w[?25l[8;1H[1m[7mXtest1 [+]                                                                      [m[15;1H[7mXtest2 [+][m[1m[7m [m[7m                                                                      [1;14H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 15 characters appended[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test abandoning changed buffer, should be unloaded even when 'hidden' set[?25l[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" write "testtext 2 2" twice[?25l[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hidden[?25l[1;14H[?12l[?25h[?25l1 1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[27m[m[H[2J[1;1Htesttext 2 2
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mXtest2 [+]                                                                      [m[13;1Htesttext 3
[1m[34m~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[7mXtest3                                                                          [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 13 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunhide[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 13 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":hide" hides anyway when 'hidden' not set; write "testtext 3"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nohidden[?25l[1;1H[?12l[?25h[?25l[13C2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhide[?25l[1;10H3[1;12H[K[12;1H[1m[34m~                                                                               [13;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":edit" failing in modified buffer when 'hidden' not set[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" write "testtext 3 3"[?25l[1;1H[?12l[?25h[?25l[11C3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtest1[?25l[1m[37m[41mE37: No write since last change (add ! to override)[1;12H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 13 characters appended[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":edit" working in modified buffer when 'hidden' set; write "testtext 1
[23;80H"[24;1H[?25l[1;1H[L[1;1Htesttext 3 3[24;1H[K[1;12H[?12l[?25h[?25l[24;1H:[?12l[?25hset hidden[?25l[1;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtest1[?25l"Xtest1" 1 line, 11 characters[1;10H1[1;12H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":close" not hiding when 'hidden' not set in modified buffer;[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" write "testtext 3 3 3"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xtest3[?25l"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)[1;10H3 3[12;1H[1m[7mXtest3 [+]                                                                      [m[13;1Htesttext 1[13;11H[K[23;1H[7mXtest1                                                                          [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset nohidden[?25l[1;1H[?12l[?25h[?25l[13C3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[1m[37m[41mE37: No write since last change (add ! to override)[1;14H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 15 characters appended[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":close!" does hide when 'hidden' not set in modified buffer;[?25l[1;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" write "testtext 1"[?25l[1;14H[?12l[?25h[?25l3 3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose![?25l[1;10H1[1;12H[K[12;1H[1m[34m~                                                                               [13;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nohidden[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test ":all!" hides changed buffer; write "testtext 2 2 2"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp Xtest4[?25l"Xtest4" [New File][1;1H[K[12;1H[1m[7mXtest4                                                                          [m[13;1Htesttext 1[13;11H[K[23;1H[7mXtest1                                                                          [1;1H[?12l[?25h[?25l[m 4[12;8H[1m[7m[+][1;2H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hall![?25l"Xtest2" [Modified] line 1 of 1 --100%-- col 1 (file 1 of 2)
"Xtest3" [Modified] line 1 of 1 --100%-- col 1 (file 2 of 2)
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1wincmd w[?25l[1;1H[2L[1;1Htesttext 2 2 2
[1m[34m~                                                                               [m[11;1H[1m[7mXtest2 [+]                                                                      [m[12;1Htesttext 3 3 3 3[12;17H[K[13;1H[1m[34m~                                                                               [m[23;6H[7m3 [+][m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 15 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test32.failed test.ok test.out X* viminfo
cp test32.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test32.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test32.in" 60 lines, 1391 characters[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)[11;1H: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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for insert expansion[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:so small.vim[24;1H[K[23;1H[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 27 lines, 533 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1HO[34m^N^[[mIX[34m^[[mA[34m^X^F^N^[[m
:" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use
:" CTRL-X CTRL-F again to verify this doesn't cause trouble.
OX[34m^X^F^H^H^H^H^H^H^H^H^X^F^[[mddk
:se cpt=w
OST[34m^N^P^P^P^P^[[m
:se cpt=u nohid
[34m^W[moOEN[34m^N[m
unl[34m^N^X^X^P^[[m
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O[34m^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D[m
a[34m^N^[[m
:wq! test.out
ENDTEST

start of testfile
run1
run2
end of testfile

test11  36Gepeto[8C/Tag/
asd     test11file      36G
Makefile[8Cto      run[14;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hse nocp viminfo+=nviminfo cpt=.,w ff=unix | $-2,$w!Xtestfile | set ff&[?25l"Xtestfile" [24;13H[K[24;13H[New] 3L, 57C written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hse cot=[?25l[15;1H[?12l[?25h[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1Hunl[34m^N^X^X^P^[[m
:se cpt=t,d def=^\\k* tags=Xtestfile notagbsearch
O[34m^X^]^X^D^X^D^X^X^D^X^D^X^D^X^D[m
a[34m^N^[[m[16;7H[K[17;1H:wq! test.out
ENDTEST[19;1H[K[20;1Hstart of testfile
run1[21;5H[K[22;1Hrun2[22;9H[K[23;1H[7mtest32.in                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Keyword completion (^N^P) [m[32mmatch 1 of 4[2;3H[m[24;29H[K[24;1Hmatch in file test32.in[1m^[m[24;24H[K[24;1H[1m-- Keyword completion (^N^P) [m[32mmatch 2 of 4[2;5H[m[24;29H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mAdding Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Adding Keyword completion (^N^P) Word from other line[2;10H[m[1;1H#include "Xtestfile"
run1 run2[2;10H[K[3;1H[K[12;11H[1m[7m[+][2;10H[?12l[?25h[m[24;1H[K[?25l[24;1H[1m-- Adding Keyword completion (^N^P) Word from other line[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[2;9H[?12l[?25h[?25l3[?12l[?25h
[?25l[24;1H[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1H[1m-- Keyword completion (^N^P) [m[32mmatch 1 of 115[3;5H[m[24;29H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mAdding Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1H[1m-- Adding Keyword completion (^N^P) Word from other line[3;10H[m[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mKeyword Local completion (^N^P) -- Searching...[m[24;36H[32mmatch 1 of 4[m[1m.[m[24;48H[K[4;5H[24;35H[K[24;35H[1m [m[32mmatch 2 of 4[4;5H[m[24;35H[K[24;35H[1m [m[32mmatch 3 of 4[4;10H[m[24;35H[K[24;35H[1m [m[32mmatch 4 of 4[4;8H[m[24;35H[K[24;35H[1m [m[31mBack at original[4;1H[m[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mKeyword Local completion (^N^P) -- Searching...[m[24;36H[32mmatch 1 of 4[m[1m.[m[24;48H[K[5;5H[24;35H[K[24;35H[1m [m[32mmatch 2 of 4[5;5H[m[24;35H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mKeyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1H[1m-- Keyword completion (^N^P) The only match[5;5H[m[24;29H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mAdding Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1H[1m-- Adding Keyword completion (^N^P) [m[32mmatch 1 of 2[5;10H[m[24;36H[K[24;1Hmatch in file test32.in[1me[m[24;24H[K[24;1H[1m-- Adding Keyword completion (^N^P) Word from other line[5;10H[m[3;1Hrun3 run3[4;1H[K[5;1Hrun1 run2[5;10H[K[6;1H[K[5;10H[?12l[?25h[24;1H[K[?25l[24;1H[1m-- Adding Keyword completion (^N^P) Word from other line[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[5;9H[?12l[?25h
[?25l[24;1H:[?12l[?25hse cpt=.,w,i[?25l[6;1H[?12l[?25h[5;9H[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;4H[1mKeyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;9H[32m included file: Xtestfile[mmatch in file test32.in[24;24H[K[24;1H[1m-- Keyword completion (^N^P) The only match[5;9H[m[24;29H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mAdding Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;9H[32m included file: Xtestfile[mmatch in file test32.in[24;24H[K[24;1H[1m-- Adding Keyword completion (^N^P) The only match[5;19H[m[24;36H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mAdding Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;9H[32m included file: Xtestfile[mmatch in file test32.in[24;24H[K[24;1H[1m-- Adding Keyword completion (^N^P) The only match[5;28H[m[24;36H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mKeyword Local completion (^N^P) -- Searching...[m[24;36H[32mmatch 1 of 3[m[1m.[m[24;48H[K[5;29H[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Whole line completion (^L^N^P)^ U-- Searching...[m[32mScanning: test32.in[m[1me[m[24;20H[K[24;1H[1m-- Whole line completion (^L^N^P) [m[32mmatch 1 of 57[6;29H[m[24;4H[1mINSERT --e[m[24;13H[K[24;1H[K[24;1H[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) [m[32mmatch 1 of 57[m[24;4H[1mAddinge Whole line completion (^L^N^P) -- Searching...[m[32mScanning: test32.in[m[1me[m[24;20H[K[24;1H[1m-- Adding Whole line completion (^L^N^P) The only match[7;29H[m[24;41H[K[24;41H[1m [m[31mBack at original[7;1H[m[24;41H[K[24;41H[1m The only match[7;29H[m[5;1HMakefile [7Cto      run3
Makefile[8Cto      run3
Makefile        to      run3[7;29H[K[8;1Hrun1 run2[8;10H[K[9;1H[K[7;29H[?12l[?25h[24;1H[K[?25l[24;1H[1m-- INSERT --[m[24;1H[K[7;28H[?12l[?25h[8;9H[?25l[24;1H:[?12l[?25hse cpt=kXtestfile[?25l[8;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw Xtest11.one[?25l"Xtest11.one" [New] 9L, 104C written[12;1H[1m[7mXtest11.one+   [8;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw Xtest11.two[?25l"Xtest11.two" [New] 9L, 104C written[8;9H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;4H[1mKeyword completion (^N^P) -- Searching...[m[32mScanning dictionary: Xtestfile[m[1m-[m[24;31H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Keyword completion (^N^P) [m[32mmatch 1 of 9[8;7H[mtest11[8;7H[K[9;1Hrun1 run2[10;1H[K[12;13H[1m[7m[+][8;7H[mI[?12l[?25h [24;1H[K[?25l[24;1H[1m-- Keyword completion (^N^P) [m[32mmatch 1 of 9[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[8;6H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[8;1HXtest11[?12l[?25h[?25l[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- File name completion (^F^N^P)s ^-- Searching...[m[24;34H[32mmatch 1 of 2[m[1m.[m[24;46H[K[8;12H[24;33H[K[24;33H[1m [m[32mmatch 2 of 2[8;12H[m.two[?12l[?25h[24;1H[K[?25l[24;1H[1m-- INSERT --[m[24;1H[K[8;11H[?12l[?25h[9;9H[?25l[24;1H:[?12l[?25h" use CTRL-X CTRL-F to complete Xtest11.one, remove it and then use[?25l[9;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" CTRL-X CTRL-F again to verify this doesn't cause trouble.[?25l[9;9H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- File name completion (^F^N^P)s ^-- Searching...[m[24;34H[32mmatch 1 of 4[m[1m.[m[24;46H[K[9;8H[24;4H[1mINSERTa -- [m[24;13H[K[24;1H[K[24;1H[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- File name completion (^F^N^P)s ^-- Searching...[m[24;34H[32mmatch 1 of 298[m[1m.[m[24;48H[K[9;15HMake_amiga.mak
run1 run2[11;1H[K[9;15Hd[?12l[?25h [24;1H[K[?25l[24;1H[1m-- INSERT --[m[24;1H[K[9;14H[?12l[?25h[?25lrun1 run2[9;10H[K[10;1H[K[11;1H[1m[34m~                                                                               [9;1H[?12l[?25h[8;1H
[?25l[24;1H[m:[?12l[?25hse cpt=w[?25l[9;1H[?12l[?25h[?25l[24;1H[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Keyword completion (^N^P) The only match[9;10H[m[24;29H[K[24;29H[1m [m[31mBack at original[9;3H[m[24;29H[K[24;1Hmatch in file test32.in[1m^[m[24;24H[K[24;1H[1m-- Keyword completion (^N^P) The only match[9;10H[m[24;29H[K[24;29H[1m [m[31mBack at original[9;3H[m[24;29H[K[24;1Hmatch in file test32.in[1m^[m[24;24H[K[24;1H[1m-- Keyword completion (^N^P) The only match[9;10H[mSTARTTEST
run1 run2[11;1H[K[9;10H[?12l[?25h[24;1H[K[?25l[24;1H[1m-- Keyword completion (^N^P) The only match[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[9;9H[?12l[?25h[10;9H[?25l[24;1H:[?12l[?25hse cpt=u nohid[?25l[10;9H[?12l[?25h[?25l

[1m[34m~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [10;9H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;4H[1mKeyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Keyword completion (^N^P) The only match[10;8H[m[24;1H[K[24;1H[1m-- INSERT ---- Keyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Keyword completion (^N^P) [m[32mmatch 1 of 3[11;7H[m[24;29H[K[24;1H[K[24;1H[1m-- INSERT ---- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- INSERTe --^[m[24;13H[K[24;4H[1mKeyword completion (^N^P) -- Searching...[m[32mScanning: test32.in[m[1mo[m[24;20H[K[24;1Hmatch in file test32.in[1m-- Keyword completion (^N^P) The only match[11;7H[m[10;1HENDTEST[10;8H[K[11;1Hunless
run1 run2[12;10H[K[13;1H[K[11;7H[?12l[?25h[24;1H[K[?25l[24;1H[1m-- Keyword completion (^N^P) The only match[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[11;6H[?12l[?25h[12;6H[?25l[24;1H:[?12l[?25hse cpt=t,d def=^\\k* tags=Xtestfile notagbsearch[?25l[12;6H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Tag completion (^]^N^P)^ N-- Searching...[m[24;28H[32mmatch 1 of 3[m[1m.[m[24;40H[K[12;7H[24;4H[1mINSERTm --e[m[24;13H[K[24;1H[K[24;1H[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) [m[32mmatch 1 of 3[m[24;4H[1mDefinition completion (^D^N^P)^ U-- Searching...[m[24;50H[K[24;1H[32mScanning included file: Xtestfile[m[1m [m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Definition completion (^D^N^P) The only match[12;11H[24;4HINSERTt --n[m[24;13H[K[24;1H[K[24;1H[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...[m[32mScanning included file: Xtestfile[m[1m^[m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Adding Definition completion (^D^N^P) The only match[12;20H[24;4HINSERT --f[m[24;13H[K[24;1H[K[24;1H[1m-- ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y) The only match-- INSERTe --^[m[24;13H[K[24;4H[1m^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)-- Definition completion (^D^N^P)^ U-- Searching...[m[32mScanning included file: Xtestfile[m[1m [m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Definition completion (^D^N^P) The only match[12;25H[24;4HINSERTt --n[m[24;13H[K[24;1H[K[24;1H[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...[m[32mScanning included file: Xtestfile[m[1m^[m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Adding Definition completion (^D^N^P) The only match[12;37H[24;4HINSERT --f[m[24;13H[K[24;1H[K[24;1H[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...[m[32mScanning included file: Xtestfile[m[1m^[m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Adding Definition completion (^D^N^P) The only match[12;38H[24;4HINSERT --f[m[24;13H[K[24;1H[K[24;1H[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...[m[32mScanning included file: Xtestfile[m[1m^[m[24;34H[K[24;1Hmatch in file Xtestfile[24;24H[K[24;1H[1m-- Adding Definition completion (^D^N^P) Word from other line[12;42H[24;4HINSERT --f[m[24;13H[K[24;1H[K[24;1H[1m-- Keyword completion (^N^P) -- Searching...[m[32mScanning tags.[m[1mp[m[24;15H[K[24;10H[32mincluded file: Xtestfile[m[1m-- Keyword completion (^N^P) The only match[13;4H[m[12;1Htest11file      36Gepeto[8C/Tag/ asd
asd
run1 run2[14;10H[K[15;1H[K[13;4H[?12l[?25h[24;1H[K[?25l[24;1H[1m-- Keyword completion (^N^P) The only match[m[24;1H[K[24;1H[1m-- INSERT --[m[24;1H[K[13;3H[?12l[?25h
ru[?25l[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New] 15L, 175C written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test33.failed test.ok test.out X* viminfo
cp test33.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test33.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test33.in" 34 lines, 616 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for 'lisp'[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 5 lines, 63 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[10;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset lisp[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^(defun[?25l[12;1H[?12l[?25h[?25l[24;1H22 lines to indent...23[7Cindented [24;19H[K[13;1H  (format nil "~(~A~).html" base))


  (let ((ti (gensym)))
       `(with-open-file (*standard-output*
                 [8C(html-file ,name)
                  [7C:direction :output
                         :if-exists :supersede)
                        (let ((,ti ,title))
              [15C(as title ,ti)
            [17C(with center[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^(defun/,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 23 lines, 544 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test34.failed test.ok test.out X* viminfo
cp test34.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test34.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test34.in" 87 lines, 1833 characters[1;1HTest for user functions.
Also test an <expr> mapping calling a function.
Also test that a builtin function cannot be replaced.
Also test for regression when calling arbitrary expression.

STARTTEST
:so small.vim
:function Table(title, ...)
:  let ret = a:title
:  let idx = 1
:  while idx <= a:0
:    exe "let ret = ret . a:" . idx
:    let idx = idx + 1
:  endwhile
:  return ret
:endfunction
:function Compute(n1, n2, divname)
:  if a:n2 == 0
:    return "fail"
:  endif
:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
:  return "ok"
:endfunction[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for user functions.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 78 lines, 1621 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'
:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q!
ENDTEST

here[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction Table(title, ...)[?25l
:  [?12l[?25h:  let ret = a:title
[?25l:  [?12l[?25h:  let idx = 1
[?25l:  [?12l[?25h:  while idx <= a:0
[?25l:    [?12l[?25h:    exe "let ret = ret . a:" . idx
[?25l:    [?12l[?25h:    let idx = idx + 1
[?25l:    [?12l[?25h:  endwhile
[?25l:  [?12l[?25h:  return ret
[?25l:  [?12l[?25h:endfunction[1;1H[8L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunction Compute(n1, n2, divname)[?25l
:  [?12l[?25h:  if a:n2 == 0
[?25l:    [?12l[?25h:    return "fail"
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:  exe "let g:" . a:divname . " = ". a:n1 / a:n2
[?25l:  [?12l[?25h:  return "ok"
[?25l:  [?12l[?25h:endfunction[1;1H[6L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?
:    " Second is here just to prove that this line is correct when not skipping
:    " rhs of &&.
:    $put =(0&&(function('tr'))(1, 2, 3))[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunc Expr1()[?25l
:  [?12l[?25h:  normal! v
[?25l:  [?12l[?25h:  return "111"
[?25l:  [?12l[?25h:endfunc[1;1H[3L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunc Expr2()[?25l
:  [?12l[?25h:  call search('XX', 'b')
[?25l:  [?12l[?25h:  return "222"
[?25l:  [?12l[?25h:endfunc[1;1H[3L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunc ListItem()[?25l
:  [?12l[?25h:  let g:counter += 1
[?25l:  [?12l[?25h:  return g:counter . '. '
[?25l:  [?12l[?25h:endfunc[1;1H[3L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunc ListReset()[?25l
:  [?12l[?25h:  let g:counter = 0
[?25l:  [?12l[?25h:  return ''
[?25l:  [?12l[?25h:endfunc[1;1H[3L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hfunc FuncWithRef(a)[?25l
:  [?12l[?25h:  unlet g:FuncRef
[?25l:  [?12l[?25h:  return a:a
[?25l:  [?12l[?25h:endfunc[1;1H[3L[?25l[1;1H:call append(line('$'), max([1, 2, 3]))
:try
:    " Regression: the first line below used to throw ?E110: Missing ')'?[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hlet g:FuncRef=function("FuncWithRef")[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet counter = 0[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <expr> ( ListItem()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <expr> [ ListReset()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25himap <expr> + Expr1()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25himap <expr> * Expr2()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet retval = "nop"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^here[?25l[23;1H[?12l[?25h[?25lher$[24;1H[K[24;1H=[?12l[?25hTable("xxx", 4, "asdf")[?25l[24;1H[K[24;1H=[?12l[?25hCompute(45, 0, "retval")[?25l[24;1H[K[24;1H=[?12l[?25hretval[?25l[24;1H[K[24;1H=[?12l[?25hCompute(45, 5, "retval")[?25l[24;1H[K[24;1H=[?12l[?25hretval[?25l[24;1H[K[24;1H=[?12l[?25hg:FuncRef(333)
[?25l[1m[37m[41mError detected while processing function Expr1:[m
[33mline    1:[m
[1m[37m[41mE523: Not allowed here[m
[32mPress ENTER or type command to continue[?12l[?25h[m[1;1H[4L[?25l[1;1H:    $put =(0&&(function('tr'))(1, 2, 3))
:    $put =(1&&(function('tr'))(1, 2, 3))
:catch
:    $put ='!!! Unexpected exception:'[5;6H$put =v:exception
:endtry[6;8H[K[7;2H$-9,$w! test.out[7;18H[K[8;2Hdelfunc Table
:delfunc Compute[9;17H[K[10;2Hdelfunc Expr1[10;15H[K[11;2Hdelfunc Expr2
:delfunc ListItem[13;10HListReset
:unlet retval counter
:q![15;4H[K[16;1HENDTEST[16;8H[K[17;1H[K[18;1Hxxx4asdf fail nop ok 9 333
XX111-XX[19;9H[K[20;1H---222---
1. one[21;7H[K[22;1H2. two[23;1H[K[24;1H[K[23;1H[?12l[?25h[?25l1. one again[?12l[?25h[?25l
:[?12l[?25hcall append(line('$'), max([1, 2, 3]))[?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall extend(g:, {'max': function('min')})[?25l[1m[37m[41mE704: Funcref variable name must start with a capital: max[23;12H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), max([1, 2, 3]))[?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:    " Regression: the first line below used to throw ?E110: Missing ')'?
[?25l:  [?12l[?25h:    " Second is here just to prove that this line is correct when not skipp
[23;80Hi[24;1Hng
[?25l:  [?12l[?25h:    " rhs of &&.
[?25l:  [?12l[?25h:    $put =(0&&(function('tr'))(1, 2, 3))
[?25l:  [?12l[?25h:    $put =(1&&(function('tr'))(1, 2, 3))
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:    $put ='!!! Unexpected exception:'
[?25l:  [?12l[?25h:    $put =v:exception
[?25l:  [?12l[?25h:endtry[1;1H[10L[?25l[1;1H:    $put =v:exception
:endtry
:$-9,$w! test.out
:delfunc Table
:delfunc Compute
:delfunc Expr1
:delfunc Expr2
:delfunc ListItem
:delfunc ListReset
:unlet retval counter
:q![11;4H[K[12;1HENDTEST[12;8H[K[13;1H[K[14;1Hxxx4asdf fail nop ok 9 333
XX111-XX
---222---
1. one
2. two[18;7H[K[19;1H1. one again
3[20;2H[K[21;1H3[21;2H[K[22;1H0[22;2H[K[23;2H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$-9,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 10 lines, 81 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc Table[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc Compute[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc Expr1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc Expr2[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc ListItem[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc ListReset[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet retval counter[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test35.failed test.ok test.out X* viminfo
cp test35.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test35.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test35.in" 21 lines, 448 characters[1;1HTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,
and octal numbers.

STARTTEST
/^start-here
:set nrformats=octal,hex
j[34m^A[m102[34m^X^A[ml[34m^X[ml[34m^A[m64[34m^A[m128[34m^X[m$[34m^X[m
:set nrformats=octal
0[34m^A[m102[34m^X^A[ml[34m^X[m2[34m^A[mw65[34m^A[m129[34m^X[mblx6lD
:set nrformats=hex
0101[34m^X[ml257[34m^X^A[mTxldt [34m^A[m [34m^X[m [34m^X[m
:set nrformats=
0200[34m^X[ml100[34m^X[mw78[34m^X^A[mk
:$-3,$wq! test.out
ENDTEST

start-here
100     0x100     077     0
100     0x100     077
100     0x100     077     0xfF     0xFf
100     0x100     077
[1m[34m~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest Ctrl-A and Ctrl-X, which increment and decrement decimal, hexadecimal,[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 10 lines, 200 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start-here[?25l[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nrformats=octal,hex[?25l[17;1H[?12l[?25h
[?25l101[?12l[?25h[?25l-1     0x100     077     0[18;27H[K[18;2H[?12l[?25h[?25l0     0x100     077     0[18;26H[K[18;1H[?12l[?25h0[?25l[7C0ff[?12l[?25hf[?25l     0100     0[18;20H[?12l[?25h[?25l20[?12l[?25h[?25l00[?12l[?25h0     [?25l-1[?12l[?25h[19;26H[?25l[24;1H[K[24;1H:[?12l[?25hset nrformats=octal[?25l[19;26H[?12l[?25h[?25l101[?12l[?25h[?25l-1     0x100     077 -[?12l[?25h[?25l0     0x100     077 [?12l[?25h0[?25l     -1x100     077[19;8H[?12l[?25h[?25l1x100     077 [19;7H[?12l[?25h[10C[?25l0200[?12l[?25h[?25l1777777777777777777777[?12l[?25h[19;17H0[?25l7[20C [19;18H[?12l[?25h777777[?25l[19;24H[K[19;23H[?12l[?25h[20;23H[?25l[24;1H[K[24;1H:[?12l[?25hset nrformats=hex[?25l[20;23H[?12l[?25h[?25l-1     0x100     077     0xfF     0xFf[20;39H[K[20;2H[?12l[?25h1[?25l[7Cffffffffffffffff     077     0xfF     0xFf[20;25H[?12l[?25h[?25l[20;10H0000000000000000[?12l[?25h[20;10H0[?25l     077     0xfF     0xFf[20;39H[K[20;11H[?12l[?25h[?25l[7C8[?12l[?25h8[?25l[7CFE[?12l[?25hE[?25l[7Cfe[?12l[?25h[21;26H[?25l[24;1H[K[24;1H:[?12l[?25hset nrformats=[?25l[21;26H[?12l[?25h[?25l-100     0x100     077-10[?12l[?25h0[?25l     -100x100     077[21;13H[?12l[?25h[10C[?25l-001[?12l[?25h[?25l000 [?12l[?25h[20;25H[21;25H[?25l[24;1H[K[24;1H:[?12l[?25h$-3,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 120 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test36.failed test.ok test.out X* viminfo
cp test36.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test36.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test36.in" 105 lines, 1950 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest character classes in regexp using regexpengine 0, 1, 2.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 98 lines, 1775 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hp:s/\%#=1\L//g
p:s/\%#=2\L//g
p:s/\%#=0[^a-z]//g
p:s/\%#=1[^a-z]//g
p:s/\%#=2[^a-z]//g
p:s/\%#=0\u//g
p:s/\%#=1\u//g
p:s/\%#=2\u//g
p:s/\%#=0[A-Z]//g
p:s/\%#=1[A-Z]//g
p:s/\%#=2[A-Z]//g
p:s/\%#=0\U//g
p:s/\%#=1\U//g
p:s/\%#=2\U//g
p:s/\%#=0[^A-Z]//g
p:s/\%#=1[^A-Z]//g
p:s/\%#=2[^A-Z]//g
:/^start-here/+1,$wq! test.out
ENDTEST

start-here[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[19;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start-here/+1[?25l[22;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=0\d//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\d//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\d//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[0-9]//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[0-9]//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[0-9]//g[?25l10 substitutions on 1 line[22;29H:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[[m[23;1H¦±¼ÇÓé[23;7H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\D//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\D//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\D//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[^0-9]//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^0-9]//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^0-9]//g[?25l72 substitutions on 1 line[22;1H0123456789[22;11H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\o//g[?25l8 substitutions on 1 line[22;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[23;1H~[[m¦±¼ÇÓé[23;9H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\o//g[?25l8 substitutions on 1 line[22;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[23;1H~[[m¦±¼ÇÓé[23;9H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\o//g[?25l8 substitutions on 1 line[21;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[22;1H~[[m¦±¼ÇÓé[22;9H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0[0-7]//g[?25l8 substitutions on 1 line[21;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[22;1H~[[m¦±¼ÇÓé[22;9H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=1[0-7]//g[?25l8 substitutions on 1 line[21;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[22;1H~[[m¦±¼ÇÓé[22;9H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2[0-7]//g[?25l8 substitutions on 1 line[21;29H89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~PP[22;1H~[[m¦±¼ÇÓé[22;9H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0\O//g[?25l74 substitutions on 1 line[21;1H01234567[21;9H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=1\O//g[?25l74 substitutions on 1 line[22;1H01234567[22;9H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\O//g[?25l74 substitutions on 1 line[21;1H01234567[21;9H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=0[^0-7]//g[?25l74 substitutions on 1 line[22;1H01234567[22;9H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^0-7]//g[?25l74 substitutions on 1 line[22;1H01234567[22;9H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^0-7]//g[?25l74 substitutions on 1 line[22;1H01234567[22;9H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\x//g[?25l22 substitutions on 1 line[22;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;75H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\x//g[?25l22 substitutions on 1 line[22;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;75H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\x//g[?25l22 substitutions on 1 line[22;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;75H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[0-9A-Fa-f]//g[?25l22 substitutions on 1 line[22;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;75H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=1[0-9A-Fa-f]//g[?25l22 substitutions on 1 line[21;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[21;75H[K[22;1H[1m[34m~                                                                               [21;9H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=2[0-9A-Fa-f]//g[?25l22 substitutions on 1 line[22;29H:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;75H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0\X//g[?25l60 substitutions on 1 line[21;1H0123456789ABCDEFabcdef[21;23H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=1\X//g[?25l60 substitutions on 1 line[22;1H0123456789ABCDEFabcdef[22;23H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\X//g[?25l60 substitutions on 1 line[21;1H0123456789ABCDEFabcdef[21;23H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=0[^0-9A-Fa-f]//g[?25l60 substitutions on 1 line[22;1H0123456789ABCDEFabcdef[22;23H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=1[^0-9A-Fa-f]//g[?25l60 substitutions on 1 line[21;1H0123456789ABCDEFabcdef[21;23H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=2[^0-9A-Fa-f]//g[?25l60 substitutions on 1 line[22;1H0123456789ABCDEFabcdef[22;23H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0\w//g[?25l36 substitutions on 1 line[21;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[21;61H[K[22;1H[1m[34m~                                                                               [21;9H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=1\w//g[?25l36 substitutions on 1 line[22;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;61H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\w//g[?25l36 substitutions on 1 line[21;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[21;61H[K[22;1H[1m[34m~                                                                               [21;9H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=0[0-9A-Za-z_]//g[?25l36 substitutions on 1 line[22;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;61H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[0-9A-Za-z_]//g[?25l36 substitutions on 1 line[22;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;61H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[0-9A-Za-z_]//g[?25l36 substitutions on 1 line[22;29H:;<=>?@[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;61H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\W//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\W//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\W//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[^0-9A-Za-z_]//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^0-9A-Za-z_]//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^0-9A-Za-z_]//g[?25l46 substitutions on 1 line[22;1H0123456789ABCDEFGHIXYZ_abcdefghiwxyz[22;37H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\h//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\h//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\h//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[A-Za-z_]//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[A-Za-z_]//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[A-Za-z_]//g[?25l26 substitutions on 1 line[22;46H[\]^`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;71H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\H//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\H//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\H//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[^A-Za-z_]//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^A-Za-z_]//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^A-Za-z_]//g[?25l56 substitutions on 1 line[22;1HABCDEFGHIXYZ_abcdefghiwxyz[22;27H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\a//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\a//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\a//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[A-Za-z]//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[A-Za-z]//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[A-Za-z]//g[?25l25 substitutions on 1 line[22;46H[\]^_`{|}~[34m^?~@~B~P~[[m¦±¼ÇÓé[22;72H[K[23;1H[1m[34m~                                                                               [22;9H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\A//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\A//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\A//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[^A-Za-z]//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^A-Za-z]//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^A-Za-z]//g[?25l57 substitutions on 1 line[22;1HABCDEFGHIXYZabcdefghiwxyz[22;26H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\l//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\l//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\l//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[a-z]//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[a-z]//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[a-z]//g[?25l13 substitutions on 1 line[22;64H{|}~[34m^?~@~B~P~[[m¦±¼¼[23;1HÇÓé[23;4H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\L//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\L//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2\L//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0[^a-z]//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^a-z]//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^a-z]//g[?25l69 substitutions on 1 line[22;1Habcdefghiwxyz[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=0\u//g[?25l12 substitutions on 1 line[22;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[23;1H¼ÇÓé[23;5H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1\u//g[?25l12 substitutions on 1 line[22;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[23;1H¼ÇÓé[23;5H[K[22;9H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;9H[34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\u//g[?25l12 substitutions on 1 line[21;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[22;1H¼ÇÓé[22;5H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0[A-Z]//g[?25l12 substitutions on 1 line[21;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[22;1H¼ÇÓé[22;5H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=1[A-Z]//g[?25l12 substitutions on 1 line[21;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[22;1H¼ÇÓé[22;5H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2[A-Z]//g[?25l12 substitutions on 1 line[21;46H[\]^_`abcdefghiwxyz{|}~[34m^?~@~B~P~[[m¦±±[22;1H¼ÇÓé[22;5H[K[21;9H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=0\U//g[?25l70 substitutions on 1 line[21;1HABCDEFGHIXYZ[21;14H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=1\U//g[?25l70 substitutions on 1 line[22;1HABCDEFGHIXYZ[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[1;1H[2M[1;24r[21;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[22;1H[34m^?~@~B~P~[[m¦±¼ÇÓé
[1m[34m~                                                                               [m[24;1H[K[21;9H[?12l[?25h[?25l


:[?12l[?25hs/\%#=2\U//g[?25l70 substitutions on 1 line[21;1HABCDEFGHIXYZ[21;14H[K[22;1H[1m[34m~                                                                               [21;1H[?12l[?25h[?25l[m
        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[23;17H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/\%#=0[^A-Z]//g[?25l70 substitutions on 1 line[22;1HABCDEFGHIXYZ[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=1[^A-Z]//g[?25l70 substitutions on 1 line[22;1HABCDEFGHIXYZ[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H        [34m^L^M[m !"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~~[23;1H[34m^?~@~B~P~[[m¦±¼ÇÓé[24;1H[K[22;9H[?12l[?25h[?25l

:[?12l[?25hs/\%#=2[^A-Z]//g[?25l70 substitutions on 1 line[22;1HABCDEFGHIXYZ[22;14H[K[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h/^start-here/+1,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 96 lines, 4032 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test37.failed test.ok test.out X* viminfo
cp test37.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test37.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test37.in" 116 lines, 3262 characters[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
[34m^W[mt:
:resize 8
/^start of window 1$/
zt:
:set scrollbind
[34m^W[mj:
:resize 7
/^start of window 2$/
zt:
:set scrollbind
:" -- start of tests --[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below![24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[2;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 72 lines, 1498 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[3;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1HHk[34m^W[mtH[34m^W[mjHyy[34m^W[mbp[34m^W[mtyy[34m^W[mbp:
[34m^W[mt:set noscb
ggL[34m^W[mj:set noscb
ggL:set scb
[34m^W[mt:set scb
[34m^W[mtG[34m^W[mjG[34m^W[mt:syncbind
Hk[34m^W[mjH[34m^W[mtHyy[34m^W[mbp[34m^W[mt[34m^W[mjyy[34m^W[mbp:
[34m^W[mtH3k[34m^W[mjH[34m^W[mtHyy[34m^W[mbp[34m^W[mt[34m^W[mjyy[34m^W[mbp:
:" ***** done with tests *****
:w! test.out[13C" Write contents of this file
:qa!
ENDTEST


start of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noscrollbind[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollopt=ver,jump[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrolloff=2[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nowrap[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noequalalways[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset splitbelow[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST using two windows open to one buffer, one extra empty window[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[1;1H[34m^W[mtH3k[4C[34m^W[mtHyy[2Cbp[34m^W[mt[34m^W[mjyy[34m^W[mbp:
:" ***** done with tests *****
:w! test.out    [9C" Write contents of this file
:qa![4;5H[K[5;1HENDTEST[5;9H[K[6;1H[K[7;1H[K[8;1Hstart of window 1[8;18H[K[9;1H. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[10;51H[K[11;1H[7mtest37.in                                                                       [m[12;1HHk[34m^W[mjH[34m^W[mtHyy[34m^W[mbp[34m^W[mt[34m^W[mjyy[34m^W[mbp:
[34m^W[mtH3k[34m^W[mjH[34m^W[mtHyy[34m^W[mbp[34m^W[mt[34m^W[mjyy[34m^W[mbp:
:" ***** done with tests *****
:w! test.out     [8C" Write contents of this file
:qa![16;5H[K[17;1HENDTEST[17;8H[K[18;1H[K[19;1H[K[20;1Hstart of window 1[20;18H[K[21;9H1[39C1[22;9H2[39C2
[1m[7mtest37.in                                                                       [18;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hnew[?25l[12;1H:w! test.out             " Write contents of this file
:qa![13;5H[K[14;1HENDTEST[14;8H[K[15;1H[K[16;1H[K[17;1H[7mtest37.in                                                                       [m[19;1H[1m[34m~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[1m[7m[No Name] [18;1H[?12l[?25h[11;1Htest37.in                                                                       [m[23;1H[7m[No Name][m[1m[7m [m[7m                                                                       [6;1H[?25l[m[24;1H[K[24;1H:[?12l[?25h[?25l[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hresize 8[?25l[1;1H:" ***** done with tests *****[1;31H[K[2;2Hw! test.out             " Write contents of this file
:qa![3;5H[K[4;1HENDTEST[5;1H[K[7;1Hstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
[1m[7mtest37.in                                                                       [m[10;1H:" ***** done with tests *****[10;31H[K[11;1H:w! test.out             " Write contents of this file[11;55H[K[12;2Hqa![12;5H[K[13;1HENDTEST[14;1H[K[16;1Hstart of window 1[5;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of window 1$/[?25l[24;21H[K[24;1H[1;8r[8;1H
[1;24r[8;1H. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[24;1H[K[6;1H[?12l[?25h[?25l[1;8r[1;1H[3M[1;24r[6;1H. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03
. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollbind[?25l[3;1H[?12l[?25h[9;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7mtest37.in                                                                       [14;1H[?25l[m[24;1H[K[24;1H:[?12l[?25h[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hresize 7[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of window 2$/[?25l[24;21H[K[24;1H[10;1Hend of window 1[10;16H[K[11;1H[K[12;1H[K[13;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03[13;1H[?12l[?25h[?25l[10;16r[16;1H
[1;24r[16;1H. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04[24;1H[K[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollbind[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" -- start of tests --[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST scrolling down[?25l[12;1H[?12l[?25h

[?25l[1;8r[1;1H[5M[1;24r[4;1H. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09
. line 10 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 10[10;16r[10;1H[5M[1;24r[12;1H. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09[24;1H[K[14;1H[?12l[?25h[12;1H[17;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name]                                                                       [18;1H[?25l[m
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[19;50H[K[23;11H[1m[7m[+][19;1H[?12l[?25h[?25l[m0[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [19;1H[?25l[m
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[20;50H[K[20;1H[?12l[?25h[?25l1[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H


[?25l[1;8r[m[1;1H[6M[1;24r[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 1[10;16r[10;1H[6M[1;24r[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 15[6;1H[?12l[?25h[3;1H[9;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [20;1H[?25l[m
. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[21;50H[K[21;1H[?12l[?25h[?25l2[?12l[?25h[17;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [12;1H[17;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [21;1H[?25l[m
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[22;50H[K[22;1H[?12l[?25h[?25l3[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST scrolling up[?25l[22;1H[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[1;8r[m[1;1H[5L[1;24r[1;1H. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04
. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08[10;9H4[39C4[11;8H05[38C05[12;8H06[38C06[13;8H07[38C07[14;8H08[38C08[15;8H09[38C09[16;9H0[39C0[24;1H[K[4;1H[?12l[?25h[9;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7mtest37.in                                                                       [14;1H[12;1H[9;1Htest37.in                                                                       [m[17;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [4;1H[3;1H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[?12l[?25h[?25l4[?12l[?25h[17;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [12;1H[17;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06[?12l[?25h[?25l5[?12l[?25h[17;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [12;1H[?25l[1;8r[m[1;1H[4L[1;24r[1;1Hstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03[10;16r[10;1H[4L[1;24r[10;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[17;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [6;1H[3;1H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7mtest37.in                                                                       [13;1H[12;1H[m[17;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l6[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l7[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST horizontal scrolling[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollopt+=hor[?25l[22;1H[?12l[?25h[?25l[18;1H[K[19;1H0[7C5 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
1[7C5 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[18;1H[?12l[?25h[?25l[18;22r[18;1H[4M[1;24r[19;1H4 line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5 line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[24;1H[K[22;1H[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[1;1H 1[1;3H[K[2;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01[2;35H[K[3;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[3;35H[K[4;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03[4;35H[K[5;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04[5;35H[K[6;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[6;35H[K[7;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[7;35H[K[8;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07[8;35H[K[10;1H 2[10;3H[K[11;1HUTSRQPONMLKJIHGREDCBA9876543210 01[11;35H[K[12;1HUTSRQPONMLKJIHGREDCBA9876543210 02[12;35H[K[13;1HUTSRQPONMLKJIHGREDCBA9876543210 03[13;35H[K[14;1HUTSRQPONMLKJIHGREDCBA9876543210 04[14;35H[K[15;1HUTSRQPONMLKJIHGREDCBA9876543210 05[15;35H[K[16;1HUTSRQPONMLKJIHGREDCBA9876543210 06[16;35H[K[3;1H[?12l[?25h[9;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[17;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [12;1H[17;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[mUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[17;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [12;1H[?25l[m[1;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09[2;33H10[3;33H11[4;33H12[5;33H13[6;33H14[7;33H15[8;1H[K[10;1HUTSRQPONMLKJIHGREDCBA9876543210 09[11;33H10[12;33H11[13;33H12[14;33H13[15;33H14[16;33H15[13;1H[?12l[?25h[?25l[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 15[12;1H[?12l[?25h[?25l[?12l[?25h[17;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l[18;22r[22;1H
[1;24r[24;1H[K[22;1H[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;16H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollopt-=hor[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" ****** tests using two different buffers *****[?25l[22;1H[?12l[?25h[9;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[9;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7mtest37.in                                                                       [12;1H[?25l[m[24;1H[K[24;1H:[?12l[?25h[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[9;1H[K[10;1H[K[11;1Hstart of window 2[11;18H[K[12;8H0[39C0[13;8H0[39C0[14;8H0[39C0[15;8H0[39C0[16;8H0[39C0[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noscrollbind[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of window 2$/,/^end of window 2$/y[?25l18 lines yanked[24;16H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[8;1H[7mtest37.in                                                                       [m[10;1H[1m[34m~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [m[17;1H[1m[7m[No Name] [9;1H[?12l[?25h[8;1Htest37.in                                                                       [m[17;1H[7m[No Name][m[1m[7m [m[7m                                                                       [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name]                                                                       [9;1H[?25l[m[24;1H4 more lines[10;1H[K[11;1H[K[12;1H[K[13;1H[K[17;11H[1m[7m[+][10;1H[?12l[?25h


[?25l[m[24;1H18 more lines[14;1Hstart of window 2[14;18H[K[15;1H. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01[15;50H[K[16;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[16;50H[K[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[14;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[24;1H[K[24;1H/[?12l[?25h^start of window 1$/[?25l[24;21H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[m[1;1HENDTEST[1;8H[K[2;1H[K[3;1H[K[4;1Hstart of window 1[4;18H[K[5;8H01[38C01[6;8H02[38C02[7;8H03[38C03[4;1H[?12l[?25h[?25l[1;7r[7;1H
[1;24r[7;1H. line 04 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollbind[?25l[3;1H[?12l[?25h[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [14;1H[?25l[m[24;1H[K[24;1H:[?12l[?25h[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start of window 2$/[?25l[24;21H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[14;1H[?12l[?25h[?25l[9;16r[m[9;1H[3M[1;24r[14;1H. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03
. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[24;1H[K[11;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollbind[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" -- start of tests --[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST scrolling down[?25l[11;1H[?12l[?25h


[?25l[1;7r[1;1H[5M[1;24r[3;1H. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
. line 07 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 07
. line 08 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 08
. line 09 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09[9;16r[9;1H[5M[1;24r[12;1H. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08
. line 09 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 09
. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10[24;1H[K[14;1H[?12l[?25h[11;1H[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05[?12l[?25h[?25l0[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 05 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[?12l[?25h[?25l1[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H

[?25l[1;7r[m[1;1H[6M[1;24r[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 15[9;16r[9;1H[6M[1;24r[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 16[5;1H[?12l[?25h[3;1H[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l2[?12l[?25h[17;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [11;1H[17;1H[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l3[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST scrolling up[?25l[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[1;9H4[39C4[2;8H05[38C05[3;8H06[38C06[4;8H07[38C07[5;8H08[38C08[6;8H09[38C09[7;9H0[39C0[9;16r[9;1H[5L[1;24r[9;1H. line 04 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 04
. line 05 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
. line 07 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 07
. line 08 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 08[24;1H[K[4;1H[?12l[?25h[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [14;1H[11;1H[8;1Htest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [4;1H[3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 06 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[?12l[?25h[?25l4[?12l[?25h[17;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [11;1H[17;1H[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 06 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06[?12l[?25h[?25l5[?12l[?25h[17;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [11;1H[?25l[1;7r[m[1;1H[4L[1;24r[1;1Hstart of window 1
. line 01 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01
. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02
. line 03 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03[9;16r[9;1H[4L[1;24r[9;1Hstart of window 2
. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01
. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
. line 03 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 03[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [5;1H[3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [12;1H[11;1H[m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l6[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l7[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST horizontal scrolling[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollopt+=hor[?25l[22;1H[?12l[?25h[?25l[18;1H[K[19;1H0[7C5 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 05
1[7C5 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05
2 line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11
3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[18;1H[?12l[?25h[?25l3 line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
4[7C6 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06
5[7C6 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 06
6 line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02
7 line 02 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l[18;22r[22;1H
[1;24r[24;1H[K[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[1;1H 1[1;3H[K[2;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 01[2;35H[K[3;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[3;35H[K[4;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 03[4;35H[K[5;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 04[5;35H[K[6;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 05[6;35H[K[7;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 06[7;35H[K[9;1H 2[9;3H[K[10;1HUTSRQPONMLKJIHGREDCBA9876543210 01[10;35H[K[11;1HUTSRQPONMLKJIHGREDCBA9876543210 02[11;35H[K[12;1HUTSRQPONMLKJIHGREDCBA9876543210 03[12;35H[K[13;1HUTSRQPONMLKJIHGREDCBA9876543210 04[13;35H[K[14;1HUTSRQPONMLKJIHGREDCBA9876543210 05[14;35H[K[15;1HUTSRQPONMLKJIHGREDCBA9876543210 06[15;35H[K[16;1HUTSRQPONMLKJIHGREDCBA9876543210 07[16;35H[K[3;1H[?12l[?25h[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 02[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[17;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [11;1H[17;1H[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[mUTSRQPONMLKJIHGREDCBA9876543210 02[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[17;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [11;1H[?25l[m[1;1H56789ABCDEFGHIJKLMNOPQRSTUVWXYZ 09[2;33H10[3;33H11[4;33H12[5;33H13[6;33H14[7;33H15

UTSRQPONMLKJIHGREDCBA9876543210 09[10;33H10[11;33H11[12;33H12[13;33H13[14;33H14[15;33H15[16;33H16[12;1H[?12l[?25h[?25l[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 16[11;1H[?12l[?25h[?25l[?12l[?25h[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11[?12l[?25h[?25l[18;22r[22;1H
[1;24r[24;1H[K[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;16H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[m. line 11 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ 11[?12l[?25h[?25l[18;22r[22;1H
[1;24r[22;1H[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset scrollopt-=hor[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TEST syncbind[?25l[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset noscb[?25l[3;1H[?12l[?25h[?25l[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST[2;11H[K[3;1H:so small.vim[3;14H[K[4;1H:set noscrollbind[4;18H[K[5;1H:set scrollopt=ver,jump[5;24H[K[6;1H:set scrolloff=2[6;17H[K[7;1H:set nowrap[7;12H[K[1;1H[?12l[?25h[5;1H


[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [11;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset noscb[?25l[11;1H[?12l[?25h[?25l[9;1H[K[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1Hstart of window 2[14;18H[K[15;8H01[38C01[16;8H02[38C02[9;1H[?12l[?25h[14;1H[?25l[24;1H[K[24;1H:[?12l[?25hset scb[?25l[14;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [5;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset scb[?25l[5;1H[?12l[?25h[?25l[1;1H. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13[1;50H[K[2;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2[5;16H[K[6;1H[K[7;1Hend of test37.in (please don't delete this line)

end of window 2
[1m[34m~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [7;1H[?12l[?25h[?25l[m[1;1Hzt:[1;4H[K[2;1H:set scrollbind[2;16H[K[3;1H:" -- start of tests --[3;24H[K[4;1H:" TEST scrolling down[4;23H[K[5;1HL5jHyy[34m^W[mbpr0[34m^W[mtHyy[34m^W[mbpr1[34m^W[mtL6jHyy[34m^W[mbpr2[34m^W[mkHyy[34m^W[mbpr3:
:" TEST scrolling up
[34m^W[mtH4k[34m^W[mjH[34m^W[mtHyy[34m^W[mbpr4[34m^W[mkHyy[34m^W[mbpr5[34m^W[mk3k[34m^W[mtH[34m^W[mjHyy[34m^W[mbpr6[34m^W[mtHyy[34m^W[mbpr7:
[7mtest37.in[m[1m[7m [m[7m                                                                       [9;16r[m[9;1H[2L[1;24r[9;1H. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[17;1H[1m[7m[No Name] [+]                                                                   [m[24;1H[K[11;1H[?12l[?25h[?25l[24;1H:[?12l[?25hsyncbind[?25l[11;1H[?12l[?25h[?25l[1;7r[1;1H[L[1;24r[1;1H/^start of window 2$/[9;16r[9;1H[L[1;24r[9;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14[24;1H[K[11;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [5;1H[3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [11;1H[m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H:set scrollbind[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset noscb[?25l[3;1H[?12l[?25h[?25l[1;1HTest for 'scrollbind'. <eralston@computer.org>   Do not add a line below!
STARTTEST
:so small.vim[3;14H[K[4;2Hset noscrollbind[4;18H[K[5;2Hset scrollopt=ver,jump
:set scrolloff=2[6;17H[K[7;2Hset nowrap[7;12H[K[1;1H[?12l[?25h[5;1H


[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [11;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset noscb[?25l[11;1H[?12l[?25h[?25l[9;1H[K[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1Hstart of window 2[14;18H[K[15;1H. line 01 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 01[15;50H[K[16;1H. line 02 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 02[16;50H[K[9;1H[?12l[?25h[14;1H[?25l[24;1H[K[24;1H:[?12l[?25hset scb[?25l[14;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [5;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hset scb[?25l[5;1H[?12l[?25h[?25l[1;1H. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13[1;50H[K[2;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14
. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16
end of window 2[5;16H[K[6;1H[K[7;1Hend of test37.in (please don't delete this line)

end of window 2
[1m[34m~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [7;1H[?12l[?25h[?25l[m[1;1Hzt:[1;4H[K[2;1H:set scrollbind[2;16H[K[3;1H:" -- start of tests --[3;24H[K[4;1H:" TEST scrolling down[4;23H[K[5;1HL5jHyy[34m^W[mbpr0[34m^W[mtHyy[34m^W[mbpr1[34m^W[mtL6jHyy[34m^W[mbpr2[34m^W[mkHyy[34m^W[mbpr3:
:" TEST scrolling up
[34m^W[mtH4k[34m^W[mjH[34m^W[mtHyy[34m^W[mbpr4[34m^W[mkHyy[34m^W[mbpr5[34m^W[mk3k[34m^W[mtH[34m^W[mjHyy[34m^W[mbpr6[34m^W[mtHyy[34m^W[mbpr7:
[7mtest37.in[m[1m[7m [m[7m                                                                       [9;16r[m[9;1H[2L[1;24r[9;1H. line 15 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 15
. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[17;1H[1m[7m[No Name] [+]                                                                   [m[24;1H[K[11;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [5;1H[?25l[24;1H[m:[?12l[?25hsyncbind[?25l[5;1H[?12l[?25h[3;1H[?25l[1;7r[1;1H[L[1;24r[1;1H/^start of window 2$/[9;16r[9;1H[L[1;24r[9;1H. line 14 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 14[24;1H[K[3;1H[?12l[?25h[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [12;1H[11;1H[8;1Htest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H:set scrollbind[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [11;1H[m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 16 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 16[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[?25l[1;7r[m[1;1H[4L[1;24r[1;1Hzt:
:set scrollbind
[34m^W[mj:
:resize 7[9;16r[9;1H[4L[1;24r[9;1H. line 10 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 10
. line 11 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 11
. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12
. line 13 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 13[24;1H[K[4;1H[?12l[?25h[8;1H[7mtest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [15;1H[11;1H[8;1Htest37.in                                                                       [m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [4;1H[3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H[34m^W[mj:[?12l[?25h[8;1H[1m[7mtest37.in                                                                       [m[23;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [3;1H[8;1Htest37.in[m[1m[7m [m[7m                                                                       [m[17;1H[1m[7m[No Name] [+]                                                                   [11;1H[m[17;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7m[No Name] [+]                                                                   [22;1H[?25l[18;22r[m[22;1H
[1;24r[22;1H. line 12 ZYXWVUTSRQPONMLKJIHGREDCBA9876543210 12[?12l[?25h[?25l

:[?12l[?25h[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" ***** done with tests *****[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out             " Write contents of this file[?25l"test.out" [24;12H[K[24;12H[New File] 33 lines, 1329 characters written[23;1H[1m[7mtest.out]      [22;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test38.failed test.ok test.out X* viminfo
cp test38.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test38.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test38.in" 35 lines, 455 characters[2;1HTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=[34m^V[mx7f t_kb=[34m^V[mx08
ggdGa
abcdefghi
jk      lmn
    opq rst
[34m^D[muvwxyz
[34m^[[mgg:set ai
:set bs=2
gR0[34m^D[m 1
A
BCDEFGHIJ[18;9HKL
MNO
PQR[34m^[[mG:ka
o0[34m^D[m
abcdefghi
jk      lmn[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 29 lines, 407 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[11M[1;24r[13;5Hopq rst
[34m^D[muvwxyz
[34m^[[m'ajgR0[34m^D[m 1
A
BCDEFGHIJ[18;9HKL
MNO
PQR[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^[[m:$
iab     cdefghi jkl[34m^[[m0gRAB......CDEFGHI.J[34m^[[mo[34m^[[m:
iabcdefghijklmnopqrst[34m^[[m0gRAB    IJKLMNO QR[34m^[[m:wq! test.out
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" make sure that backspace works, no matter what termcap is used[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset t_kD=^[34m^?[m t_kb=^[34m^H[?25l[27m[m[H[2J[1;1H[34m^[[mgg:set ai
:set bs=2
gR0[34m^D[m 1
A
BCDEFGHIJ[6;9HKL
MNO
PQR[34m^[[mG:ka
o0[34m^D[m
abcdefghi
jk      lmn
    opq rst
[34m^D[muvwxyz
[34m^[[m'ajgR0[34m^D[m 1
A
BCDEFGHIJ[17;9HKL
MNO
PQR[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^[[m:$
iab     cdefghi jkl[34m^[[m0gRAB......CDEFGHI.J[34m^[[mo[34m^[[m:
iabcdefghijklmnopqrst[34m^[[m0gRAB    IJKLMNO QR[34m^[[m:wq! test.out
ENDTEST
[?12l[?25h[?25l[1;23r[1;1H[12L[1;24r[2;1HTest Virtual replace mode.

STARTTEST
:so small.vim
:" make sure that backspace works, no matter what termcap is used
:set t_kD=[34m^V[mx7f t_kb=[34m^V[mx08
ggdGa
abcdefghi
jk      lmn
    opq rst
[34m^D[muvwxyz[1;1H[?12l[?25h[?25l
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l
abcdefghi[2;10H[K[3;1Hjk      lmn[3;12H[K[4;1H    opq rst[4;12H[K[5;1Huvwxyz[5;7H[K[6;1H[K[6;1H[?12l[?25h[1;1H[?25l[24;1H[K[24;1H:[?12l[?25hset ai[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bs=2[?25l[1;1H[?12l[?25h[?25l 1
 A[2;3H[K[3;1H BCDEFGHIJ[3;11H[K[4;5H    KL[4;11H[K[5;1H        MNO[6;9HPQR[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hka[?25l[6;9H[?12l[?25h[?25l[7;1H[K[8;1Habcdefghi[8;10H[K[9;1Hjk      lmn[9;12H[K[10;1H    opq rst[10;12H[K[11;1Huvwxyz[11;7H[K[12;1H[K[12;1H[?12l[?25h[6;9H
[?25l 1[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$[?25l[12;1H[?12l[?25h[?25lab      cdefghi jkl[?12l[?25h[?25lAB......CDEFGHI.J[?12l[?25h[?25l[13;1H[K[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[13;1H[?12l[?25h[?25labcdefghijklmnopqrst[?12l[?25h[?25lAB      IJKLMNO QR[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 13 lines, 107 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test39.failed test.ok test.out X* viminfo
cp test39.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test39.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test39.in" 93 lines, 1955 characters[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
jllll[34m^V[mjj>wll[34m^V[mjlll>
:" Test shift-left of a block
G$hhhh[34m^V[mkk<
:" Test block-insert
Gkl[34m^V[mkkkIxyz[34m^[[m
:" Test block-replace
Gllll[34m^V[mkkklllrq
:" Test block-change
G$khhh[34m^V[mhhkkcmno[34m^[[m
:$-4,$w! test.out
:" Test block-insert using cursor keys for movement
/^aaaa/[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 63 lines, 1695 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1HG3o123456789[34m^[[m2k05l[34m^V[m2jr[34m^M[mG3o98765[34m^[[m2k02l[34m^V[m2jr[34m^V^M[m
G3o123456789[34m^[[m2k05l[34m^V[m2jr
G3o98765[34m^[[m2k02l[34m^V[m2jr[34m^V[m
:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:/^the/,$w >> test.out
:qa!
ENDTEST[14;17Hline1[15;17Hline2[16;17Hline3

aaaaaa
bbbbbb
cccccc
dddddd

A23[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" This only works when 'encoding' is "latin1", don't depend on the environment[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=latin1[?25l[27m[m[H[2J[1;1HG3o123456789[34m^[[m2k05l[34m^V[m2jr[34m^M[mG3o98765[34m^[[m2k02l[34m^V[m2jr[34m^V^M[m
G3o123456789[34m^[[m2k05l[34m^V[m2jr
G3o98765[34m^[[m2k02l[34m^V[m2jr[34m^V[m
:"
:" Test cursor position. When ve=block and Visual block mode and $gj
:set ve=block
:exe ":norm! 2k\<C-V>$gj\<Esc>"
:let cpos=getpos("'>")
:$put ='col:'.cpos[2].' off:'.cpos[3]
:/^the/,$w >> test.out
:qa!
ENDTEST[14;17Hline1[15;17Hline2[16;17Hline3

aaaaaa
bbbbbb
cccccc
dddddd

A23[13;1H[?12l[?25h[?25l[24;1H/[?12l[?25h^abcde[?25l[1;23r[1;1H[9M[1;24r[15;1H4567

B23
4567

C23
4567

abcdefghijklm[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" Test shift-right of a block[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habcdefghijklm[24;1H[K[23;1H[?12l[?25habcd[?25l[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;5H[7me[m
abcdefghijklmabcd[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;5H[7me[m
abcdefghijklmabcd[?12l[?25h[?25l
3 lines >ed 1 time[21;5H        efghijklm
abcd        efghijklm
abcd        efghijklm[21;8H[?12l[?25h     ef[?25l[?12l[?25h[?25l[7mg[22;15H[?12l[?25h[?25l[21;16Hh[22;15Hg[?12l[?25h[?25l[21;17Hi[22;16Hh[?12l[?25h[?25l[21;18Hj[22;17Hi[?12l[?25h[?25l[m[21;15H        ghijklm[22;15H        ghijklm[21;16H[?12l[?25h[22;16H[?25l[24;1H[K[24;1H:[?12l[?25h" Test shift-left of a block[?25l[22;16H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habcdefghijklm[24;1H[K[23;1H[?12l[?25h[12C[?25l[?12l[?25h[?25l[7mi[22;9H[?12l[?25h[?25l [21;9H[?12l[?25h[?25l[m


3 lines <ed 1 time[21;9Hef    [22;9Hefghijklm[22;18H[K[23;9Hi[21;9H[?12l[?25h[22;9H[?25l[24;1H[K[24;1H:[?12l[?25h" Test block-insert[?25l[22;9H[?12l[?25h
[22;1Ha[?25l[?12l[?25h[?25l[7mb[21;2H[?12l[?25h[?25lb[20;2H[?12l[?25h[?25lb[19;2H[?12l[?25h[?25l[m
ab
ab
ab[19;2Hxyzbcdefghijklm
axyzbcd
axyzbcd
axyzbcd[19;2H[?12l[?25h
a[?25l[24;1H[K[24;1H:[?12l[?25h" Test block-replace[?25l[20;2H[?12l[?25h


abcd[?25l[?12l[?25h[?25l[7me[22;5H[?12l[?25h[?25lb[21;5H[?12l[?25h[?25lb[20;5H[?12l[?25h[?25lb[21;6Hc[22;6Hc[23;6Hf[20;6H[?12l[?25h[?25lc[21;7Hd[22;7Hd[23;7Hg[20;7H[?12l[?25h[?25ld[21;8H [22;8H [23;8Hh[20;8H[?12l[?25h[?25l[mqqqq
axyzqqqq
axyzqqqq
abcdqqqq[20;5H[?12l[?25h
axyz[?25l[24;1H[K[24;1H:[?12l[?25h" Test block-change[?25l[21;5H[?12l[?25h

[12C[22;17H[?25l[?12l[?25h[?25l[7mj[?12l[?25h[?25li[?12l[?25h[?25l[21;12H     [22;11Hghijkl[21;11H[?12l[?25h[?25l[20;13Hef[m[21;15H  [22;11Hg[3Ckl[20;12H[?12l[?25h[?25lmno[21;12Hmno[22;12Hmno[20;14H[?12l[?25h[21;14H[?25l[24;1H[K[24;1H:[?12l[?25h$-4,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 5 lines, 108 characters written[21;14H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test block-insert using cursor keys for movement[?25l[21;14H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^aaaa/[?25l[24;7H[K[24;1H[31msearch hit BOTTOM, continuing at TOP[5;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexe ":norm! l\<C-V>jjjlllI\<Right>\<Right>  \<Esc>"[?25l[5;4H  aaa
bbb  bbb
ccc  ccc
ddd  ddd[5;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^aa/,/^$/w >> test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H5 lines, 37 characters appended[5;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for Visual block was created with the last <C-v>$[?25l[5;4H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^A23$/[?25l[24;7H[K[24;1H[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! l\<C-V>j$Aab\<Esc>"[?25l[10;4Hab
4567ab[10;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/^$/w >> test.out[?25l"test.out" [24;13H[K[24;12H3 lines, 14 characters appended[10;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for Visual block was created with the middle <C-v>$ (1)[?25l[10;2H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^B23$/[?25l[24;7H[K[24;1H[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! l\<C-V>j$hAab\<Esc>"[?25l[13;5Hab
4567ab[13;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/^$/w >> test.out[?25l"test.out" [24;13H[K[24;12H3 lines, 15 characters appended[13;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for Visual block was created with the middle <C-v>$ (2)[?25l[13;2H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^C23$/[?25l[24;7H[K[24;1H[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! l\<C-V>j$hhAab\<Esc>"[?25l[16;4Hab
456ab7[16;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/^$/w >> test.out[?25l"test.out" [24;13H[K[24;12H3 lines, 14 characters appended[16;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for Visual block insert when virtualedit=all[?25l[16;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=all[?25l[16;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/\t\tline[?25l[31msearch hit BOTTOM, continuing at TOP[1;17H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexe ":norm! 07l\<C-V>jjIx\<Esc>"[?25l[1;8Hx[2;8Hx[3;8Hx[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.,/^$/w >> test.out[?25l"test.out" [24;13H[K[24;12H4 lines, 49 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" gUe must uppercase a whole word, also when ß changes to SS[?25l[1;1H[?12l[?25h[23;1H[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[24;1H[K[23;17H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[?12l[?25h[22;1Hthe [?25lYOUTUSSEUU endthe [?12l[?25h
the [?25l
:[?12l[?25h" gUfx must uppercase until x, inclusive.[?25l[23;5H[?12l[?25h[?25l- youßtußexu -[23;15H[K[23;14H[?12l[?25h- y[?25lOUSSTUSSEXu -- y[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[24;1H[K[23;4H[?12l[?25h[?25l
:[?12l[?25h" VU must uppercase a whole line[?25l[23;4H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[24;1H[K[23;1H[?12l[?25h[22;1H[?25lt[7mhe youtußeuu end [?12l[?25h[?25l[mTHE YOUTUSSEUU END[?12l[?25h
[?25l
:[?12l[?25h" same, when it's the last line in the buffer[?25l[23;1H[?12l[?25h[?25l[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[24;1H[K[23;1H[?12l[?25h[?25l111the youtußeuu end11[?12l[?25h[?25l[7m11[m1[7mthe youtußeuu end 11[?12l[?25h[?25l[m111THE YOUTUSSEUU END[?12l[?25h[?25l[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[m111THE YOUTUSSEUU END
the youtußeuu end[23;18H[K[22;1H[?12l[?25h
[?25l
:[?12l[?25h" Uppercase two lines[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hblah di[22;8H[K[23;1Hdoh dut[24;1H[K[23;7H[?12l[?25h[?25l[7mdoh du[mt[7m [?12l[?25h[?25l[22;1Hblah d[mi[7m [23;7Ht[22;7H[?12l[?25h[?25l[mBLAH DI[22;8H[K[23;1HDOH DUT[23;8H[K[22;7H[?12l[?25h[23;7H[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[23;7H[?12l[?25h[?25l
:[?12l[?25h" Uppercase part of two lines[?25l[23;7H[?12l[?25h[?25l[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[m
the youtußeuu end[23;18H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hthe youtußeuu end[24;1H[K[23;1H[?12l[?25h[?25l333the youtußeuu end33[?12l[?25h[22;3H[?25l222the youtußeuu end22[?12l[?25h2the yo[?25l[?12l[?25h[?25l[7mutußeuu end 
333the yo[?12l[?25h[?25lut[?12l[?25h[?25l[m[22;10HUTUSSEUU END
333THE YOUTU[22;10H[?12l[?25h[21;7H[22;10H[?25l

:[?12l[?25h" visual replace using Enter or NL[?25l[22;10H[?12l[?25h
[?25l[1;23r[1;1H[3M[1;24r[21;1H123456789
123456789
123456789[24;1H[K[23;9H[?12l[?25h[21;9H12345[?25l[?12l[?25h[?25l[7m6[22;6H6[23;6H[?12l[?25h[?25l[m[21;6H[K[22;1H789[22;4H[K[23;6H[K[21;5H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1H789
12345
789[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1H98765
98765
98765[?12l[?25h[21;5H98[?25l[?12l[?25h[?25l[7m7
[m98[7m7
[m98[?12l[?25h[?25l[21;3H[34m^M[m65
98[34m^M[m65
98[34m^M[m65[21;3H[?12l[?25h
98
[?25l[1;23r[1;1H[3M[1;24r[21;1H123456789
123456789
123456789[?12l[?25h[21;9H12345[?25l[?12l[?25h[?25l[7m6[22;6H6[23;6H[?12l[?25h[?25l[m[21;6H[K[22;1H789[22;4H[K[23;6H[K[21;5H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1H789
12345
789[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1H98765
98765
98765[?12l[?25h[21;5H98[?25l[?12l[?25h[?25l[7m7
[m98[7m7
[m98[?12l[?25h[?25l[21;3H[34m^@[m65
98[34m^@[m65
98[34m^@[m65[21;3H[?12l[?25h[?25l


:[?12l[?25h"[?25l[21;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test cursor position. When ve=block and Visual block mode and $gj[?25l[21;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=block[?25l[21;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! 2k\<C-V>$gj\<Esc>"[?25l[20;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cpos=getpos("'>")[?25l[20;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='col:'.cpos[2].' off:'.cpos[3][?25l[1;23r[23;1H
[1;24r[23;1Hcol:4 off:0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^the/,$w >> test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H27 lines, 244 characters appended[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test40.failed test.ok test.out X* viminfo
cp test40.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test40.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test40.in" 63 lines, 1536 characters[1;1HTest for "*Cmd" autocommands

STARTTEST
:so small.vim
:/^start/,$w! Xxx[15C" write lines below to Xxx
:au BufReadCmd XtestA 0r Xxx|$del
:e XtestA[23C" will read text of Xxd instead
:au BufWriteCmd XtestA call append(line("$"), "write")
:w[30C" will append a line to the file
:r XtestA[23C" should not read anything
:[31C" now we have:
:[31C" 1     start of Xxx
:[31C" 2[13Ctest40
:[31C" 3     end of Xxx
:[31C" 4     write
:au FileReadCmd XtestB '[r Xxx
:2r XtestB[22C" will read Xxx below line 2 instead
:[31C" 1     start of Xxx
:[31C" 2[13Ctest40
:[31C" 3     start of Xxx
:[31C" 4[13Ctest40
:[31C" 5     end of Xxx
:[31C" 6     end of Xxx[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for "*Cmd" autocommands[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 55 lines, 1455 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$w >>test.out[18C" append "end of Xxx" to test.out
:au BufReadCmd XtestE 0r test.out|$del
:sp XtestE[22C" split window with test.out
5Goasdf[34m^[^W^W[m:"
:au BufWriteCmd XtestE w! test.out
:wall[27C" will write other window to test.out
:[31C" 1     start of Xxx
:[31C" 2[13Ctest40
:[31C" 3     start of Xxx
:[31C" 4[13Ctest401
:[31C" 5     end of Xxx
:[31C" 6     asdf
:[31C" 7     end of Xxx
:[31C" 8     write
:[31C" 9[13Ctest401
:[31C" 10    end of Xxx
:[31C" 11    end of Xxx
:qa!
ENDTEST

start of Xxx[22;9Htest40
end of Xxx[19;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start/,$w! Xxx[34m^I^I[m" write lines below to Xxx[?25l"Xxx" [24;7H[K[24;7H[New File] 3 lines, 32 characters written[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadCmd XtestA 0r Xxx|$del[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he XtestA[34m^I^I^I[m" will read text of Xxd instead[?25l"Xxx" [24;7H[K[24;7H3 lines, 32 characters[1;1Hstart of Xxx[1;13H[K[2;1H        test40[2;16H[K[3;1Hend of Xxx[3;33H[K[4;1H[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hau BufWriteCmd XtestA call append(line("$"), "write")[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[34m^I^I^I^I[m" will append a line to the file[?25l[4;1Hwrite[4;6H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hr XtestA[34m^I^I^I[m" should not read anything[?25l[1m[37m[41mE484: Can't open file XtestA[m[24;29H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" now we have:[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 1[34m^I[mstart of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 2[34m^I^I[mtest40[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 3[34m^I[mend of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 4[34m^I[mwrite[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FileReadCmd XtestB '[r Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2r XtestB[34m^I^I^I[m" will read Xxx below line 2 instead[?25l"Xxx" [24;7H[K[24;7H3 lines, 32 characters[3;23r[3;1H[3L[1;24r[3;1Hstart of Xxx[4;9Htest40
end of Xxx[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[34m^I^I^I^I[m" 1[34m^I[mstart of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 2[34m^I^I[mtest40[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 3[34m^I[mstart of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 4[34m^I^I[mtest40[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 5[34m^I[mend of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 6[34m^I[mend of Xxx[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 7[34m^I[mwrite[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FileWriteCmd XtestC '[,']copy $[?25l[3;1H[?12l[?25h[4;9H[?25ltest401[?12l[?25h[5;10H[?25l[24;1H[K[24;1H:[?12l[?25h4,5w XtestC[34m^I^I^I[m" will copy lines 4 and 5 to the end[?25l[8;1H        test401[8;16H[K[9;1Hend of Xxx[9;11H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hr XtestC[34m^I^I^I[m" should not read anything[?25l[1m[37m[41mE484: Can't open file XtestC[m[24;29H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 1[34m^I[mstart of Xxx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 2[34m^I^I[mtest40[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 3[34m^I[mstart of Xxx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 4[34m^I^I[mtest401[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 5[34m^I[mend of Xxx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 6[34m^I[mend of Xxx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 7[34m^I[mwrite[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 8[34m^I^I[mtest401[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 9[34m^I[mend of Xxx[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau FILEAppendCmd XtestD '[,']w! test.out[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>XtestD[34m^I^I^I[m" will write all lines to test.out[?25l"test.out" [24;12H[K[24;12H[New File] 9 lines, 91 characters written[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r XtestD[34m^I^I^I[m" should not read anything[?25l[1m[37m[41mE484: Can't open file XtestD[m[24;30H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$w >>test.out[34m^I^I^I[m" append "end of Xxx" to test.out[?25l"test.out" [24;12H[K[24;12H1 line, 11 characters appended[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufReadCmd XtestE 0r test.out|$del[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsp XtestE[34m^I^I^I[m" split window with test.out[?25l"test.out" [24;12H[K[24;12H10 lines, 102 characters[10;1Hend of Xxx[10;11H[K[12;1H[1m[7mXtestE                                                                          [m[13;1Hend of Xxx[13;11H[K[14;1Hwrite[14;6H[K[15;1H        test401[15;16H[K[16;1Hend of Xxx[16;11H[K[23;1H[7mXtestA                                                                          [10;1H[?12l[?25h[5;1H[?25l[6;11r[m[6;1H[L[1;24r[6;1Hasdf[12;8H[1m[7m[+][m[24;1H[K[6;4H[?12l[?25h[12;1H[7mXtestE [+][m[1m[7m [m[7m                                                                      [m[23;1H[1m[7mXtestA                                                                          [16;1H[?25l[24;1H[m:[?12l[?25h"[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufWriteCmd XtestE w! test.out[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwall[34m^I^I^I^I[m" will write other window to test.out[?25l"test.out" [24;12H[K[24;12H11 lines, 107 characters written[12;8H[7m   [16;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 1[34m^I[mstart of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 2[34m^I^I[mtest40[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 3[34m^I[mstart of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 4[34m^I^I[mtest401[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 5[34m^I[mend of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 6[34m^I[masdf[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 7[34m^I[mend of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 8[34m^I[mwrite[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 9[34m^I^I[mtest401[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 10[34m^I[mend of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[34m^I^I^I^I[m" 11[34m^I[mend of Xxx[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test41.failed test.ok test.out X* viminfo
cp test41.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test41.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test41.in" 24 lines, 421 characters[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 end[34m^[[mkY3000p2GY3000p
:w! Xtest
:%d
:e! Xtest
:.w! test.out
3003G:.w >>test.out
6005G:.w >>test.out
:qa!
ENDTEST[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for writing and reading a file of over 100 Kbyte[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[9;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 13 lines, 196 characters written[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[10;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%d[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25lThis is the start
This is the leader[2;19H[K[3;1HThis is the middle[3;19H[K[4;1HThis is the trailer[4;20H[K[5;1HThis is the end[5;16H[K[5;15H[?12l[?25h[4;15H[?25l[24;1H3000 more lines[24;16H[K[5;13Htrailer
This is the trailer[6;20H[K[7;1HThis is the trailer[7;20H[K[8;1HThis is the trailer[8;20H[K[9;1HThis is the trailer[9;20H[K[10;1HThis is the trailer[10;20H[K[11;1HThis is the trailer[11;20H[K[12;1HThis is the trailer[12;20H[K[13;1HThis is the trailer[13;20H[K[14;1HThis is the trailer[14;20H[K[15;1HThis is the trailer[15;20H[K[16;1HThis is the trailer[16;20H[K[17;1HThis is the trailer[17;20H[K[18;1HThis is the trailer[18;20H[K[19;1HThis is the trailer[19;20H[K[20;1HThis is the trailer[20;20H[K[21;1HThis is the trailer[21;20H[K[22;1HThis is the trailer[22;20H[K[23;1HThis is the trailer[23;20H[K[5;1H[?12l[?25h[2;1H[?25l[3;13Hleader[4;13Hleader[4;19H[K[5;13Hleader[5;19H[K[6;13Hleader[6;19H[K[7;13Hleader[7;19H[K[8;13Hleader[8;19H[K[9;13Hleader[9;19H[K[10;13Hleader[10;19H[K[11;13Hleader[11;19H[K[12;13Hleader[12;19H[K[13;13Hleader[13;19H[K[14;13Hleader[14;19H[K[15;13Hleader[15;19H[K[16;13Hleader[16;19H[K[17;13Hleader[17;19H[K[18;13Hleader[18;19H[K[19;13Hleader[19;19H[K[20;13Hleader[20;19H[K[21;13Hleader[21;19H[K[22;13Hleader[22;19H[K[23;13Hleader[23;19H[K[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest[?25l"Xtest" [24;9H[K[24;9H[New File] 6005 lines, 117092 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%d[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest[?25l"Xtest" [24;9H[K[24;9H6005 lines, 117092 characters[1;1HThis is the start
This is the leader[2;19H[K[3;1HThis is the leader[3;19H[K[4;1HThis is the leader[4;19H[K[5;1HThis is the leader[5;19H[K[6;1HThis is the leader[6;19H[K[7;1HThis is the leader[7;19H[K[8;1HThis is the leader[8;19H[K[9;1HThis is the leader[9;19H[K[10;1HThis is the leader[10;19H[K[11;1HThis is the leader[11;19H[K[12;1HThis is the leader[12;19H[K[13;1HThis is the leader[13;19H[K[14;1HThis is the leader[14;19H[K[15;1HThis is the leader[15;19H[K[16;1HThis is the leader[16;19H[K[17;1HThis is the leader[17;19H[K[18;1HThis is the leader[18;19H[K[19;1HThis is the leader[19;19H[K[20;1HThis is the leader[20;19H[K[21;1HThis is the leader[21;19H[K[22;1HThis is the leader[22;19H[K[23;1HThis is the leader[23;19H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 18 characters written[1;1H[?12l[?25h[?25l[27m[m[H[2J[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 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[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 19 characters appended[12;1H[?12l[?25h[?25l[27m[m[H[2J[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 end[?12l[?25h[?25l
:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 16 characters appended[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test42.failed test.ok test.out X* viminfo
cp test42.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test42.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test42.in" 130 lines, 2368 characters[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=unix[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! Xtest4[22C" Ignore change from setting 'ff'
o[34m^V^@^[[m:set noeol
:w
:set ffs& nobinary[14C" Allow default test42.in format
:e #
:set ff=unix[20C" Format for files to write
:/^ucs-4$/+1w! Xtest5
:/^ucs-4le$/+1w! Xtest6[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for writing and reading a file starting with a BOM[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 111 lines, 2116 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&[15C" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
þþlatin-1
utf-8
ï»¿utf-8
utf-8-err
ï»¿utf-8[34m~@[merr
ucs-2
þÿ[34m^@[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[m
ucs-2le
ÿþu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[12;1H[?12l[?25h
[?25l[24;1H[m:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=utf-8[?25l[27m[m[H[2J[1;1H:e! test.out
:$r Xtest0x
:$r Xtest1x
:$r Xtest2x
:$r Xtest3x
:$r Xtest4x
:$r Xtest5x
:$r Xtest6x
:set nobin ff&[15C" Write the file in default format
:w! test.out
:qa!
ENDTEST

latin-1
[34m<fe><fe>[mlatin-1
utf-8
[34m<feff>[mutf-8
utf-8-err
[34m<feff>[mutf-8[34m<80>[merr
ucs-2
[34m<fe><ff>^@[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[m
ucs-2le
[34m<ff><fe>[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[13;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hset fileencodings=ucs-bom,latin-1[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ff=unix ffs=unix           " This changes the file for DOS and MAC[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Write the test files[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^latin-1$/+1w! Xtest0[?25l"Xtest0" [24;10H[K[24;10H[New File] 1 line, 10 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^utf-8$/+1w! Xtest1[?25l"Xtest1" [24;10H[K[24;10H[New File] 1 line, 9 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^utf-8-err$/+1w! Xtest2[?25l"Xtest2" [24;10H[K[24;10H[New File] 1 line, 13 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^ucs-2$/+1w! Xtest3[?25l"Xtest3" [24;10H[K[24;10H[New File] 1 line, 14 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^ucs-2le$/+1w! Xtest4[?25l"Xtest4" [24;10H[K[24;10H[New File] 1 line, 17 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Need to add a NUL byte after the NL byte[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest4                      " Ignore change from setting 'ff'[?25l"Xtest4" [24;10H[K[24;10H1 line, 17 characters[1;1H[34m<ff><fe>[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[m
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h
[?25l[m[34m^@[m[2;3H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noeol[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtest4" [Incomplete last line] 2 lines, 18 characters written[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ffs& nobinary              " Allow default test42.in format[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he #[?25l"test42.in" [converted] 130 lines, 2385 characters[1;1H:$r Xtest0x[1;12H[K[2;1H:$r Xtest1x
:$r Xtest2x[3;12H[K[4;1H:$r Xtest3x[4;12H[K[5;1H:$r Xtest4x[5;12H[K[6;1H:$r Xtest5x[6;12H[K[7;1H:$r Xtest6x[7;12H[K[8;1H:set nobin ff&               " Write the file in default format[8;64H[K[9;1H:w! test.out[9;13H[K[10;1H:qa![10;5H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1Hlatin-1[13;8H[K[14;1HÃ¾Ã¾latin-1[14;10H[K[15;1Hutf-8[15;6H[K[16;1HÃ¯Â»Â¿utf-8[16;9H[K[17;1Hutf-8-err[17;10H[K[18;1HÃ¯Â»Â¿utf-8[34m<80>[merr[18;16H[K[19;1Hucs-2[19;6H[K[20;1HÃ¾Ã¿[34m^@[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[m[20;20H[K[21;1Hucs-2le[21;8H[K[22;1HÃ¿Ã¾u[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[m[22;24H[K[23;1Hucs-4[23;6H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ff=unix                    " Format for files to write[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^ucs-4$/+1w! Xtest5[?25l"Xtest5" [24;10H[K[24;10H[converted][New File] 1 line, 30 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^ucs-4le$/+1w! Xtest6[?25l"Xtest6" [24;10H[K[24;10H[converted][New File] 1 line, 35 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Need to add three NUL bytes after the NL byte[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest6                      " ! for when setting 'ff' is a change[?25l"Xtest6" [24;10H[K[24;10H1 line, 33 characters[1;1H[34m<ff><fe>^@^@[mu[34m^@^@^@[mc[34m^@^@^@[ms[34m^@^@^@[m-[34m^@^@^@[m4[34m^@^@^@[ml[34m^@^@^@[me[34m^@^@^@[m
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h
~   [?25l[m[34m^@^@^@[m[2;7H[K[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noeol[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtest6" [Incomplete last line] 2 lines, 36 characters written[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he #[?25l"test42.in" [converted] 130 lines, 2385 characters[1;1H:$r Xtest0x[1;12H[K[2;1H:$r Xtest1x
:$r Xtest2x[3;12H[K[4;1H:$r Xtest3x[4;12H[K[5;1H:$r Xtest4x[5;12H[K[6;1H:$r Xtest5x[6;12H[K[7;1H:$r Xtest6x[7;12H[K[8;1H:set nobin ff&               " Write the file in default format[8;64H[K[9;1H:w! test.out[9;13H[K[10;1H:qa![10;5H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1Hlatin-1[13;8H[K[14;1HÃ¾Ã¾latin-1[14;10H[K[15;1Hutf-8[15;6H[K[16;1HÃ¯Â»Â¿utf-8[16;9H[K[17;1Hutf-8-err[17;10H[K[18;1HÃ¯Â»Â¿utf-8[34m<80>[merr[18;16H[K[19;1Hucs-2[19;6H[K[20;1HÃ¾Ã¿[34m^@[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[m[20;20H[K[21;1Hucs-2le[21;8H[K[22;1HÃ¿Ã¾u[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[m[22;24H[K[23;1Hucs-4[23;6H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that editing a latin-1 file doesn't see a BOM[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest0[?25l"Xtest0" [24;10H[K[24;10H[converted] 1 line, 12 characters[1;1HÃ¾Ã¾latin-1[1;10H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir! >test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=latin1
nobomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1HÃ¾Ã¾latin-1
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 12 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bomb fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest0x[?25l"Xtest0x" [24;11H[K[24;11H[converted][New File] 1 line, 12 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check utf-8[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest1[?25l"Xtest1" [24;10H[K[24;10H1 line, 9 characters[1;1Hutf-8[1;6H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=utf-8
  bomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1Hutf-8
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 6 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=utf-8[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest1x[?25l"Xtest1x" [24;11H[K[24;11H[New File] 1 line, 9 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check utf-8 with an error (will fall back to latin-1)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest2[?25l"Xtest2" [24;10H[K[24;10H[converted] 1 line, 17 characters[1;1HÃ¯Â»Â¿utf-8[34m<80>[merr[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=latin1
nobomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1HÃ¯Â»Â¿utf-8[34m<80>[merr
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 17 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=utf-8[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest2x[?25l"Xtest2x" [24;11H[K[24;11H[New File] 1 line, 17 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check ucs-2[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest3[?25l"Xtest3" [24;10H[K[24;10H[converted] 1 line, 8 characters[1;1Hucs-2[1;6H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=utf-16
  bomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1Hucs-2
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 6 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=ucs-2[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest3x[?25l"Xtest3x" [24;11H[K[24;11H[converted][New File] 1 line, 8 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check ucs-2le[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest4[?25l"Xtest4" [24;10H[K[24;10H[converted] 1 line, 10 characters[1;6Hle[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=utf-16le
  bomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1Hucs-2le
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 8 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=ucs-2le[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest4x[?25l"Xtest4x" [24;11H[K[24;11H[converted][New File] 1 line, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check ucs-4[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest5[?25l"Xtest5" [24;10H[K[24;10H[converted] 1 line, 10 characters[1;5H4[1;6H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=ucs-4
  bomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1Hucs-4
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 6 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=ucs-4[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest5x[?25l"Xtest5x" [24;11H[K[24;11H[converted][New File] 1 line, 10 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check ucs-4le[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest6[?25l"Xtest6" [24;10H[K[24;10H[converted] 1 line, 12 characters[1;6Hle[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >>test.out[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileencoding bomb?[?25l[24;1H[K[24;1H  fileencoding=ucs-4le
  bomb
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[2L[1;1Hucs-4le
[1m[34m~                                                                               [m[24;3H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=latin-1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H[converted] 1 line, 8 characters appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fenc=ucs-4le[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtest6x[?25l"Xtest6x" [24;11H[K[24;11H[converted][New File] 1 line, 12 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check the files written with BOM[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! test.out[?25l"test.out" [24;12H[K[24;12H35 lines, 275 characters[1;1H[K[2;1H[K[3;1H  fileencoding=latin1[3;22H[K[4;1Hnobomb[4;7H[K[5;1H[34m<fe><fe>[mlatin-1[5;16H[K[6;1H[K[7;1H[K[8;1H  fileencoding=utf-8[8;21H[K[9;1H  bomb[9;7H[K[10;1Hutf-8[10;6H[K[11;1H[K[12;1H[K[13;1H  fileencoding=latin1[13;22H[K[14;1Hnobomb[14;7H[K[15;1H[34m<feff>[mutf-8[34m<80>[merr[15;19H[K[16;1H[K[17;1H[K[18;1H  fileencoding=utf-16[18;22H[K[19;1H  bomb[19;7H[K[20;1Hucs-2[20;6H[K[21;1H[K[22;1H[K[23;1H  fileencoding=utf-16le[23;24H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$r Xtest0x[?25l"Xtest0x" [24;11H[K[24;11H1 line, 10 characters[1;23r[1;1H[13M[1;24r[11;3Hbomb
ucs-2le[15;3Hfileencoding=ucs-4
  bomb
ucs-4[20;3Hfileencoding=ucs-4le
  bomb
ucs-4le
[34m<fe><fe>[mlatin-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest1x[?25l"Xtest1x" [24;11H[K[24;11H1 line, 9 characters[1;23r[23;1H
[1;24r[23;1H[34m<feff>[mutf-8[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest2x[?25l"Xtest2x" [24;11H[K[24;11H1 line, 17 characters[1;23r[23;1H
[1;24r[23;1HÃ¯Â»Â¿utf-8[34m<80>[merr[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest3x[?25l"Xtest3x" [24;11H[K[24;11H1 line, 14 characters[1;23r[23;1H
[1;24r[23;1H[34m<fe><ff>^@[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest4x[?25l"Xtest4x" [24;11H[K[24;11H[Incomplete last line] 2 lines, 18 characters[1;23r[23;1H
[1;24r[23;1H[34m<ff><fe>[mu[34m^@[mc[34m^@[ms[34m^@[m-[34m^@[m2[34m^@[ml[34m^@[me[34m^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest5x[?25l"Xtest5x" [24;11H[K[24;11H1 line, 28 characters[1;23r[1;1H[2M[1;24r[22;1H[34m^@
^@^@<fe><ff>^@^@^@[mu[34m^@^@^@[mc[34m^@^@^@[ms[34m^@^@^@[m-[34m^@^@^@[m4[34m^@^@^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$r Xtest6x[?25l"Xtest6x" [24;11H[K[24;11H[Incomplete last line] 2 lines, 36 characters[1;23r[23;1H
[1;24r[23;1H[34m<ff><fe>^@^@[mu[34m^@^@^@[mc[34m^@^@^@[ms[34m^@^@^@[m-[34m^@^@^@[m4[34m^@^@^@[ml[34m^@^@^@[me[34m^@^@^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset nobin ff&               " Write the file in default format[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H44 lines, 409 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test43.failed test.ok test.out X* viminfo
cp test43.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test43.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test43.in" 34 lines, 473 characters[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;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for regexp with various magic settings.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 19 lines, 268 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^1[?25l[1;23r[23;1H
[1;24r[23;1H1 a aa abb abbccc[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25ha*b\{2}c\+/e[?25l[23;17H[?12l[?25h[?25l[23;17H[K[23;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\Md\*e\{2}f\+/e[?25l[1;23r[23;1H
[1;24r[23;1H2 d dd dee deefff[24;1H[K[23;17H[?12l[?25h[?25l[23;17H[K[23;16H[?12l[?25h[?25l
:[?12l[?25hset nomagic[?25l[23;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hg\*h\{2}i\+/e[?25l[1;23r[23;1H
[1;24r[23;1H3 g gg ghh ghhiii[24;1H[K[23;17H[?12l[?25h[?25l[23;17H[K[23;16H[?12l[?25h[?25l
/[?12l[?25h\mj*k\{2}l\+/e[?25l[1;23r[23;1H
[1;24r[23;1H4 j jj jkk jkklll[24;1H[K[23;17H[?12l[?25h[?25l[23;17H[K[23;16H[?12l[?25h[?25l
/[?12l[?25h\vm*n{2}o+/e[?25l[1;23r[23;1H
[1;24r[23;1H5 m mm mnn mnnooo[24;1H[K[23;17H[?12l[?25h[?25l[23;17H[K[23;16H[?12l[?25h[?25l
/[?12l[?25h\V^aa$[?25l[1;23r[23;1H
[1;24r[23;1H6 x ^aa$ x[24;1H[K[23;5H[?12l[?25h[?25laa$ x[23;10H[K[23;5H[?12l[?25h[?25l
:[?12l[?25hset magic[?25l[23;5H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\v(a)(b)\2\1\1/e[?25l[1;23r[23;1H
[1;24r[23;1H7 (a)(b) abbaa[24;1H[K[23;14H[?12l[?25h[?25l[23;14H[K[23;13H[?12l[?25h[?25l
/[?12l[?25h\V[ab]\(\[xy]\)\1[?25l[1;23r[23;1H
[1;24r[23;1H8 axx [ab]xx[24;1H[K[23;7H[?12l[?25h[?25lab]x[23;12H[K[23;7H[?12l[?25h[?25l
:[?12l[?25h$[?25l[1;23r[1;1H[2M[1;24r[22;1H9 foobar[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset undolevels=100[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H?[?12l[?25hbar?[?25l[24;5H[K[24;1H[22;6H[K[23;1H[1m[34m~                                                                               [22;5H[?12l[?25h[?25l[m

1 more line; before #2  0 seconds ago[22;6Hbar[23;1H[K[22;6H[?12l[?25h[?25l
9 foo[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?^1?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 11L, 137C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test44.failed test.ok test.out X* viminfo
cp test44.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test44.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test44.in" 68 lines, 2601 characters[1;1HTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test99 for exactly the same test with re=2.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=1
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/à¸¡
x:" Now search for multi-byte with composing char
/à¸¡à¹[34m~H[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for regexp with multi-byte encoding and various magic settings.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 41 lines, 1362 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hx?.
x:let @w=':%s#comb[i]nations#Å[34m~S[mÌ[34m~D[má¹£Ì[34m~A[mmÌ¥Ì[34m~D[mÎ±Ì[34m~D[mÌ[34m~F[mÌ[34m~A[m#g'
:@w
:?^1?,$w! test.out
:e! test.out
G:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 0, 2) " ×[34m~Q[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \"..\", 0, 2) " ×[34m~Q[m×[34m~R[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 0, 0) " ×[34m~P[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 4, -1) " ×[34m~R[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 à¸«à¸¡à¹[34m~H[mx à¸­à¸¡x
a à¸­à¸¡x à¸«à¸¡à¹[34m~H[mx[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo[?25l[27m[m[H[2J[1;1Hx?.
x:let @w=':%s#comb[i]nations#¿¿m¿#g'
:@w
:?^1?,$w! test.out
:e! test.out
G:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿
:put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿
:put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿
:put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
9 ¿¿x ¿¿x
a ¿¿x ¿¿x[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset re=1[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^1[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25ha*b\{2}c\+/e[?25l[14;17H[?12l[?25h[?25l[14;17H[K[14;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\Md\*e\{2}f\+/e[?25l[15;17H[?12l[?25h[?25l[15;17H[K[15;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nomagic[?25l[15;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hg\*h\{2}i\+/e[?25l[16;17H[?12l[?25h[?25l[16;17H[K[16;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\mj*k\{2}l\+/e[?25l[17;17H[?12l[?25h[?25l[17;17H[K[17;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\vm*n{2}o+/e[?25l[18;17H[?12l[?25h[?25l[18;17H[K[18;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\V^aa$[?25l[19;5H[?12l[?25h[?25laa$ x[19;10H[K[19;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic[?25l[19;5H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\v(a)(b)\2\1\1/e[?25l[20;14H[?12l[?25h[?25l[20;14H[K[20;13H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\V[ab]\(\[xy]\)\1[?25l[21;7H[?12l[?25h[?25lab]x[21;12H[K[21;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Now search for multi-byte without composing char[?25l[21;7H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿[?25l[22;8H[?12l[?25h[?25lx[22;9H[K[22;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Now search for multi-byte with composing char[?25l[22;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿¿[?25l[23;8H[?12l[?25h[?25lx[23;9H[K[23;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" find word by change of word class[?25l[23;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿?\<¿?¿?\>¿?[?25l[1;23r[23;1H
[1;24r[23;1Hb ¿?¿?¿?¿?[24;1H[K[23;3H[?12l[?25h[?25l¿?¿?¿?[23;9H[K[23;3H[?12l[?25h[?25l
:[?12l[?25h" Test \%u, [\u] and friends[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\%u20ac[?25l[1;23r[23;1H
[1;24r[23;1Hc x ¬¿x[24;1H[K[23;6H[?12l[?25h[?25lx[23;7H[K[23;6H[?12l[?25h[?25l
/[?12l[?25h[\u4f7f\u5929]\+[?25l[1;23r[23;1H
[1;24r[23;1Hd ¿?¿?x[24;1H[K[23;3H[?12l[?25h[?25l¿?x [23;7H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h\%U12345678[?25l[1;23r[23;1H
[1;24r[23;1He ¿y[24;1H[K[23;3H[?12l[?25h[?25ly[23;4H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h[\U1234abcd\u1234\uabcd][?25l[1;23r[23;1H
[1;24r[23;1Hf ¿z[24;1H[K[23;3H[?12l[?25h[?25lz[23;4H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h\%d21879b[?25l[1;23r[23;1H
[1;24r[23;1Hg a¿?bb[24;1H[K[23;4H[?12l[?25h[?25lbb[23;6H[K[23;4H[?12l[?25h[?25l
/[?12l[?25h [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=
[23;80H][24;1H]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R
[23;80H=[24;1H]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e[?25l[22;1H[32mPress ENTER or type command to continue[m[22;40H[K[23;1H[K[24;1H[K[?12l[?25h[1;1H[2L[?25l[1;1H:w!
:qa!
ENDTEST[3;8H[K[4;1H[K[5;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$ x[10;10H[K[11;1H7 (a)(b) abba[11;14H[K[12;1H8 axx ab]xx[12;12H[K[13;1H9 ¿¿x ¿x[13;9H[K[14;1Ha ¿¿x ¿x[14;10H[K[15;1Hb ¿?¿?¿?[15;9H[K[16;1Hc x ¬x[16;7H[K[17;1Hd ¿?[17;7H[K[18;1He y [18;5H[K[19;1Hf z[19;5H[K[20;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [22;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [23;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿¿[24;1H[K[23;38H[?12l[?25h[?25l[23;38H[K[23;37H[?12l[?25h[?25l
/[?12l[?25h [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=
[23;80H][24;1H]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r
[23;80H=[24;1H]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e[?25l[22;1H[32mPress ENTER or type command to continue[m[22;40H[K[23;1H[K[24;1H[K[?12l[?25h[1;1H[2L[?25l[2;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$ x[7;10H[K[8;1H7 (a)(b) abba[8;14H[K[9;1H8 axx ab]xx[9;12H[K[10;1H9 ¿¿x ¿x[10;9H[K[11;1Ha ¿¿x ¿x[11;10H[K[12;1Hb ¿?¿?¿?[12;9H[K[13;1Hc x ¬x[13;7H[K[14;1Hd ¿?[14;7H[K[15;1He y [15;5H[K[16;1Hf z[16;5H[K[17;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [19;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [20;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿
i aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ [22;1H j¿¿ k¿¿¿¿ l¿¿¿¿¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúû [23;1Hü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿¿¿¿ z¿¿¿¿¿¿[24;1H[K[23;43H[?12l[?25h[?25l[23;43H[K[23;42H[?12l[?25h[?25l
:[?12l[?25h" Test backwards search from a multi-byte char[?25l[23;42H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hx[?25l[1;23r[23;1H
[1;24r[23;1Hj 0123¿x[24;1H[K[23;8H[?12l[?25h[?25l[23;8H[K[23;7H[?12l[?25h[?25l
?[?12l[?25h.[?25l[23;6H[?12l[?25h[?25l¿[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @w=':%s#comb[i]nations#¿¿¿¿mmm¿¿¿[1C#g'[?25l[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h@w[?25l[1;23r[23;1H
[1;24r[23;1Hk ¿¿m¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h?^1?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 20L, 1011C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! test.out[?25l"test.out" [24;12H[K[24;12H20L, 1011C[1;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$ x[6;10H[K[7;1H7 (a)(b) abba
8 axx ab]xx
9 ¿¿x ¿
a ¿¿x ¿x
b ¿?¿?¿?
c x ¬x
d ¿?x
e y
f z[15;4H[K[16;1Hg abb[16;6H[K[17;1Hh AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [18;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [19;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿[19;38H[K[20;1Hi aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ [21;1H j¿¿ k¿¿¿¿ l¿¿¿¿¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúû [22;1Hü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿¿¿¿ z¿¿¿¿¿
j 012¿[1;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hk ¿¿m¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿[?25l[1;23r[23;1H
[1;24r[23;1H¿¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hw![?25l"test.out" 24L, 1025C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test45.failed test.ok test.out X* viminfo
cp test45.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test45.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test45.in" 80 lines, 1824 characters[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{{ [34m^[[mr{jj:call append("$", foldlevel("."))
kYpj:call append("$", foldlevel("."))[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for folding. vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 63 lines, 1691 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H/bb$
:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))
/ii$
:call append("$", foldlevel("."))
/kk$
:call append("$", foldlevel("."))
:/^last/+1,$w! test.out
:delfun Flvl
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" We also need the +syntax feature here.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has("syntax")[?25l
:  [?12l[?25h   e! test.ok
[?25l:  [?12l[?25h   w! test.out
[?25l:  [?12l[?25h   qa!
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H/bb$
:call append("$", "expr " . foldlevel("."))
/hh$
:call append("$", foldlevel("."))[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" basic test if a fold can be created, opened, moving to the end and closed[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^1[?25l[14;1H[?12l[?25h[?25l[34m[47m+--  3 lines: 1 aa--------------------------------------------------------------[m[15;1H4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg[18;6H[K[19;1H8 hh[19;6H[K[20;1H9 ii
a jj
b kk
last[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", "manual " . getline(foldclosed(".")))[?25l[14;1H[?12l[?25h[?25l1 aa[14;5H[K[15;1H2 bb[15;6H[K[16;1H3 cc[16;6H[K[17;1H4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg
8 hh
9 ii
a jj[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldclosed("."))[?25l[14;1H[?12l[?25h

[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", getline("."))[?25l[16;1H[?12l[?25h[?25l[14;1H[34m[47m+--  3 lines: 1 aa--------------------------------------------------------------[m[15;1H4 dd {{{
5 ee {{{ }}}
6 ff }}}
7 gg[18;6H[K[19;1H8 hh[19;6H[K[20;1H9 ii
a jj
b kk
last[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", getline(foldclosed(".")))[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test folding with markers.[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fdm=marker fdl=1 fdc=3[?25l[1;1H[34m[47m   [m/bb$
[34m[47m   [m:call append("$", "expr " . foldlevel("."))
[34m[47m   [m/hh$
[34m[47m   [m:call append("$", foldlevel("."))
[34m[47m   [m/ii$
[34m[47m   [m:call append("$", foldlevel("."))
[34m[47m   [m/kk$
[34m[47m   [m:call append("$", foldlevel("."))
[34m[47m   [m:/^last/+1,$w! test.out
[34m[47m   [m:delfun Flvl
[34m[47m   [m:qa!
[34m[47m   [mENDTEST
[34m[47m   
   [m1 aa[14;8H[K[15;1H[34m[47m   [m2 bb[15;8H[K[16;1H[34m[47m   [m3 cc[16;8H[K[17;1H[34m[47m-  [m4 dd {{{
[34m[47m|- [m5 ee {{{ }}}
[34m[47m|  [m6 ff }}}
[34m[47m   [m7 gg
[34m[47m   [m8 hh
[34m[47m   [m9 ii
[34m[47m   [ma jj[16;4H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^5[?25l[18;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", "marker " . foldlevel("."))[?25l[18;4H[?12l[?25h[17;4H[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[17;4H[?12l[?25h[18;4H[?25l[20;23r[20;1H[L[1;24r[19;4H{{ [19;7H[K[20;1H[34m[47m|  [m6 ff }}}[24;1H[K[19;6H[?12l[?25h[?25l[19;2H[34m[47m-[m[3C{[20;2H[34m[47m|
|
|
|[19;6H[?12l[?25h[20;6H[21;6H[?25l


[m:[?12l[?25hcall append("$", foldlevel("."))[?25l[21;6H[?12l[?25h[20;6H[?25l[21;4H6 ff }}}
[34m[47m [m[2C7 gg
[34m[47m [m[2C8 hh[21;4H[?12l[?25h[22;4H[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[22;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test folding with indent[?25l[22;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fdm=indent sw=2[?25l[17;1H[34m[47m 
  
  
  
 
   [?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h^2 b[?25l[31msearch hit BOTTOM, continuing at TOP[15;4H[?12l[?25h[?25l[m[34m[47m-[m[2C  2 bb[?12l[?25h[16;5H[?25l[34m[47m|-[m[1C    3 cc[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", "indent " . foldlevel("."))[?25l[16;7H[?12l[?25h[15;7H[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[15;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test syntax folding[?25l[15;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fdm=syntax fdl=0[?25l[15;1H[34m[47m 
  [15;7H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsyn region Hup start="dd" end="ii" fold contains=Fd1,Fd2,Fd3[?25l[17;1H[34m[47m+  +--  8 lines: 4 dd ----------------------------------------------------------[m[18;4Ha jj[18;9H[K[19;4Hb kk[20;4Hlast[20;9H[K[21;4Hmanual 1 aa[22;4H-1[22;6H[K[23;4H3 cc[15;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsyn region Fd1 start="ee" end="ff" fold contained[?25l[15;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsyn region Fd2 start="gg" end="hh" fold contained[?25l[15;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsyn region Fd3 start="commentstart" end="commentend" fold contained[?25l[15;7H[?12l[?25h[?25l[1;23r[1;1H[7M[1;24r[17;1H[34m[47m   [m1 aa
[34m[47m   [mmarker 2
[34m[47m   [m1
[34m[47m   [m1
[34m[47m   [m0
[34m[47m   [mindent 2
[34m[47m   [m1[24;1H[K[23;4H[?12l[?25h[10;4H[?25l[24;1H:[?12l[?25hcall append("$", "folding " . getline("."))[?25l[10;4H[?12l[?25h[9;4H[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", getline("."))[?25l[9;4H[?12l[?25h[10;4H[?25l[34m[47m--[m[1C4 dd {{{commentstart  [10;26H[K[11;1H[34m[47m||[m[1C5 ee {{{ }}}
[34m[47m||[m[1C{{{[12;7H[K[13;1H[34m[47m||[m[1C6 ff }}}
[34m[47m||[m[1C6 ff }}}[14;13H[K[15;1H[34m[47m||[m[1C7 gg
[34m[47m||[m[1C8 hh
[34m[47m||[m[1C9 ii
[34m[47m||[m[1Ca jj[18;8H[K[19;1H[34m[47m||[m[1Cb kk
[34m[47m||[m[1Clast
[34m[47m||[m[1Cmanual 1 aa
[34m[47m||[m[1C-1[22;6H[K[23;1H[34m[47m||[m[1C3 cc[10;25H[?12l[?25h[?25l[10;2H[34m[47m [m[23Ccommentend[11;2H[34m[47m-[14;2H 
|-

| 
  
  
  
  
  
  [10;35H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset fdl=1[?25l[11;2H[34m[47m+ +---  3 lines: 5 ee ---------------------------------------------------------[12;2H [m[1C6 ff }}}[13;2H[34m[47m+ +---  2 lines: 7 gg----------------------------------------------------------[m[14;4H9 ii[14;9H[K[15;1H[34m[47m  [m[1Ca jj
[34m[47m  [m[1Cb kk
[34m[47m [m[2Clast[18;4Hmanual 1 aa[19;4H-1[19;6H[K[20;4H3 cc[21;4H1 aa[21;8H[K[22;4Hmarker 2[23;4H1[23;6H[K[10;35H[?12l[?25h[13;4H[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", getline("."))[?25l[13;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fdl=0[?25l[10;1H[34m[47m+  +--  8 lines: 4 dd commentstart  commentend----------------------------------[11;1H  [m[1Ca jj[11;8H[K[12;1H[34m[47m [m[2Cb kk[12;9H[K[13;1H[34m[47m  [m[1Clast[13;8H[K[14;1H[34m[47m [m[2Cmanual 1 aa[15;4H-1[15;6H[K[16;4H3 cc[17;4H1 aa[18;6Hrker 2[18;13H[K[19;4H1[19;5H[K[20;4H1[20;6H[K[21;4H0[21;6H[K[22;4Hindent[10;4H[?12l[?25h[?25l[34m[47m-[m[2C4 dd {{{commentstart  commentend[10;36H[K[11;1H[34m[47m|-[m[1C5 ee {{{ }}}
[34m[47m||[m[1C{{{[12;7H[K[13;1H[34m[47m||[m[1C6 ff }}}
[34m[47m|[m[2C6 ff }}}[14;13H[K[15;1H[34m[47m|-[m[1C7 gg
[34m[47m||[m[1C8 hh
[34m[47m|[m[2C9 ii[18;4Ha jj[18;8H[K[19;4Hb kk[20;4Hlast[21;4Hmanual 1 aa[22;4H-1[22;6H[K[23;4H3 cc[15;7H[?12l[?25h[27m[m[H[2J[?25l[1;1H[34m[47m   [m:call append("$", foldlevel("."))
[34m[47m   [m:/^last/+1,$w! test.out
[34m[47m   [m:delfun Flvl
[34m[47m   [m:qa!
[34m[47m   [mENDTEST
[34m[47m   
   [m1 aa
[34m[47m   [m  2 bb
[34m[47m   [m    3 cc
[34m[47m-  [m4 dd {{{commentstart  commentend
[34m[47m|- [m5 ee {{{ }}}
[34m[47m|| [m{{{
[34m[47m|| [m6 ff }}}
[34m[47m|  [m6 ff }}}
[34m[47m|- [m7 gg
[34m[47m|| [m8 hh
[34m[47m|  [m9 ii
[34m[47m   [ma jj
[34m[47m   [mb kk
[34m[47m   [mlast
[34m[47m   [mmanual 1 aa
[34m[47m   [m-1
[34m[47m   [m3 cc[15;7H[?12l[?25h[16;4H[?25l[24;1H:[?12l[?25hcall append("$", getline("."))[?25l[16;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test expression folding[?25l[16;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfun Flvl()[?25l
:  [?12l[?25h  let l = getline(v:lnum)
[?25l:  [?12l[?25h  if l =~ "bb$"
[?25l:    [?12l[?25h    return 2
[?25l:    [?12l[?25h  elseif l =~ "gg$"
[?25l:    [?12l[?25h    return "s1"
[?25l:    [?12l[?25h  elseif l =~ "ii$"
[?25l:    [?12l[?25h    return ">2"
[?25l:    [?12l[?25h  elseif l =~ "kk$"
[?25l:    [?12l[?25h    return "0"
[?25l:    [?12l[?25h  endif
[?25l:  [?12l[?25h  return "="
[?25l:  [?12l[?25hendfun[1;1H[12L[?25l[1;1H[34m[47m   [m:call append("$", foldlevel("."))
[34m[47m   [m:/^last/+1,$w! test.out
[34m[47m   [m:delfun Flvl
[34m[47m   [m:qa!
[34m[47m   [mENDTEST
[34m[47m   
   [m1 aa
[34m[47m   [m  2 bb
[34m[47m   [m    3 cc
[34m[47m-  [m4 dd {{{commentstart  commentend
[34m[47m|- [m5 ee {{{ }}}
[34m[47m|| [m{{{[24;1H[K[16;4H[?12l[?25h[?25l[24;1H:[?12l[?25hset fdm=expr fde=Flvl()[?25l[8;1H[34m[47m+  +-- 11 lines: 2 bb-----------------------------------------------------------[m[9;4Hb kk[9;8H[K[10;1H[34m[47m [m[2Clast[10;9H[K[11;1H[34m[47m  [m[1Cmanual 1 aa[11;15H[K[12;1H[34m[47m  [m[1C-1[12;6H[K[13;1H[34m[47m  [m[1C3 cc[13;9H[K[14;1H[34m[47m [m[2C1 aa[14;9H[K[15;1H[34m[47m  [m[1Cmarker 2
[34m[47m  [m[1C1[16;6H[K[17;1H[34m[47m [m[2C1[17;6H[K[18;4H0[18;6H[K[19;4Hindent 2[20;4H1[20;5H[K[21;1H[34m[47m+  +--  4 lines: folding 9 ii---------------------------------------------------[m[22;4H[1m[34m~                                                                            [23;4H~                                                                            [8;4H[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25hbb$[?25l[31msearch hit BOTTOM, continuing at TOP[m[8;1H[34m[47m--[m[1C  2 bb[8;10H[K[9;1H[34m[47m||[m[1C    3 cc
[34m[47m||[m[1C4 dd {{{commentstart  commentend
[34m[47m||[m[1C5 ee {{{ }}}
[34m[47m||[m[1C{{{
[34m[47m||[m[1C6 ff }}}
[34m[47m||[m[1C6 ff }}}
[34m[47m||[m[1C7 gg[15;8H[K[16;1H[34m[47m|[m[2C8 hh
[34m[47m|+ +---  2 lines: 9 ii----------------------------------------------------------[m[18;4Hb kk[19;4Hlast[19;8H[K[20;4Hmanual 1 aa
[34m[47m [m[2C-1[21;6H[K[22;4H3 cc[22;8H[K[23;4H1 aa[23;8H[K[8;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", "expr " . foldlevel("."))[?25l[8;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hhh$[?25l[16;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[16;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hii$[?25l[17;2H[34m[47m-[m[1C9 ii[17;8H[K[18;1H[34m[47m||[m[1Ca jj[19;4Hb kk[20;4Hlast[20;8H[K[21;4Hmanual 1 aa[22;4H-1[22;6H[K[23;4H3 cc[17;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[17;6H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hkk$[?25l[19;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", foldlevel("."))[?25l[19;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^last/+1,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 18 lines, 96 characters written[19;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfun Flvl[?25l[19;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test46.failed test.ok test.out X* viminfo
cp test46.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test46.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test46.in" 27 lines, 431 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for multi-line regexps with ":s". vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 8 lines, 292 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test if replacing a line break works with a back reference[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^1/,/^2/s/\n\(.\)/ \1/[?25l4 substitutions on 1 line[14;23r[14;1H[4M[1;24r[14;1H1 aa bb cc 2 dd ee[20;1H9d
6 e7
77f
xxxxx[24;1H[K[24;1H4 substitutions on 1 line[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test if inserting a line break works with a back reference[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^3/,/^4/s/\(.\)$/\r\1/[?25l3 substitutions on 3 lines[18;23r[18;1H[3L[1;24r[15;4H[K[16;1Hf[16;2H[K[17;1Hg[17;3H[K[18;1Hh
4 i
j[24;1H[K[24;1H3 substitutions on 3 lines[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test if replacing a line break with another line break works[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^5/,/^6/s/\(\_d\{3}\)/x\1x/[?25l3 substitutions on 2 lines[24;27H[K[1;23r[1;1H[2M[1;24r[19;4Hx8
8xb cx9
9xd
6 ex7
7x7f[24;1H[K[24;1H3 substitutions on 2 lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^1/,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 13 lines, 70 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test47.failed test.ok test.out X* viminfo
cp test47.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test47.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test47.in" 62 lines, 1351 characters[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
ddGpkkrXoxxx[34m^[[m:w! Xtest2
:file Nop
ggoyyy[34m^[[mjjjozzzz[34m^[[m
:vert diffsplit Xtest
:vert diffsplit Xtest2
:" jump to second window for a moment to have filler line appear at start of
:" first window
[34m^W^W[mgg[34m^W[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()
[34m^W^W[mgg:let two = winline()[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for vertical splits and filler lines in diff mode[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 52 lines, 1250 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:diffoff!
:windo :bw!
:enew
:put =range(4,10)
:1d _
:vnew
:put =range(1,10)
:1d _
:windo :diffthis
:wincmd h
:let w0=line('w0')
:enew
:put =w0
:.w >> test.out
:unlet! one two three w0
:qa!
ENDTEST

1 aa
2 bb
3 cc
4 dd
5 ee[17;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Disable the title to avoid xterm keeping the wrong one.[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset notitle noicon[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^1[?25l[19;1H[?12l[?25h[?25l[24;1H5 lines yanked[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;2Hlet w0=line('w0')
:enew[14;6H[K[15;2Hput =w0[15;9H[K[16;2H.w >> test.out
:unlet! one two three w0
:qa!
ENDTEST[20;1H[K[21;1H1 aa
2 bb
[7mtest47.in                                                                       [1;1H[?12l[?25h[?25l[m[24;1H5 more lines[2;1H1 aa[2;5H[K[3;1H2 bb[3;5H[K[4;1H3 cc[4;5H[K[5;1H4 dd[5;5H[K[6;1H5 ee[6;5H[K[12;11H[1m[7m[+][2;1H[?12l[?25h[1;1H[?25l[1;11r[m[11;1H
[1;24r[11;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw! Xtest[?25l"Xtest" [24;9H[K[24;9H[New File] 5 lines, 25 characters written[12;1H[1m[7mXtesta         [1;1H[?12l[?25h[?25l[1;11r[m[11;1H
[1;24r[11;1H[1m[34m~                                                                               [m[12;7H[1m[7m[+][m[24;1H[K[1;1H[?12l[?25h


[?25l
1 aa[5;5H[K[5;1H[?12l[?25h[4;1H[3;1H[?25lX[?12l[?25h[?25l[4;11r[4;1H[L[1;24r[4;1Hxxx[?12l[?25h[?25l[24;1H:[?12l[?25hw! Xtest2[?25l"Xtest2" [24;10H[K[24;10H[New File] 6 lines, 29 characters written[12;7H[1m[7m    [4;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hfile Nop[?25l"Nop" [Not edited] line 4 of 6 --66%-- col 3[12;1H[1m[7mNops   [4;3H[?12l[?25h[1;1H[?25l[2;11r[m[2;1H[L[1;24r[2;1Hyyy[12;5H[1m[7m[+][m[24;1H[K[2;3H[?12l[?25h
3 
X 
xx[?25l[6;11r[6;1H[L[1;24r[6;1Hzzzz[?12l[?25h
5 e[?25l[24;1H:[?12l[?25hvert diffsplit Xtest[?25l"Xtest" [24;9H[K[24;9H5 lines, 25 characters[1;1H[34m[47m  [m[44m1 aa                                  [m[7m|[m
[34m[47m  [m2 bb[34C[7m|[m
[34m[47m  [m[1m[34m[46m--------------------------------------[m[7m|[m
[34m[47m  [m3 cc[34C[7m|[m
[34m[47m  [m[1m[41m4[m[45m dd                                  [m[7m|[m
[34m[47m  [m[1m[34m[46m--------------------------------------[m[7m|[m
[34m[47m  [m[1m[34m[46m--------------------------------------[m[7m|[m
[34m[47m  [m5 ee[34C[7m|[9;41H|[10;41H|[11;41H|[m[9;1H[34m[47m  [m[1m[34m[46m--------------------------------------[m
[34m[47m  
  [m[10;3H[1m[34m~[11;3H~[m
[1m[7mXtest+   [m[1;42H[34m[47m  [m[1m[34m[46m-------------------------------------[m[2;42H[34m[47m  [m2 bb[3;42H[34m[47m  [m[44myyy                                  [m[4;42H[34m[47m  [m3 cc[5;42H[34m[47m  [m[1m[41mX[m[45m dd                                 [m[6;42H[34m[47m  [m[44mxxx                                  [m[7;42H[34m[47m  [m[44mzzzz                                 [m[8;42H[34m[47m  [m5 ee[9;42H[34m[47m  [m[44m1 aa                                 [m[10;42H[34m[47m  [11;42H  [m[10;44H[1m[34m~[11;44H~[m[12;42H[7mNop [+]                                [1;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hvert diffsplit Xtest2[?25l"Xtest2" [24;10H[K[24;10H6 lines, 29 characters[27m[m[H[2J[1;1H[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m
[34m[47m  [m2 bb[20C[7m|[m
[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m
[34m[47m  [m3 cc[20C[7m|[m
[34m[47m  [m[1m[41mX[m[45m dd                    [m[7m|[m
[34m[47m  [m[45mxxx                     [m[7m|[m
[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m
[34m[47m  [m5 ee[20C[7m|[m
[34m[47m  [m[44m1 aa                    [m[7m|[10;27H|[11;27H|[m[10;1H[34m[47m  
  [m[10;3H[1m[34m~                       [11;3H~                       [m
[1m[7mXtest2                     [m[1;28H[34m[47m  [m[44m1 aa                    [m[7m|[m[2;28H[34m[47m  [m2 bb[20C[7m|[m[3;28H[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m[4;28H[34m[47m  [m3 cc[20C[7m|[m[5;28H[34m[47m  [m[1m[41m4[m[45m dd                    [m[7m|[m[6;28H[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m[7;28H[34m[47m  [m[1m[34m[46m------------------------[m[7m|[m[8;28H[34m[47m  [m5 ee[20C[7m|[9;54H|[10;54H|[11;54H|[m[9;28H[34m[47m  [m[1m[34m[46m------------------------[m[10;28H[34m[47m  [11;28H  [m[10;30H[1m[34m~                       [11;30H~                       [m[12;28H[7mXtest                      [m[1;55H[34m[47m  [m[1m[34m[46m------------------------[m[2;55H[34m[47m  [m2 bb[3;55H[34m[47m  [m[44myyy                     [m[4;55H[34m[47m  [m3 cc[5;55H[34m[47m  [m[1m[41mX[m[45m dd                    [m[6;55H[34m[47m  [m[45mxxx                     [m[7;55H[34m[47m  [m[44mzzzz                    [m[8;55H[34m[47m  [m5 ee[9;55H[34m[47m  [m[44m1 aa                    [m[10;55H[34m[47m  [11;55H  [m[10;57H[1m[34m~                       [11;57H~                       [m[12;55H[7mNop [+]                   [m[13;1H:let w0=line('w0')
:enew
:put =w0
:.w >> test.out
:unlet! one two three w0
:qa!
ENDTEST

1 aa
2 bb
[7mtest47.in                                                                       [2;3H[?12l[?25h[?25l[24;1H[m:[?12l[?25h" jump to second window for a moment to have filler line appear at start of[?25l[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" first window[?25l[2;3H[?12l[?25h[?25l[12;1H[7mXtest2[m[1m[7m [m[7m                     [m[1m[7mXtest                      [1;30H[?12l[?25h[?25l[?12l[?25h[?25l[12;1HXtest2                     [m[7mXtest[m[1m[7m [m[7m                      [2;3H[?12l[?25h[?25l[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet one = winline()[?25l[2;3H[?12l[?25h[?25l[4;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet one = one . "-" . winline()[?25l[4;3H[?12l[?25h[?25l[5;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet one = one . "-" . winline()[?25l[5;3H[?12l[?25h[?25l[6;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet one = one . "-" . winline()[?25l[6;3H[?12l[?25h[?25l[8;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet one = one . "-" . winline()[?25l[8;3H[?12l[?25h[?25l[9;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet one = one . "-" . winline()[?25l[9;3H[?12l[?25h[?25l


[7mXtest2[m[1m[7m [m[7m                     [m[1m[7mXtest                      [8;30H[?12l[?25h[?25l[1;30H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet two = winline()[?25l[1;30H[?12l[?25h[?25l[2;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet two = two . "-" . winline()[?25l[2;30H[?12l[?25h[?25l[4;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet two = two . "-" . winline()[?25l[4;30H[?12l[?25h[?25l[5;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet two = two . "-" . winline()[?25l[5;30H[?12l[?25h[?25l[8;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet two = two . "-" . winline()[?25l[8;30H[?12l[?25h[?25l[12;28H[7mXtest[m[1m[7m [m[7m                      [m[1m[7mNop [+]                   [8;57H[?12l[?25h[?25l[2;57H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet three = winline()[?25l[2;57H[?12l[?25h[?25l[3;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[3;57H[?12l[?25h[?25l[4;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[4;57H[?12l[?25h[?25l[5;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[5;57H[?12l[?25h[?25l[6;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[6;57H[?12l[?25h[?25l[7;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[7;57H[?12l[?25h[?25l[8;57H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet three = three . "-" . winline()[?25l[8;57H[?12l[?25h[12;55H[7mNop [+][m[1m[7m [m[7m                   [m[23;1H[1m[7mtest47.in                                                                       [21;1H[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append("$", one)[?25l[23;11H[1m[7m[+][21;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append("$", two)[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append("$", three)[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$-2,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 3 lines, 36 characters written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test that diffing shows correct filler lines[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdiffoff![?25l[1;1H[1m[34m[46m--[m
2 bb  
3 cc                      
X dd  
xxx                       
5 ee                      
1 aa                      
[1m[34m~                         
~                         
~   
~   [m[1;28H1 aa                      [2;28H2 bb  [3;28H3 cc                      [4;28H4 dd  [5;28H5 ee                      [6;28H[1m[34m~                         [7;28H~                         [8;28H~                         [9;28H~                         [10;28H~   [11;28H~   [m[1;55H2 bb[1;59H[K[2;55Hyyy[2;59H[K[3;55H3 cc[3;59H[K[4;55HX dd[4;59H[K[5;55Hxxx[5;58H[K[6;55Hzzzz[6;59H[K[7;55H5 ee[7;59H[K[8;55H1 aa[8;59H[K[9;55H[1m[34m~                         [10;55H~   [11;55H~   [21;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwindo :bw![?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25henew[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hput =range(4,10)[?25l7 more lines[24;13H[K[2;1H4[2;2H[K[3;1H5[3;2H[K[4;1H6[4;2H[K[5;1H7[5;2H[K[6;1H8[6;2H[K[7;1H9[7;2H[K[8;1H10[8;3H[K[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1d _[?25l[1;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hvnew[?25l[1;1H [39C[7m|[2;41H|[3;41H|[4;41H|[5;41H|[6;41H|[7;41H|[8;41H|[9;41H|[10;41H|[11;41H|[12;41H|[13;41H|[14;41H|[15;41H|[16;41H|[17;41H|[18;41H|[19;41H|[20;41H|[21;41H|[22;41H|[m[2;1H[1m[34m~                                       
~                                       
~                                       
~                                       
~                                       
~                                       [m[23;1H[1m[7m[No Name]                                [m[1;42H4[2;42H5[3;42H6[4;42H7[5;42H8[6;42H9[7;42H10[8;42H[1m[34m~[9;42H~[10;42H~[11;42H~[12;42H~[13;42H~[14;42H~[15;42H~[16;42H~[17;42H~[18;42H~[19;42H~[20;42H~[21;42H~[22;42H~[m[23;42H[7m[No Name] [+]                          [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput =range(1,10)[?25l10 more lines[24;14H[K[2;1H1                                       
2                                       
3                                       
4                                       
5                                       
6                                       
7                                       
8                                       
9                                       
10                                      [23;11H[1m[7m[+][11;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1d _[?25l[1;1H1                                       
2                                       
3                                       
4                                       
5                                       
6                                       
7                                       
8                                       
9                                       
10                                      
[1m[34m~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       [m
                                        [1m[34m~                                       [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hwindo :diffthis[?25l[1;1H[34m[47m  [m[44m1                                     [m
[34m[47m  [m[44m2                                     [m
[34m[47m  [m[44m3                                     [m
[34m[47m  [m4
[34m[47m  [m5
[34m[47m  [m6
[34m[47m  [m7
[34m[47m  [m8
[34m[47m  [m9
[34m[47m- [m10
[34m[47m  
  
  
  
  
  
  
  
  
  
  
  [m[11;3H[1m[34m~[12;3H~[13;3H~[14;3H~[15;3H~[16;3H~[17;3H~[18;3H~[19;3H~[20;3H~[21;3H~[22;3H~[m
[7m[No Name] [+][m[1m[7m [m[7m                            [m[1;42H[34m[47m  [m[1m[34m[46m-------------------------------------[m[2;42H[34m[47m  [m[1m[34m[46m-------------------------------------[m[3;42H[34m[47m  [m[1m[34m[46m-------------------------------------[m[4;42H[34m[47m  [m4[5;42H[34m[47m  [m5[6;42H[34m[47m  [m6[7;42H[34m[47m  [m7[8;42H[34m[47m  [m8[8;45H[K[9;42H[34m[47m  [m9[9;45H[K[10;42H[34m[47m- [m10[10;46H[K[11;42H[34m[47m  [12;42H  [13;42H  [14;42H  [15;42H  [16;42H  [17;42H  [18;42H  [19;42H  [20;42H  [21;42H  [22;42H  [m[11;44H[1m[34m~[12;44H~[13;44H~[14;44H~[15;44H~[16;44H~[17;44H~[18;44H~[19;44H~[20;44H~[21;44H~[22;44H~[m[23;42H[1m[7m[No Name] [+]                          [4;44H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd h[?25l[23;1H[1m[7m[No Name] [+]                            [m[7m[No Name] [+][m[1m[7m [m[7m                          [1;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet w0=line('w0')[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25henew[?25l[1m[37m[41mE37: No write since last change (add ! to override)[1;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput =w0[?25l[2;3H[44m1[3;3H2[4;3H3                                     [m[5;3H4[6;3H5[7;3H6[8;3H7[9;3H8
[34m[47m [m[1C9 
[34m[47m-[m[1C10                                    [4;44H[1m[34m[46m-------------------------------------[m[5;44H4[6;44H5[7;44H6[8;44H7[9;44H8[10;42H[34m[47m [m[1C9[10;45H[K[11;42H[34m[47m-[m[1C10[11;46H[K[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >> test.out[?25l"test.out" [24;12H[K[24;12H1 line, 2 characters appended[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet! one two three w0[?25l[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test48.failed test.ok test.out X* viminfo
cp test48.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test48.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test48.in" 78 lines, 1542 characters[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
C[34m^N^[[m
:"
:"   Using "C" then then <CR> moves the last remaining character to the next
:"    line.  (Mary Ellen Foster)
j^/are
C[34m^M[mare belong to vim[34m^[[m
:"
:"   When past the end of a line that ends in a single character "b" skips
:"    that word.
^$15lbC7[34m^[[m
:"
:"   Make sure 'i' works[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HThis is a test of 'virtualedit'.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 57 lines, 1331 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set display=
:"
:"   Test for ^Y/^E due to bad w_virtcol value, reported by
:"   Roy <royl@netropolis.net>.
^O[34m^[[m3li[34m^E^[[m4li[34m^E^[[m4li[34m^E[m   <-- should show the name of a noted text editor[34m^[[m
^o[34m^[[m4li[34m^Y^[[m4li[34m^Y^[[m4li[34m^Y[m   <-- and its version number[34m^[[m-dd
:"
:" Test for yanking and pasting using the small delete register
gg/^foo
dewve"-p
:wq! test.out
ENDTEST
foo, bar
keyword keyw
all your base are belong to us
1 2 3 4 5 6
'i'
'C'
'a'
'A'
'D'
this is a test
this is a test[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noswf[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=all[?25l[13;1H[?12l[?25h[12;1H[?25l[24;1H61 fewer lines[1;23r[1;1H[12M[1;24r[12;1Hthis is a test
"r"
a[34m^V[mb[34m^M[msd
abcv6efi.him0kl


[1m[34m~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[24;1H61 fewer lines[1;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Insert "keyword keyw", ESC, C CTRL-N, shows "keyword ykeyword".[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    Repeating CTRL-N fixes it. (Mary Ellen Foster)[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hw[?25l[2;12H[?12l[?25h[?25l$[24;1H[32mScanning tags.[mThe only match[2;16H[24;1H[K[2;12Hword[?12l[?25h[3;15H[?25l[24;1H:[?12l[?25h"[?25l[3;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Using "C" then then <CR> moves the last remaining character to the next[?25l[3;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    line.  (Mary Ellen Foster)[?25l[3;15H[?12l[?25h[4;15H[?25l[24;1H[K[24;1H/[?12l[?25hare[?25l[31msearch hit BOTTOM, continuing at TOP[3;15H[?12l[?25h[?25l[m[15C$[3;15H[K[4;1Hare belong to vim
1 2 3 4 5 6
'i
'C
'a
'A
'D'[10;4H[K[13;1Hthis is a test
"r"[14;4H[K[15;2H[34m^V[mb[34m^M[msd[15;9H[K[16;1Habcv6efi.him0kl[18;1H[K[4;17H[?12l[?25h[5;17H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[5;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   When past the end of a line that ends in a single character "b" skips[?25l[5;17H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    that word.[?25l[5;17H[?12l[?25h[10C[15C[5;11H[?25l$7[?12l[?25h[6;11H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[6;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Make sure 'i' works[?25l[6;11H[?12l[?25h'i'   [?25l<-- should be 3 ' '[?12l[?25h[7;25H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[7;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Make sure 'C' works[?25l[7;25H[?12l[?25h'C'   [?25l$<-- should be 3 ' '[?12l[?25h[8;25H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[8;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Make sure 'a' works[?25l[8;25H[?12l[?25h'a'   [?25l <-- should be 4 ' '[?12l[?25h[9;26H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[9;26H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Make sure 'A' works[?25l[9;26H[?12l[?25h'A'   [?25l<-- should be 0 ' '[?12l[?25h[10;22H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[10;22H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Make sure 'D' works[?25l[10;22H[?12l[?25h'D'   [?25l<-- 'D' should be intact[?12l[?25h[11;30H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[11;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Test for yank bug reported by Mark Waggoner.[?25l[11;30H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=block[?25l[11;14H[?12l[?25h[8C[?25l[?12l[?25h[?25l[7ma[12;9Ha[13;9Ha[14;9H[?12l[?25h[?25l[m[11;9Ha[12;9Ha[13;9Ha[24;1Hblock of 4 lines yanked[11;9H[?12l[?25h[18;1H[?25l[24;1H3 more lines[24;13H[K[18;1Ha
a[19;2H[K[20;1Ha[20;2H[K[21;1H [21;2H[K[18;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test "r" beyond the end of the line[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ve=all[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^"r"[?25l[31msearch hit BOTTOM, continuing at TOP[14;1H[?12l[?25h[m"r"    [?25lx[?12l[?25h[?25lx<-- should be 'x'[?12l[?25h[15;25H[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[15;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Test to make sure 'x' can delete control characters[?25l[15;25H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset display=uhex[?25l[15;2H[34m<16>[mb[34m<0d>[msd[16C[?12l[?25h[?25l[34m<16>[mb[34m<0d>[msd[15;12H[K[15;1H[?12l[?25h[?25lb[34m<0d>[msd[15;8H[K[15;1H[?12l[?25h[?25l[34m<0d>[msd[15;7H[K[15;1H[?12l[?25h[?25lsd[15;3H[K[15;1H[?12l[?25h[?25ld[15;2H[K[15;1H[?12l[?25h[?25l[15;1H[K[15;1H[?12l[?25h[?25l[This line should contain only the text between the brackets.][?12l[?25h[16;62H[?25l[24;1H[K[24;1H:[?12l[?25hset display=[?25l[16;62H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[16;62H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Test for ^Y/^E due to bad w_virtcol value, reported by[?25l[16;62H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"   Roy <royl@netropolis.net>.[?25l[16;62H[?12l[?25h[?25l[16;23r[16;1H[L[1;24r[24;1H[K[16;1H[?12l[?25h   [?25lv[?12l[?25hv   [?25li[?12l[?25hi   [?25lm   <-- should show the name of a noted text editor[?12l[?25h[17;62H[?25l[18;23r[18;1H[L[1;24r[18;1H[?12l[?25h    [?25l6[?12l[?25h6   [?25l.[?12l[?25h.   [?25l0   <-- and its version number[?12l[?25h[17;1H[?25l[17;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [17;5H[?12l[?25h
[m    [?25l[24;1H:[?12l[?25h"[?25l[18;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for yanking and pasting using the small delete register[?25l[18;5H[?12l[?25h[1;1H[?25l[24;1H[K[24;1H/[?12l[?25h^foo[?25l[31msearch hit BOTTOM, continuing at TOP[1;1H[?12l[?25h[?25l[m, bar[1;6H[K[1;1H[?12l[?25h, [?25l[?12l[?25h[?25l[7mba[?12l[?25h[?25l[?12l[?25h[?25l[mfoo[?12l[?25h
keyw[?25l[24;1H[K[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 22 lines, 449 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test49.failed test.ok test.out X* viminfo
cp test49.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test49.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test49.in" 30 lines, 631 characters[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 or 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:)[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HThis is a test of the script language.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 21 lines, 401 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hse nocp nomore viminfo+=nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlang mess C[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso test49.vim[?25l[1m[37m[41mError detected while processing function G:[m
[33mline   16:[m
[1m[37m[41mE171: Missing :endif:     endwhile[m
*** Test   1: OK (34695)
   function F()
1      Xpath 1[37C" X: 1
2      let first = 1
3      XloopINIT 2 8
4      while 1
5[10CXloop 1[33C" X: 2      + 0 * 16
6[10Cif first
7[14CXloop 2[29C" X: 4      + 0 * 32
8[14Clet first = 0
9[14CXloopNEXT
10[13Cbreak
11[9Celse
12[13CXloop 4[29C" X: 0      + 0 * 64
13[13Creturn
14[9Cendif
15     endwhile
   endfunction[8;1H"/tmp/v6GOnk1/0"[9;1H[K[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[8;18H[noeol] 18L, 528C
15 substitutions on 15 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/0" [10;18H[K[10;18H15L, 476C written"test49.in" [10;13H[K[10;13H30L, 631C
   function G()
1      Xpath 256[35C" X: 256    + 0 * 2048
2      let first = 1
3      XloopINIT 512 8
4      while 1
5[10CXloop 1[33C" X: 512    + 0 * 4096
6[10Cif first
7[14CXloop 2[29C" X: 1024   + 0 * 8192
8[14Clet first = 0
9[14CXloopNEXT
10[13Cbreak
11[9Celse
12[13CXloop 4[29C" X: 0      + 0 * 16384
13[13Creturn
14[9Cendif
15[9Cif 1    " unmatched :if
16     endwhile
   endfunction[7;1H"/tmp/v6GOnk1/1"[8;1H[K[9;1H[K[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[7;18H[noeol] 19L, 588C
16 substitutions on 16 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/1" [9;18H[K[9;18H16L, 534C written"test49.in" [9;13H[K[9;13H30L, 631C
[1m[37m[41mError detected while processing /tmp/v6GOnk1/1:[m
[33mline   16:[m
[1m[37m[41mE171: Missing :endif:      endwhile[m
*** Test   2: OK (34695)
*** Test   3: OK (1384648195)
*** Test   4: OK (32883)
   function F()
1      if 1
2[10CXpath 1[33C" X: 1
3[10Clet loops = 3
4[10CXloopINIT 2 16
5[10Cwhile loops > 0[25C"    3:  2:     1:
6[14CXloop 1[29C" X: 2 + 2*16 + 0*16*16
7[14Cif (loops == 2)
8[18CXloop 2[25C" X:     4*16
9[18Creturn
10[17CXloop 4[25C" X:     0
11[13Cendif
12[13CXloop 8[29C" X: 16
13[13Clet loops = loops - 1
14[13CXloopNEXT
15[9Cendwhile
16[9CXpath 8192[30C" X: 0
17     else
18[9CXpath 16384[29C" X: 0
19     endif
   endfunction[4;1H"/tmp/v6GOnk1/2"[5;1H[K[6;1H[K[7;1H[K[8;1H[K[9;1H[K[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[4;18H[noeol] 22L, 784C
19 substitutions on 19 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/2" [6;18H[K[6;18H19L, 724C written"test49.in" [6;13H[K[6;13H30L, 631C
*** Test   5: OK (32883)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"/tmp/v6GOnk1/3" [7;18H[K[7;18H[New] 53L, 1582C written[7;18H[K[7;18H14L, 358C appended[7;18H[K[7;18H26L, 824C appended[7;18H[K[7;18H34L, 986C appended
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/4[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[8;1H[K[8;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/4" [8;18H[K[8;18H130L, 2431C appended[8;18H[K[8;18H131L, 2453C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/5[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[10;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'l[11;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/5"' -S /tmp/v6GOnk1[12;1H/4[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[10;1H"/tmp/v6GOnk1/5" [10;18H[K[11;1H[K[12;1H[K[10;18H21L, 130C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [10;13H[K[10;13H30L, 631C
*** Test   6: OK (603978947)
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline  976:[m
[1m[37m[41mE492: Not an editor command: ^Iasdf[m
[33mline  988:[m
[1m[37m[41mE492: Not an editor command: ^Iasdf[m
[33mline  996:[m
[1m[37m[41mE492: Not an editor command: asdf[m
[33mline  999:[m
[1m[37m[41mE492: Not an editor command: asdf | Xpath 32768^I^I^I^I" X: 0[m
*** Test   7: OK (90563)
[1m[37m[41mError detected while processing function F:[m
[33mline    5:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf[m
[33mline    7:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf | Xpath 8^I^I^I" X: 0[m
[33mline   19:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf[m
[33mline   21:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf | Xpath 2048^I^I^I" X: 0[m
[33mline   29:[m
[1m[37m[41mE121: Undefined variable: novar[m
[1m[37m[41mE15: Invalid expression: novar^I^I" returns (default return value 0)[m
[1m[37m[41mError detected while processing function G:[m
[33mline    5:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf^I^I" returns -1[m
[1m[37m[41mError detected while processing function H:[m
[33mline    5:[m
[1m[37m[41mE492: Not an editor command: ^I    asdf^I^I" returns -1[m
*** Test   8: OK (562493431)
[1m[37m[41mError detected while processing function F..G..H..I:[m
[33mline    2:[m
[1m[37m[41mE492: Not an editor command:     asdf^I^I" error[m
*** Test   9: OK (363)
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 1201:[m
[1m[37m[41mE15: Invalid expression: | strlen("\"") | Xpath 512^I^I" X: 0[m
[1m[37m[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 512^I^I" X: 0[m
[33mline 1211:[m
[1m[37m[41mE15: Invalid expression: | strlen("\"") | Xpath 8192^I^I" X: 0[m
[1m[37m[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 8192^I^I" X: 0[m
[33mline 1220:[m
[1m[37m[41mE15: Invalid expression: | strlen("\"") | Xpath 131072^I^I" X: 0[m
[1m[37m[41mE15: Invalid expression: 1 ||| strlen("\"") | Xpath 131072^I^I" X: 0[m
*** Test  10: OK (559615)
[33mline 1252:[m
[1m[37m[41mE492: Not an editor command:     asdf^I^I" error[m
*** Test  11: OK (2049)
1
[33mline 1330:[m
[1m[37m[41mE492: Not an editor command:     asdf^I^I" error[m
[33mline 1338:[m
[1m[37m[41mE492: Not an editor command:     asdf^I^I" error[m
*** Test  12: OK (352256)
[33mline 1357:[m
[1m[37m[41mE121: Undefined variable: asdf[m
[1m[37m[41mE15: Invalid expression: asdf[m
[33mline 1368:[m
[1m[37m[41mE121: Undefined variable: asdf[m
[1m[37m[41mE15: Invalid expression: asdf | Xpath 32 | endwhile | Xpath 64^I" X: 0[m
*** Test  13: OK (145)
[1m[37m[41mError detected while processing function F:[m
[33mline    8:[m
[1m[37m[41mE121: Undefined variable: g:boolvar[m
[1m[37m[41mE15: Invalid expression: g:boolvar^I" possibly undefined[m
*** Test  14: OK (42413)
[1m[37m[41mE121: Undefined variable: g:boolvar[m
[1m[37m[41mE15: Invalid expression: g:boolvar | Xloop 8 | else | Xloop 16 | endif    " X: [m
[23;80H[1m[37m[41m8[m[24;1H
*** Test  15: OK (42413)
[33mline    5:[m
[1m[37m[41mE583: multiple :else:     else^I^I[m
[1m[37m[41mError detected while processing function G:[m
[33mline    5:[m
[1m[37m[41mE584: :elseif after :else:     elseif 1^I^I" aborts function[m
[1m[37m[41mError detected while processing function H:[m
[33mline    7:[m
[1m[37m[41mE583: multiple :else:     else^I^I[m
[1m[37m[41mError detected while processing function I:[m
[33mline    7:[m
[1m[37m[41mE584: :elseif after :else:     elseif 1^I^I" aborts function[m
*** Test  16: OK (8722)
[1m[37m[41mError detected while processing function F:[m
[33mline   18:[m
[1m[37m[41mE171: Missing :endif:     endwhile^I[m
[1m[37m[41mE171: Missing :endif:     endwhile^I[m
[33mline   34:[m
[1m[37m[41mE171: Missing :endif:     endwhile^I[m
[1m[37m[41mE171: Missing :endif:     endwhile^I[m
[1m[37m[41mE171: Missing :endif:     endwhile^I[m
[33mline   47:[m
[1m[37m[41mE580: :endif without :if: ^Iendif^I[m
[1m[37m[41mE580: :endif without :if: ^Iendif^I[m
[1m[37m[41mE580: :endif without :if: ^Iendif^I[m
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 1626:[m
[1m[37m[41mE171: Missing :endif: endwhile [m
*** Test  17: OK (285127993)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/6[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/6" [24;18H[K[24;18H16L, 304C appended[24;18H[K[24;18H17L, 326C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/7[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/7"' -c 'breakad
[23;80Hd[24;2Hfile 8 /tmp/v6GOnk1/6' -S /tmp/v6GOnk1/6[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/7" [22;18H[K[23;2H[K[24;2H[K[22;18H3L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/8[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/8" [23;18H[K[23;18H6L, 127C appended[23;18H[K[23;18H7L, 149C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/9[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/9"' -c 'breakad
[23;80Hd[24;2Hfile 4 /tmp/v6GOnk1/8' -S /tmp/v6GOnk1/8[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/9" [22;18H[K[23;2H[K[24;2H[K[22;18H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/10[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/10" [23;19H[K[23;19H21L, 486C appended[23;19H[K[23;19H22L, 508C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/11[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/11"' -c 'breaka
[23;80Hd[24;1Hd func 7 F' -S /tmp/v6GOnk1/10[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/11" [22;19H[K[23;2H[K[24;1H[K[22;19H3L, 18C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/12[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/12" [23;19H[K[23;19H13L, 364C appended[23;19H[K[23;19H14L, 386C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/13[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/13"' -c 'breaka
[23;80Hd[24;1Hd func 3 G' -S /tmp/v6GOnk1/12[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/13" [22;19H[K[23;2H[K[24;1H[K[22;19H1L, 9C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  18: OK (67224583)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/14[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/14" [24;19H[K[24;19H12L, 201C appended[24;19H[K[24;19H13L, 223C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/15[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/15"' -S /tmp/v6GOn
[23;80Hk[24;1H1/14[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/15" [22;19H[K[23;1H[K[24;1H[K[22;19H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/16[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/16" [23;19H[K[23;19H12L, 205C appended[23;19H[K[23;19H13L, 227C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/17[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/17"' -S /tmp/v6GOn
[23;80Hk[24;1H1/16[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/17" [22;19H[K[23;1H[K[24;1H[K[22;19H2L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/18[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/18" [23;19H[K[23;19H6L, 122C appended[23;19H[K[23;19H7L, 144C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/19[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/19"' -S /tmp/v6GOn
[23;80Hk[24;1H1/18[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/19" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/20[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/20" [23;19H[K[23;19H8L, 176C appended[23;19H[K[23;19H9L, 198C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/21[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/21"' -S /tmp/v6GOn
[23;80Hk[24;1H1/20[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/21" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/22[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/22" [23;19H[K[23;19H10L, 215C appended[23;19H[K[23;19H11L, 237C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/23[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/23"' -S /tmp/v6GOn
[23;80Hk[24;1H1/22[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/23" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/24[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/24" [23;19H[K[23;19H7L, 149C appended[23;19H[K[23;19H8L, 171C[23;19H[K[23;19H8L, 170C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/25[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/25"' -S /tmp/v6GOn
[23;80Hk[24;1H1/24[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/25" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 9C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  19: OK (69275973)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/26[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/26" [24;19H[K[24;19H9L, 135C appended[24;19H[K[24;19H10L, 157C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/27[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/27"' -S /tmp/v6GOn
[23;80Hk[24;1H1/26[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/27" [22;19H[K[23;1H[K[24;1H[K[22;19H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/28[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/28" [23;19H[K[23;19H10L, 155C appended[23;19H[K[23;19H11L, 177C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/29[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/29"' -S /tmp/v6GOn
[23;80Hk[24;1H1/28[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/29" [22;19H[K[23;1H[K[24;1H[K[22;19H3L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/30[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/30" [23;19H[K[23;19H12L, 204C appended[23;19H[K[23;19H13L, 226C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/31[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/31"' -S /tmp/v6GOn
[23;80Hk[24;1H1/30[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/31" [22;19H[K[23;1H[K[24;1H[K[22;19H4L, 18C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/32[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/32" [23;19H[K[23;19H12L, 214C appended[23;19H[K[23;19H13L, 236C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/33[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/33"' -S /tmp/v6GOn
[23;80Hk[24;1H1/32[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/33" [22;19H[K[23;1H[K[24;1H[K[22;19H4L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/34[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/34" [23;19H[K[23;19H12L, 211C appended[23;19H[K[23;19H13L, 233C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/35[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/35"' -S /tmp/v6GOn
[23;80Hk[24;1H1/34[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/35" [22;19H[K[23;1H[K[24;1H[K[22;19H3L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/36[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/36" [23;19H[K[23;19H14L, 263C appended[23;19H[K[23;19H15L, 285C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/37[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/37"' -S /tmp/v6GOn
[23;80Hk[24;1H1/36[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/37" [22;19H[K[23;1H[K[24;1H[K[22;19H4L, 34C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/38[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/38" [23;19H[K[23;19H14L, 277C appended[23;19H[K[23;19H15L, 299C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/39[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/39"' -S /tmp/v6GOn
[23;80Hk[24;1H1/38[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/39" [22;19H[K[23;1H[K[24;1H[K[22;19H4L, 40C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  20: OK (1874575085)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/40[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/40" [24;19H[K[24;19H58L, 1022C appended[24;19H[K[24;19H59L, 1044C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/41[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/41"' -S /tmp/v6GOn
[23;80Hk[24;1H1/40[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/41" [22;19H[K[23;1H[K[24;1H[K[22;19H9L, 56C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  21: OK (147932225)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/42[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/42" [24;19H[K[24;19H23L, 418C appended[24;19H[K[24;19H24L, 440C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/43[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/43"' -S /tmp/v6GOn
[23;80Hk[24;1H1/42[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/43" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/44[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/44" [23;19H[K[23;19H23L, 437C appended[23;19H[K[23;19H24L, 459C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/45[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/45"' -c 'breaka
[23;80Hd[24;1Hd func 2 Interrupt' -S /tmp/v6GOnk1/44[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/45" [22;19H[K[23;2H[K[24;1H[K[22;19H1L, 3C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/46[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/46" [23;19H[K[23;19H21L, 386C appended[23;19H[K[23;19H22L, 408C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/47[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/47"' -S /tmp/v6GOn
[23;80Hk[24;1H1/46[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/47" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 5C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  22: OK (4161)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/48[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/48" [24;19H[K[24;19H25L, 432C appended[24;19H[K[24;19H26L, 454C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/49[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/49"' -S /tmp/v6GOn
[23;80Hk[24;1H1/48[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/49" [22;19H[K[23;1H[K[24;1H[K[22;19H3L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  23: OK (49)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/50[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/50" [24;19H[K[24;19H16L, 392C appended[24;19H[K[24;19H17L, 414C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/51[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/51"' -S /tmp/v6GOn
[23;80Hk[24;1H1/50[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/51" [22;19H[K[23;1H[K[24;1H[K[22;19H3L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  24: OK (41)
*** Test  25: OK (260177811)
*** Test  26: OK (1681500476)
*** Test  27: OK (1996459)
   function F()
1      try
2[10CXpath 1[33C" X: 1
3[10Ctry
4[14CXpath 2[29C" X: 2
5[14Creturn
6[14CXpath 4[29C" X: 0
7[10Cfinally
8[14CXpath 8[29C" X: 8
9[10Cendtry
10[9CXpath 16[32C" X: 0
11     finally
12[9CXpath 32[32C" X: 32
13     endtry
14     Xpath 64[36C" X: 0
   endfunction[9;1H"/tmp/v6GOnk1/52"[10;1H[K[11;1H[K[12;1H[K[13;1H[K[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[9;19H[noeol] 17L, 552C
14 substitutions on 14 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/52" [11;20H[K[11;19H14L, 502C written"test49.in" [11;13H[K[11;13H30L, 631C
   function G()
1      try
2[10CXpath 128[31C" X: 128
3[10Creturn
4[10CXpath 256[31C" X: 0
5      finally
6[10CXpath 512[31C" X: 512
7[10Ccall F()
8[10CXpath 1024[30C" X: 1024
9      endtry
10     Xpath 2048[34C" X: 0
   endfunction[12;1H"/tmp/v6GOnk1/53"[13;1H[K[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;4H[K[12;19H[noeol] 13L, 406C
10 substitutions on 10 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/53" [14;20H[K[14;19H10L, 378C written"test49.in" [14;13H[K[14;13H30L, 631C
   function H()
1      try
2[10CXpath 4096[30C" X: 4096
3[10Ccall G()
4[10CXpath 8192[30C" X: 8192
5      finally
6[10CXpath 16384[29C" X: 16384
7[10Creturn
8[10CXpath 32768[29C" X: 0
9      endtry
10     Xpath 65536[33C" X: 0
   endfunction[13;1H"/tmp/v6GOnk1/54"[14;1H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[13;19H[noeol] 13L, 409C
10 substitutions on 10 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/54" [15;20H[K[15;19H10L, 381C written"test49.in" [15;13H[K[15;13H30L, 631C
*** Test  28: OK (1996459)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/55[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[17;1H[K[17;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/55" [17;19H[K[17;19H39L, 721C appended[17;19H[K[17;19H40L, 743C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/56[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[19;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'l[20;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/56"' -S /tmp/v6GOnk[21;1H1/55[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[19;1H"/tmp/v6GOnk1/56" [19;19H[K[20;1H[K[21;1H[K[19;19H6L, 21C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [19;13H[K[19;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/57[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[20;1H[K[20;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/57" [20;19H[K[20;19H23L, 509C appended[20;19H[K[20;19H24L, 531C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/58[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c 'l[23;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/58"' -S /tmp/v6GOnk[24;1H1/57[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/58" [22;19H[K[23;1H[K[24;1H[K[22;19H4L, 34C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  29: OK (170428555)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/59[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/59" [24;19H[K[24;19H60L, 1101C appended[24;19H[K[24;19H61L, 1123C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/60[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nv
[23;80Hi[24;1Hminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/60"' -
[23;80Hc[24;2H'breakadd func 3 F' -c 'breakadd file 19 /tmp/v6GOnk1/59' -c 'breakadd file 31
/tmp/v6GOnk1/59' -S /tmp/v6GOnk1/59[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[21;1H"/tmp/v6GOnk1/60" [21;19H[K[22;1H[K[23;2H[K[24;1H[K[21;19H16L, 89C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [21;13H[K[21;13H30L, 631C
*** Test  30: OK (190905173)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/61[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/61" [23;19H[K[23;19H60L, 1122C appended[23;19H[K[23;19H61L, 1144C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/62[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/62"' -S /tmp/v6GOn
[23;80Hk[24;1H1/61[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/62" [22;19H[K[23;1H[K[24;1H[K[22;19H16L, 89C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  31: OK (190905173)
*** Test  32: OK (354833067)
*** Test  33: OK (1216907538)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/63[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/63" [24;19H[K[24;19H63L, 1288C appended[24;19H[K[24;19H64L, 1310C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/64[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi
[23;80Hm[24;1Hinfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOn
[23;80Hk[24;1H1/64"' -c 'breakadd func 16 C' -S /tmp/v6GOnk1/63[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/64" [22;19H[K[23;1H[K[24;1H[K[22;19H17L, 127C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  34: OK (2146584868)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/65[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/65" [24;19H[K[24;19H63L, 1285C appended[24;19H[K[24;19H64L, 1307C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/66[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi
[23;80Hm[24;1Hinfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOn
[23;80Hk[24;1H1/66"' -c 'breakadd func 16 B' -S /tmp/v6GOnk1/65[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/66" [22;19H[K[23;1H[K[24;1H[K[22;19H17L, 127C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  35: OK (2146584868)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/67[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/67" [24;19H[K[24;19H66L, 1430C appended[24;19H[K[24;19H67L, 1452C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/68[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin
[23;80Hf[24;1Ho+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/
[23;80H6[24;1H8"' -c 'breakadd func 16 R' -S /tmp/v6GOnk1/67[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/68" [22;19H[K[23;1H[K[24;1H[K[22;19H9L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  36: OK (1071644672)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/69[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/69" [24;19H[K[24;19H73L, 1488C appended[24;19H[K[24;19H74L, 1510C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/70[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/70"' -c 'breakadd
[23;80Hf[24;1Hunc 16 F' -S /tmp/v6GOnk1/69[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/70" [22;19H[K[23;1H[K[24;1H[K[22;19H9L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  37: OK (1071644672)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/71[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/71" [24;19H[K[24;19H82L, 1519C appended[24;19H[K[24;19H83L, 1541C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/72[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi
[23;80Hm[24;1Hinfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOn
[23;80Hk[24;1H1/72"' -c 'breakadd func 16 E' -S /tmp/v6GOnk1/71[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/72" [22;19H[K[23;1H[K[24;1H[K[22;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  38: OK (357908480)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/73[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/73" [24;19H[K[24;19H83L, 1538C appended[24;19H[K[24;19H84L, 1560C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/74[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -
[23;80Hc[24;2H'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVi
[23;80Hm[24;1HResult = "/tmp/v6GOnk1/74"' -c 'breakadd func 16 I' -c 'breakadd func 22 I' -S
[23;80H/[24;1Htmp/v6GOnk1/73[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[21;1H"/tmp/v6GOnk1/74" [21;19H[K[22;2H[K[23;1H[K[24;1H[K[21;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [21;13H[K[21;13H30L, 631C
*** Test  39: OK (357908480)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/75[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/75" [23;19H[K[23;19H82L, 1519C appended[23;19H[K[23;19H83L, 1541C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/76[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vi
[23;80Hm[24;1Hinfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOn
[23;80Hk[24;1H1/76"' -c 'breakadd func 16 T' -S /tmp/v6GOnk1/75[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/76" [22;19H[K[23;1H[K[24;1H[K[22;19H8L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** 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
2[10CXpath 1[33C" X: 1
3[10Cthrow "arrgh"
4[10CXpath 2[33C" X: 0
5      catch /arrgh/
6[10CXpath 4[33C" X: 4
7      endtry
8      Xpath 8[37C" X: 8
   endfunction[15;1H"/tmp/v6GOnk1/77"[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[15;19H[noeol] 11L, 334C
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/77" [17;20H[K[17;19H8L, 295C written"test49.in" [17;13H[K[17;13H30L, 631C
   function T1()
1      XloopNEXT
2      try
3[10CXloop 1[33C" X: 16 + 16*16
4[10Cthrow "arrgh"
5[10CXloop 2[33C" X: 0
6      finally
7[10CXloop 4[33C" X: 64 + 64*16
8      endtry
9      Xloop 8[37C" X: 0
   endfunction[14;1H"/tmp/v6GOnk1/78"[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[14;19H[noeol] 12L, 364C
9 substitutions on 9 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/78" [16;20H[K[16;19H9L, 323C written"test49.in" [16;13H[K[16;13H30L, 631C
   function T2()
1      try
2[10CXpath 4096[30C" X: 4096
3[10Ccall T1()
4[10CXpath 8192[30C" X: 0
5      finally
6[10CXpath 16384[29C" X: 16384
7      endtry
8      Xpath 32768[33C" X: 0
   endfunction[15;1H"/tmp/v6GOnk1/79"[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[15;19H[noeol] 11L, 332C
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/79" [17;20H[K[17;19H8L, 305C written"test49.in" [17;13H[K[17;13H30L, 631C
*** Test  50: OK (363550045)
*** Test  51: OK (40744667)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/81[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[20;1H[K[20;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/81" [20;19H[K[20;19H2L, 41C appended[20;19H[K[20;19H3L, 63C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/82[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/tm[23;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/82"' -S /tmp/v6GOnk1/81[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/82" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H8L, 182C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/83[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/83" [23;19H[K[23;19H7L, 115C appended[23;19H[K[23;19H8L, 137C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/84[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/84"' -S /tmp/v6GOnk1/83[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/84" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H8L, 181C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/85[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/85" [23;19H[K[23;19H12L, 180C appended[23;19H[K[23;19H13L, 202C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/86[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/86"' -S /tmp/v6GOnk1/85[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/86" [22;19H[K[23;1H[K[24;1H[K[22;19H2L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H10L, 209C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/87[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/87" [23;19H[K[23;19H8L, 139C appended[23;19H[K[23;19H9L, 161C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/88[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/88"' -S /tmp/v6GOnk1/87[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/88" [22;19H[K[23;1H[K[24;1H[K[22;19H2L, 11C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H10L, 217C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/89[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/89" [23;19H[K[23;19H5L, 87C appended[23;19H[K[23;19H6L, 109C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/90[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir!
[23;80H>[24;1H/tmp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin =
1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/90"' -c 'breakadd file 4 /tmp/v6GOnk1
[23;80H/[24;1H89' -S /tmp/v6GOnk1/89[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[21;1H"/tmp/v6GOnk1/90" [21;19H[K[22;1H[K[23;1H[K[24;1H[K[21;19H1L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [21;13H[K[21;13H30L, 631C"/tmp/v6GOnk1/80" [21;19H[K[21;19H[noeol] 9L, 202C"test49.in" [21;13H[K[21;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/91[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H[K[22;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/91" [22;19H[K[22;19H7L, 189C appended[22;19H[K[22;19H8L, 211C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/92[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/92"' -S /tmp/v6GOnk1/91[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/92" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H9L, 252C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/93[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/93" [23;19H[K[23;19H7L, 199C appended[23;19H[K[23;19H8L, 221C[23;19H[K[23;19H8L, 220C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/94[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/80' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/94"' -S /tmp/v6GOnk1/93[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/94" [22;19H[K[23;1H[K[24;1H[K[22;19H1L, 10C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/80" [22;19H[K[22;19H9L, 214C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  52: OK (1247112011)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/96[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/96" [24;19H[K[24;19H1L, 10C appended[24;19H[K[24;19H2L, 32C[24;19H[K[24;19H2L, 31C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/97[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/97"' -S /tmp/v6GOnk1/96[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/97" [22;19H[K[23;1H[K[24;1H[K[22;19H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 154C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/98[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/98" [23;19H[K[23;19H3L, 39C appended[23;19H[K[23;19H4L, 61C
3 substitutions on 3 lines"/tmp/v6GOnk1/98" [24;20H[K[24;19H4L, 58C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/99[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/99"' -S /tmp/v6GOnk1/98[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/99" [22;19H[K[23;1H[K[24;1H[K[22;19H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 158C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/100[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/100" [23;20H[K[23;20H4L, 45C appended[23;20H[K[23;20H5L, 67C
4 substitutions on 4 lines"/tmp/v6GOnk1/100"[24;20H[K[24;20H5L, 63C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/101[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/101"' -S /tmp/v6GOnk1/100[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/101" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 159C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/102[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/102" [23;20H[K[23;20H3L, 33C appended[23;20H[K[23;20H4L, 55C
3 substitutions on 3 lines"/tmp/v6GOnk1/102"[24;20H[K[24;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/103[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/103"' -S /tmp/v6GOnk1/102[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/103" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 159C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/104[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/104" [23;20H[K[23;20H5L, 65C appended[23;20H[K[23;20H6L, 87C
5 substitutions on 5 lines"/tmp/v6GOnk1/104"[24;20H[K[24;20H6L, 82C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/105[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/105"' -S /tmp/v6GOnk1/104[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/105" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 159C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/106[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/106" [23;20H[K[23;20H1L, 9C appended[23;20H[K[23;20H2L, 31C[23;20H[K[23;20H2L, 30C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/107[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/107"' -S /tmp/v6GOnk1/106[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/107" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 153C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/108[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/108" [23;20H[K[23;20H3L, 38C appended[23;20H[K[23;20H4L, 60C
3 substitutions on 3 lines"/tmp/v6GOnk1/108"[24;20H[K[24;20H4L, 57C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/109[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/109"' -S /tmp/v6GOnk1/108[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/109" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 157C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/110[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/110" [23;20H[K[23;20H4L, 44C appended[23;20H[K[23;20H5L, 66C
4 substitutions on 4 lines"/tmp/v6GOnk1/110"[24;20H[K[24;20H5L, 62C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/111[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/111"' -S /tmp/v6GOnk1/110[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/111" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 157C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/112[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/112" [23;20H[K[23;20H3L, 32C appended[23;20H[K[23;20H4L, 54C
3 substitutions on 3 lines"/tmp/v6GOnk1/112"[24;20H[K[24;20H4L, 51C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/113[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/113"' -S /tmp/v6GOnk1/112[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/113" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 157C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/114[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/114" [23;20H[K[23;20H5L, 64C appended[23;20H[K[23;20H6L, 86C
5 substitutions on 5 lines"/tmp/v6GOnk1/114"[24;20H[K[24;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/115[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/115"' -S /tmp/v6GOnk1/114[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/115" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 157C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/116[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/116" [23;20H[K[23;20H1L, 11C appended[23;20H[K[23;20H2L, 33C[23;20H[K[23;20H2L, 32C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/117[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/117"' -S /tmp/v6GOnk1/116[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/117" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 157C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/118[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/118" [23;20H[K[23;20H3L, 40C appended[23;20H[K[23;20H4L, 62C
3 substitutions on 3 lines"/tmp/v6GOnk1/118"[24;20H[K[24;20H4L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/119[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/119"' -S /tmp/v6GOnk1/118[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/119" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 161C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/120[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/120" [23;20H[K[23;20H4L, 46C appended[23;20H[K[23;20H5L, 68C
4 substitutions on 4 lines"/tmp/v6GOnk1/120"[24;20H[K[24;20H5L, 64C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/121[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/121"' -S /tmp/v6GOnk1/120[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/121" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 161C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/122[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/122" [23;20H[K[23;20H3L, 34C appended[23;20H[K[23;20H4L, 56C
3 substitutions on 3 lines"/tmp/v6GOnk1/122"[24;20H[K[24;20H4L, 53C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/123[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/123"' -S /tmp/v6GOnk1/122[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/123" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 161C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/124[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/124" [23;20H[K[23;20H5L, 66C appended[23;20H[K[23;20H6L, 88C
5 substitutions on 5 lines"/tmp/v6GOnk1/124"[24;20H[K[24;20H6L, 83C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/125[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/125"' -S /tmp/v6GOnk1/124[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/125" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 161C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/126[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/126" [23;20H[K[23;20H4L, 37C appended[23;20H[K[23;20H5L, 59C
4 substitutions on 4 lines"/tmp/v6GOnk1/126"[24;20H[K[24;20H5L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/127[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/127"' -S /tmp/v6GOnk1/126[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/127" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 150C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/128[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/128" [23;20H[K[23;20H4L, 41C appended[23;20H[K[23;20H5L, 63C
4 substitutions on 4 lines"/tmp/v6GOnk1/128"[24;20H[K[24;20H5L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/129[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/95' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1'
-c 'let ExtraVimResult = "/tmp/v6GOnk1/129"' -S /tmp/v6GOnk1/128[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/129" [22;21H[K[23;1H[K[24;1H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/95" [22;19H[K[22;19H6L, 159C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  53: OK (131071)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/131[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/131" [24;20H[K[24;20H1L, 13C appended[24;20H[K[24;20H2L, 35C[24;20H[K[24;20H2L, 34C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/132[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/132"' -S /tmp/v6GOnk1/131[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/132" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 164C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/133[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/133" [23;20H[K[23;20H3L, 36C appended[23;20H[K[23;20H4L, 58C
3 substitutions on 3 lines"/tmp/v6GOnk1/133"[24;20H[K[24;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/134[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/134"' -S /tmp/v6GOnk1/133[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/134" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 168C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/135[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/135" [23;20H[K[23;20H3L, 38C appended[23;20H[K[23;20H4L, 60C
3 substitutions on 3 lines"/tmp/v6GOnk1/135"[24;20H[K[24;20H4L, 57C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/136[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/136"' -S /tmp/v6GOnk1/135[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/136" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 154C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/137[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/137" [23;20H[K[23;20H4L, 48C appended[23;20H[K[23;20H5L, 70C
4 substitutions on 4 lines"/tmp/v6GOnk1/137"[24;20H[K[24;20H5L, 66C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/138[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/138"' -S /tmp/v6GOnk1/137[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/138" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 168C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/139[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/139" [23;20H[K[23;20H4L, 53C appended[23;20H[K[23;20H5L, 75C
4 substitutions on 4 lines"/tmp/v6GOnk1/139"[24;20H[K[24;20H5L, 71C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/140[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/140"' -S /tmp/v6GOnk1/139[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/140" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 155C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/141[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/141" [23;20H[K[23;20H5L, 62C appended[23;20H[K[23;20H6L, 84C
5 substitutions on 5 lines"/tmp/v6GOnk1/141"[24;20H[K[24;20H6L, 79C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/142[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/142"' -S /tmp/v6GOnk1/141[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/142" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 155C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/143[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/143" [23;20H[K[23;20H5L, 64C appended[23;20H[K[23;20H6L, 86C
5 substitutions on 5 lines"/tmp/v6GOnk1/143"[24;20H[K[24;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/144[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/144"' -S /tmp/v6GOnk1/143[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/144" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 154C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/145[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/145" [23;20H[K[23;20H3L, 36C appended[23;20H[K[23;20H4L, 58C
3 substitutions on 3 lines"/tmp/v6GOnk1/145"[24;20H[K[24;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/146[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/146"' -S /tmp/v6GOnk1/145[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/146" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 168C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/147[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/147" [23;20H[K[23;20H5L, 67C appended[23;20H[K[23;20H6L, 89C
5 substitutions on 5 lines"/tmp/v6GOnk1/147"[24;20H[K[24;20H6L, 84C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/148[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/148"' -S /tmp/v6GOnk1/147[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/148" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 167C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/149[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/149" [23;20H[K[23;20H5L, 68C appended[23;20H[K[23;20H6L, 90C
5 substitutions on 5 lines"/tmp/v6GOnk1/149"[24;20H[K[24;20H6L, 85C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/150[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/150"' -S /tmp/v6GOnk1/149[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/150" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 168C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/151[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/151" [23;20H[K[23;20H7L, 95C appended[23;20H[K[23;20H8L, 117C
7 substitutions on 7 lines"/tmp/v6GOnk1/151"[24;20H[K[24;20H8L, 110C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/152[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/130' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/152"' -S /tmp/v6GOnk1/151[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/152" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/130" [22;20H[K[22;20H6L, 167C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  54: OK (2047)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/154[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/154" [24;20H[K[24;20H1L, 13C appended[24;20H[K[24;20H2L, 35C[24;20H[K[24;20H2L, 34C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/155[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/155"' -S /tmp/v6GOnk1/154[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/155" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 172C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/156[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/156" [23;20H[K[23;20H3L, 36C appended[23;20H[K[23;20H4L, 58C
3 substitutions on 3 lines"/tmp/v6GOnk1/156"[24;20H[K[24;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/157[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/157"' -S /tmp/v6GOnk1/156[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/157" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 176C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/158[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/158" [23;20H[K[23;20H4L, 48C appended[23;20H[K[23;20H5L, 70C
4 substitutions on 4 lines"/tmp/v6GOnk1/158"[24;20H[K[24;20H5L, 66C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/159[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/159"' -S /tmp/v6GOnk1/158[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/159" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 176C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/160[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/160" [23;20H[K[23;20H3L, 36C appended[23;20H[K[23;20H4L, 58C
3 substitutions on 3 lines"/tmp/v6GOnk1/160"[24;20H[K[24;20H4L, 55C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/161[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/161"' -S /tmp/v6GOnk1/160[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/161" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 176C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/162[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/162" [23;20H[K[23;20H5L, 68C appended[23;20H[K[23;20H6L, 90C
5 substitutions on 5 lines"/tmp/v6GOnk1/162"[24;20H[K[24;20H6L, 85C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/163[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/163"' -S /tmp/v6GOnk1/162[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/163" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 176C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/164[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/164" [23;20H[K[23;20H1L, 10C appended[23;20H[K[23;20H2L, 32C[23;20H[K[23;20H2L, 31C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/165[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/165"' -S /tmp/v6GOnk1/164[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/165" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 166C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/166[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/166" [23;20H[K[23;20H3L, 33C appended[23;20H[K[23;20H4L, 55C
3 substitutions on 3 lines"/tmp/v6GOnk1/166"[24;20H[K[24;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/167[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/167"' -S /tmp/v6GOnk1/166[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/167" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 170C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/168[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/168" [23;20H[K[23;20H4L, 45C appended[23;20H[K[23;20H5L, 67C
4 substitutions on 4 lines"/tmp/v6GOnk1/168"[24;20H[K[24;20H5L, 63C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/169[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/169"' -S /tmp/v6GOnk1/168[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/169" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 170C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/170[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/170" [23;20H[K[23;20H3L, 33C appended[23;20H[K[23;20H4L, 55C
3 substitutions on 3 lines"/tmp/v6GOnk1/170"[24;20H[K[24;20H4L, 52C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/171[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/171"' -S /tmp/v6GOnk1/170[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/171" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 170C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/172[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/172" [23;20H[K[23;20H5L, 65C appended[23;20H[K[23;20H6L, 87C
5 substitutions on 5 lines"/tmp/v6GOnk1/172"[24;20H[K[24;20H6L, 82C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/173[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/153' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/173"' -S /tmp/v6GOnk1/172[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/173" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/153" [22;20H[K[22;20H6L, 170C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  55: OK (1023)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/175[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/175" [24;20H[K[24;20H1L, 11C appended[24;20H[K[24;20H2L, 33C[24;20H[K[24;20H2L, 32C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/176[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/176"' -S /tmp/v6GOnk1/175[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/176" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 158C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/177[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/177" [23;20H[K[23;20H3L, 34C appended[23;20H[K[23;20H4L, 56C
3 substitutions on 3 lines"/tmp/v6GOnk1/177"[24;20H[K[24;20H4L, 53C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/178[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/178"' -S /tmp/v6GOnk1/177[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/178" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 162C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/179[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/179" [23;20H[K[23;20H3L, 40C appended[23;20H[K[23;20H4L, 62C
3 substitutions on 3 lines"/tmp/v6GOnk1/179"[24;20H[K[24;20H4L, 59C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/180[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/180"' -S /tmp/v6GOnk1/179[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/180" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 162C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/181[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/181" [23;20H[K[23;20H3L, 32C appended[23;20H[K[23;20H4L, 54C
3 substitutions on 3 lines"/tmp/v6GOnk1/181"[24;20H[K[24;20H4L, 51C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/182[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/182"' -S /tmp/v6GOnk1/181[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/182" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 152C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/183[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/183" [23;20H[K[23;20H3L, 35C appended[23;20H[K[23;20H4L, 57C
3 substitutions on 3 lines"/tmp/v6GOnk1/183"[24;20H[K[24;20H4L, 54C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/184[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/184"' -S /tmp/v6GOnk1/183[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/184" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 155C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/185[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/185" [23;20H[K[23;20H4L, 44C appended[23;20H[K[23;20H5L, 66C
4 substitutions on 4 lines"/tmp/v6GOnk1/185"[24;20H[K[24;20H5L, 62C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/186[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/186"' -S /tmp/v6GOnk1/185[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/186" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 152C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/187[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/187" [23;20H[K[23;20H4L, 47C appended[23;20H[K[23;20H5L, 69C
4 substitutions on 4 lines"/tmp/v6GOnk1/187"[24;20H[K[24;20H5L, 65C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/188[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/188"' -S /tmp/v6GOnk1/187[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/188" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 155C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/189[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/189" [23;20H[K[23;20H5L, 64C appended[23;20H[K[23;20H6L, 86C
5 substitutions on 5 lines"/tmp/v6GOnk1/189"[24;20H[K[24;20H6L, 81C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/190[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/190"' -S /tmp/v6GOnk1/189[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/190" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 152C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/191[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/191" [23;20H[K[23;20H5L, 67C appended[23;20H[K[23;20H6L, 89C
5 substitutions on 5 lines"/tmp/v6GOnk1/191"[24;20H[K[24;20H6L, 84C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/192[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'au VimLeave * redir END' -c 'redir! >/t
[23;80Hm[24;1Hp/v6GOnk1/174' -c 'debuggreedy|set viminfo+=nviminfo' -c 'let ExtraVimBegin = 1
[23;80H'[24;2H-c 'let ExtraVimResult = "/tmp/v6GOnk1/192"' -S /tmp/v6GOnk1/191[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/192" [22;21H[K[23;1H[K[24;2H[K[22;20H0L, 0C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/tmp/v6GOnk1/174" [22;20H[K[22;20H6L, 155C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  56: OK (511)
   function FuncException()
1      let g:exception = v:exception
   endfunction[22;1H"/tmp/v6GOnk1/193" [22;20H[K[23;1H[K[24;4H[K[22;20H[noeol] 4L, 80C
Pattern not found: ^\s*$"/tmp/v6GOnk1/193"[23;20H[K[23;20H1L, 36C written"test49.in" [23;13H[K[23;13H30L, 631C
   function FuncThrowpoint()
1      let g:throwpoint = v:throwpoint
   endfunction[22;1H"/tmp/v6GOnk1/194" [22;20H[K[23;1H[K[24;4H[K[22;20H[noeol] 4L, 83C
Pattern not found: ^\s*$"/tmp/v6GOnk1/194"[23;20H[K[23;20H1L, 38C written"test49.in" [23;13H[K[23;13H30L, 631C
   function T(arg, line)
1      if a:line == 2
2[10Cthrow a:arg[13C" in line 2
3      elseif a:line == 4
4[10Cthrow a:arg[13C" in line 4
5      elseif a:line == 6
6[10Cthrow a:arg[13C" in line 6
7      elseif a:line == 8
8[10Cthrow a:arg[13C" in line 8
9      endif
   endfunction[14;1H"/tmp/v6GOnk1/195"[14;20H[K[15;1H[K[16;1H[K[17;1H[K[18;1H[K[19;1H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;4H[K[14;20H[noeol] 12L, 341C
9 substitutions on 9 lines
8 substitutions on 8 lines
Pattern not found: ^\s*$"/tmp/v6GOnk1/195"[17;20H[K[17;20H9L, 292C written"test49.in" [17;13H[K[17;13H30L, 631C
   function G(arg, line)
1      call T(a:arg, a:line)
   endfunction[18;1H"/tmp/v6GOnk1/196"[18;20H[K[19;1H[K[20;4H[K[18;20H[noeol] 4L, 69C
Pattern not found: ^\s*$"/tmp/v6GOnk1/196"[19;20H[K[19;20H1L, 30C written"test49.in" [19;13H[K[19;13H30L, 631C
   function F(arg, line)
1      call G(a:arg, a:line)
   endfunction[20;1H"/tmp/v6GOnk1/197"[20;20H[K[21;1H[K[22;4H[K[20;20H[noeol] 4L, 69C
Pattern not found: ^\s*$"/tmp/v6GOnk1/197"[21;20H[K[21;20H1L, 30C written"test49.in" [21;13H[K[21;13H30L, 631C
*** Test  57: OK (2147450880)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/198[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/198" [23;20H[K[23;20H87L, 1700C appended[23;20H[K[23;20H88L, 1722C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/199[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/199"' -c 'break
[23;80Ha[24;1Hdd func 4 T' -S /tmp/v6GOnk1/198[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/199" [22;20H[K[23;2H[K[24;1H[K[22;20H8L, 36C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  58: OK (624945)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/200[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/200" [24;20H[K[24;20H293L, 5789C appended[24;20H[K[24;20H294L, 5811C
3 substitutions on 3 lines"/tmp/v6GOnk1/200"[24;20H[K[24;20H294L, 5808C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/201[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo
[23;80H'[24;2H-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/201"' -c 'br
[23;80He[24;1Hakadd file 115 /tmp/v6GOnk1/200' -c 'breakadd file 225 /tmp/v6GOnk1/200' -S /tm
[23;80Hp[24;1H/v6GOnk1/200[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[21;1H"/tmp/v6GOnk1/201"[21;20H[K[22;2H[K[23;1H[K[24;1H[K[21;20H28L, 162C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [21;13H[K[21;13H30L, 631C
*** 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/v6GOnk1/3' >/tmp/v6GOnk1/202[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/202" [23;20H[K[23;20H33L, 765C appended[23;20H[K[23;20H34L, 787C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/203[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/203"' -c 'break
[23;80Ha[24;1Hdd file 7 /tmp/v6GOnk1/202' -S /tmp/v6GOnk1/202[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/203" [22;20H[K[23;2H[K[24;1H[K[22;20H3L, 27C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  60: OK (311511339)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/204[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/204" [24;20H[K[24;20H115L, 2272C appended[24;20H[K[24;20H116L, 2294C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/205[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set vimin
[23;80Hf[24;1Ho+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/
[23;80H2[24;1H05"' -c 'breakadd file 8 /tmp/v6GOnk1/204' -c 'breakadd file 36 /tmp/v6GOnk1/20
[23;80H4[24;1H' -c 'breakadd file 40 /tmp/v6GOnk1/204' -c 'breakadd file 69 /tmp/v6GOnk1/204'
-c 'breakadd file 95 /tmp/v6GOnk1/204' -c 'breakadd file 97 /tmp/v6GOnk1/204' -
[23;80HS[24;2H/tmp/v6GOnk1/204[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[19;1H"/tmp/v6GOnk1/205" [19;20H[K[20;1H[K[21;1H[K[22;1H[K[23;1H[K[24;2H[K[19;20H14L, 81C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [19;13H[K[19;13H30L, 631C
*** Test  61: OK (374889517)
   function F()
1      while 1
2      " Missing :endwhile
   endfunction[21;1H"/tmp/v6GOnk1/206"[22;1H[K[23;1H[K[24;4H[K[21;20H[noeol] 5L, 73C
Pattern not found: ^\s*$"/tmp/v6GOnk1/206"[22;20H[K[22;20H2L, 40C written"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  62: OK (286331153)"/i/m/p/o/s/s/i/b/l/e" [23;24H[K[24;1H[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 6342:[m
[1m[37m[41m"/i/m/p/o/s/s/i/b/l/e" E212: Can't open file for writing[m
*** Test  63: OK (236978127)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/207[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/207" [24;20H[K[24;20H149L, 2828C appended[24;20H[K[24;20H150L, 2850C
6 substitutions on 6 lines"/tmp/v6GOnk1/207"[24;20H[K[24;20H150L, 2844C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/208[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/208"' -c 'break
[23;80Ha[24;1Hdd file 63 /tmp/v6GOnk1/207' -S /tmp/v6GOnk1/207[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/208" [22;20H[K[23;2H[K[24;1H[K[22;20H16L, 97C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  64: OK (1499645335)
*** Test  65: OK (70187)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/209[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/209" [24;20H[K[24;20H78L, 1520C appended[24;20H[K[24;20H79L, 1542C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/210[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/210"' -c 'break
[23;80Ha[24;1Hdd func 8 F' -S /tmp/v6GOnk1/209[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/210" [22;20H[K[23;2H[K[24;1H[K[22;20H6L, 22C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** 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/v6GOnk1/211" [New File]"test49.in" [24;13H[K[24;13H30L, 631C"/tmp/v6GOnk1/212" [New File]"test49.in" [24;13H[K[24;13H30L, 631C
*** Test  74: OK (224907669)
*** Test  75: OK (2000403408)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/213[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/213" [24;20H[K[24;20H253L, 6369C appended[24;20H[K[24;20H254L, 6391C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/214[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|
[23;80Hs[24;1Het viminfo+=nviminfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp
[23;80H/[24;1Hv6GOnk1/214"' -c 'breakadd func 2 INT' -S /tmp/v6GOnk1/213[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/214" [22;20H[K[23;1H[K[24;1H[K[22;20H28L, 167C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  76: OK (1610087935)
[1m[37m[41mError detected while processing function ERR:[m
[33mline    2:[m
[1m[37m[41mE492: Not an editor command:     asdf[m
[1m[37m[41mE492: Not an editor command:     asdf[m
[1m[37m[41mE492: Not an editor command:     asdf[m
*** Test  77: OK (1388671)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/215[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/215" [24;20H[K[24;20H161L, 4543C appended[24;20H[K[24;20H162L, 4565C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/216[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/216"' -S /tmp/v6GO
[23;80Hn[24;1Hk1/215[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/216" [22;21H[K[23;1H[K[24;1H[K[22;20H1L, 10C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  78: OK (134217728)
[1m[37m[41mError detected while processing function NEXT:[m
[33mline    1:[m
[1m[37m[41mE121: Undefined variable: novar[m
[1m[37m[41mE15: Invalid expression: novar | Xloop 1[m
[1m[37m[41mE121: Undefined variable: novar[m
[1m[37m[41mE488: Trailing characters[m
[1m[37m[41mE108: No such variable: "novar"[m
[1m[37m[41mE488: Trailing characters[m
[1m[37m[41mE121: Undefined variable: novar[m
[1m[37m[41mE15: Invalid expression: novar[m
[1m[37m[41mE475: Invalid argument: {novar} | Xloop 1[m
[1m[37m[41mE121: Undefined variable: novar[m
[1m[37m[41mE15: Invalid expression:  novar[m
[1m[37m[41mE475: Invalid argument: { novar} | Xloop 1[m
*** Test  79: OK (70288929)
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 8828:[m
[1m[37m[41mE584: :elseif after :else: elseif 1 ||| 2[m
[33mline 8838:[m
[1m[37m[41mE584: :elseif after :else: elseif 1 ||| 2[m
[33mline 8846:[m
[1m[37m[41mE582: :elseif without :if: elseif 1 ||| 2[m
[33mline 8854:[m
[1m[37m[41mE582: :elseif without :if:     elseif 1 ||| 2[m
*** Test  80: OK (17895765)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/217[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/217" [24;20H[K[24;20H15L, 272C appended[24;20H[K[24;20H16L, 294C[24;20H[K[24;20H16L, 293C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/218[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/218"' -S /tmp/v6GO
[23;80Hn[24;1Hk1/217[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/218" [22;21H[K[23;1H[K[24;1H[K[22;20H2L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/219[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/219" [23;20H[K[23;20H12L, 227C appended[23;20H[K[23;20H13L, 249C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/220[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/220"' -c 'break
[23;80Ha[24;1Hdd file 8 /tmp/v6GOnk1/219' -S /tmp/v6GOnk1/219[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/220" [22;20H[K[23;2H[K[24;1H[K[22;20H2L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  81: OK (387)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/221[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/221" [24;20H[K[24;20H20L, 417C appended[24;20H[K[24;20H21L, 439C[24;20H[K[24;20H21L, 438C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/222[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/222"' -S /tmp/v6GO
[23;80Hn[24;1Hk1/221[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/222" [22;21H[K[23;1H[K[24;1H[K[22;20H1L, 2C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/223[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/223" [23;20H[K[23;20H24L, 480C appended[23;20H[K[23;20H25L, 502C[23;20H[K[23;20H25L, 501C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/224[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/224"' -S /tmp/v6GO
[23;80Hn[24;1Hk1/223[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/224" [22;21H[K[23;1H[K[24;1H[K[22;20H1L, 4C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/225[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/225" [23;20H[K[23;20H17L, 390C appended[23;20H[K[23;20H18L, 412C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/226[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/226"' -c 'break
[23;80Ha[24;1Hdd file 7 /tmp/v6GOnk1/225' -S /tmp/v6GOnk1/225[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/226" [22;20H[K[23;2H[K[24;1H[K[22;20H1L, 6C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/227[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/227" [23;20H[K[23;20H21L, 444C appended[23;20H[K[23;20H22L, 466C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/228[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/228"' -c 'break
[23;80Ha[24;1Hdd func 6 I' -S /tmp/v6GOnk1/227[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/228" [22;20H[K[23;2H[K[24;1H[K[22;20H1L, 8C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  82: OK (8454401)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/229[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/229" [24;20H[K[24;20H17L, 307C appended[24;20H[K[24;20H18L, 329C[24;20H[K[24;20H18L, 328C written"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/230[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -c '
[23;80Hl[24;1Het ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/230"' -S /tmp/v6GO
[23;80Hn[24;1Hk1/229[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/230" [22;21H[K[23;1H[K[24;1H[K[22;20H3L, 7C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/231[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[23;1H[K[23;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/231" [23;20H[K[23;20H14L, 266C appended[23;20H[K[23;20H15L, 288C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/232[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo' -
[23;80Hc[24;2H'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/232"' -c 'break
[23;80Ha[24;1Hdd file 8 /tmp/v6GOnk1/231' -S /tmp/v6GOnk1/231[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/232" [22;20H[K[23;2H[K[24;1H[K[22;20H3L, 13C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  83: OK (2835)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/233[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/233" [24;20H[K[24;20H154L, 3580C appended[24;20H[K[24;20H155L, 3602C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/234[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nviminfo
[23;80H'[24;2H-c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/234"' -c 'br
[23;80He[24;1Hakadd func 1 INT' -S /tmp/v6GOnk1/233[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/234"[22;20H[K[23;2H[K[24;1H[K[22;20H18L, 118C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  84: OK (934782101)
TMP"/tmp/v6GOnk1/235" [noeol] 2L, 6C[24;1H[K[24;1H/  "test49.in" 30L, 631C"/n/o/n/e/x/i/s/t/e/n/t"
"/tmp/v6GOnk1/237" 1L, 1C"test49.in" [24;13H[K[24;13H30L, 631C
:!echo XYZ >/tmp/v6GOnk1/238[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H"/tmp/v6GOnk1/239" [New File]"test49.in" [24;13H[K[24;13H30L, 631C
*** Test  85: OK (198689)
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 9612:[m
[1m[37m[41mE123: Undefined function: F[m
Make_amiga.mak(1 of 1): tango down
[33mline 9616:[m
[1m[37m[41mE193: :endfunction not inside a function[m
[1m[37m[41mError detected while processing function ExecAsScript..MakeScript:[m
[33mline    3:[m
[1m[37m[41mE123: Undefined function: F[m"/tmp/v6GOnk1/240" [1m[37m[41mc[m[24;20H[K[24;20H[noeol] 4L, 106C
[31msearch hit BOTTOM, continuing at TOP[m[33mline   10:[m[24;11H[K[24;1H
[1m[37m[41mE486: Pattern not found: .*F(.*)[m
[31msearch hit BOTTOM, continuing at TOP[m[33mline   11:[m[24;11H[K[24;1H
[1m[37m[41mE486: Pattern not found: ^\d*\s*endfunction\>[m
4 substitutions on 4 lines"/tmp/v6GOnk1/240"[24;20H[K[24;20H3L, 106C written"test49.in" [24;13H[K[24;13H30L, 631C
[1m[37m[41mError detected while processing /tmp/v6GOnk1/240:[m
[33mline    1:[m
[1m[37m[41mE492: Not an editor command: Error detected while processing function ExecAsScr[m
[23;80H[1m[37m[41mi[24;1Hpt..MakeScript:[m
[33mline    2:[m
[1m[37m[41mE492: Not an editor command: line    3:[m
[33mline    3:[m
[1m[37m[41mE492: Not an editor command: E123: Undefined function: F[m
[1m[37m[41mError detected while processing /sources/vim74/src/testdir/test49.vim:[m
[33mline 9622:[m
[1m[37m[41mE130: Unknown function: F[m
*** Test  86: OK (0)
5
*** Test  87: OK (0)"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!echo 'source /tmp/v6GOnk1/3' >/tmp/v6GOnk1/241[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[?25l[24;1H[K[24;1H/^\s*if\s\+ExtraVim(.*)/+[25C1"/tmp/v6GOnk1/241" [24;20H[K[24;20H151L, 3929C appended[24;20H[K[24;20H152L, 3951C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C
:!>/tmp/v6GOnk1/242[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:!echo 'q[34m^M[mq[34m^M[mq[34m^M[mq' | ../vim -u NONE -N -Xes -c 'debuggreedy|set viminfo+=nvimi
[23;80Hn[24;1Hfo' -c 'let ExtraVimBegin = 1' -c 'let ExtraVimResult = "/tmp/v6GOnk1/242"' -c
[23;80H'[24;1Hbreakadd func 5 ThrowOnInterrupt' -S /tmp/v6GOnk1/241[?1l>[?12l[?25h[?1049l

shell returned 1

Press ENTER or type command to continue[?1049h[?1h=[?25l[22;1H"/tmp/v6GOnk1/242" [22;21H[K[23;1H[K[24;1H[K[22;20H16L, 281C"/sources/vim74/src/testdir/test49.vim" [readonly] 9852L, 225409C"test49.in" [22;13H[K[22;13H30L, 631C
*** Test  88: OK (50443995)
[32mPress ENTER or type command to continue[27m[m[H[2J[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 or 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:)[1;1H[?12l[?25h[?25l[1;23r[1;1H[7M[1;24r[17;1H:  silent! exe "unlet " . v
:endfor
:unlet v
:qa!
ENDTEST

Results of test49.vim:[?12l[?25h[?25l
98 more lines[1;23r[23;1H
[1;24r[23;1H*** Test   1: OK (34695)[24;1H[K[24;1H98 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.-,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 99L, 2869C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" make valgrind happy[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir => funclist[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsilent func[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir END[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor line in split(funclist, "\n")[?25l
:  [?12l[?25h:  let name = matchstr(line, 'function \zs[A-Z]\w*\ze(')
[?25l:  [?12l[?25h:  if name != ''
[?25l:    [?12l[?25h:    exe "delfunc " . name
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfor[1;1H[5L[?25l[1;1H:lang mess C
:so test49.vim
GGGGGGGGGGGGGG"rp:.-,$w! test.out
:"
:" make valgrind happy[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hfor v in keys(g:)[?25l
:  [?12l[?25h:  silent! exe "unlet " . v
[?25l:  [?12l[?25h:endfor[1;1H[2L[?25l[1;1H:lang mess C
:so test49.vim[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet v[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test51.failed test.ok test.out X* viminfo
cp test51.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test51.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test51.in" 36 lines, 808 characters[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=#000[11;1Hff00 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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for ":highlight". vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 31 lines, 746 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[13M[1;24r[11;1H: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[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" basic test if ":highlight" doesn't crash[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhighlight[?25l
SpecialKey     [34mxxx[m [34mterm=[mbold [34mctermfg=[m4 [34mguifg=[mBlue
NonText[8C[1m[34mxxx[m [34mterm=[mbold [34mcterm=[mbold [34mctermfg=[m4 [34mgui=[mbold [34mguifg=[mBlue
Directory      [34mxxx[m [34mterm=[mbold [34mctermfg=[m4 [34mguifg=[mBlue
ErrorMsg[7C[1m[37m[41mxxx[m [34mterm=[mstandout [34mcterm=[mbold [34mctermfg=[m7 [34mctermbg=[m1 [34mguifg=[mWhite
[19C[34mguibg=[mRed
IncSearch      [7mxxx[m [34mterm=[mreverse [34mcterm=[mreverse [34mgui=[mreverse
Search[9C[30m[43mxxx[m [34mterm=[mreverse [34mctermfg=[m0 [34mctermbg=[m3 [34mguibg=[mYellow
MoreMsg[8C[32mxxx[m [34mterm=[mbold [34mctermfg=[m2 [34mgui=[mbold [34mguifg=[mSeaGreen
ModeMsg[8C[1mxxx[m [34mterm=[mbold [34mcterm=[mbold [34mgui=[mbold
LineNr[9C[33mxxx[m [34mterm=[munderline [34mctermfg=[m3 [34mguifg=[mBrown
CursorLineNr   [33mxxx[m [34mterm=[mbold [34mctermfg=[m3 [34mgui=[mbold [34mguifg=[mBrown
Question[7C[32mxxx[m [34mterm=[mstandout [34mctermfg=[m2 [34mgui=[mbold [34mguifg=[mSeaGreen
StatusLine     [1m[7mxxx[m [34mterm=[mbold,reverse [34mcterm=[mbold,reverse [34mgui=[mbold,reverse
StatusLineNC   [7mxxx[m [34mterm=[mreverse [34mcterm=[mreverse [34mgui=[mreverse
VertSplit      [7mxxx[m [34mterm=[mreverse [34mcterm=[mreverse [34mgui=[mreverse
Title[10C[35mxxx[m [34mterm=[mbold [34mctermfg=[m5 [34mgui=[mbold [34mguifg=[mMagenta
Visual[9C[7mxxx[m [34mterm=[mreverse [34mcterm=[mreverse [34mguibg=[mLightGrey
VisualNOS      xxx cleared
WarningMsg     [31mxxx[m [34mterm=[mstandout [34mctermfg=[m1 [34mguifg=[mRed
WildMenu[7C[30m[43mxxx[m [34mterm=[mstandout [34mctermfg=[m0 [34mctermbg=[m3 [34mguifg=[mBlack [34mguibg=[mYellow
Folded[9C[34m[47mxxx[m [34mterm=[mstandout [34mctermfg=[m4 [34mctermbg=[m7 [34mguifg=[mDarkBlue
[19C[34mguibg=[mLightGrey
FoldColumn     [34m[47mxxx[m [34mterm=[mstandout [34mctermfg=[m4 [34mctermbg=[m7 [34mguifg=[mDarkBlue [34mguibg=[mGrey
DiffAdd[8C[44mxxx[m [34mterm=[mbold [34mctermbg=[m4 [34mguibg=[mLightBlue
DiffChange     [45mxxx[m [34mterm=[mbold [34mctermbg=[m5 [34mguibg=[mLightMagenta
DiffDelete     [1m[34m[46mxxx[m [34mterm=[mbold [34mcterm=[mbold [34mctermfg=[m4 [34mctermbg=[m6 [34mgui=[mbold [34mguifg=[mBlue
[19C[34mguibg=[mLightCyan
DiffText[7C[1m[41mxxx[m [34mterm=[mreverse [34mcterm=[mbold [34mctermbg=[m1 [34mgui=[mbold [34mguibg=[mRed
SignColumn     [34m[47mxxx[m [34mterm=[mstandout [34mctermfg=[m4 [34mctermbg=[m7 [34mguifg=[mDarkBlue [34mguibg=[mGrey
Conceal[8Cxxx cleared
SpellBad[7C[41mxxx[m [34mterm=[mreverse [34mctermbg=[m1 [34mgui=[mundercurl [34mguisp=[mRed
SpellCap[7C[44mxxx[m [34mterm=[mreverse [34mctermbg=[m4 [34mgui=[mundercurl [34mguisp=[mBlue
SpellRare      [45mxxx[m [34mterm=[mreverse [34mctermbg=[m5 [34mgui=[mundercurl [34mguisp=[mMagenta
SpellLocal     [46mxxx[m [34mterm=[munderline [34mctermbg=[m6 [34mgui=[mundercurl [34mguisp=[mDarkCyan
Pmenu[10C[30m[45mxxx[m [34mctermfg=[m0 [34mctermbg=[m5 [34mguibg=[mLightMagenta
PmenuSel[7C[30m[47mxxx[m [34mctermfg=[m0 [34mctermbg=[m7 [34mguibg=[mGrey
PmenuSbar      [47mxxx[m [34mctermbg=[m7 [34mguibg=[mGrey
PmenuThumb     [40mxxx[m [34mctermbg=[m0 [34mguibg=[mBlack
TabLine[8C[4m[30m[47mxxx[m [34mterm=[munderline [34mcterm=[munderline [34mctermfg=[m0 [34mctermbg=[m7
[19C[34mgui=[munderline [34mguibg=[mLightGrey
TabLineSel     [1mxxx[m [34mterm=[mbold [34mcterm=[mbold [34mgui=[mbold
TabLineFill    [7mxxx[m [34mterm=[mreverse [34mcterm=[mreverse [34mgui=[mreverse
CursorColumn   [47mxxx[m [34mterm=[mreverse [34mctermbg=[m7 [34mguibg=[mGrey90
CursorLine     [4mxxx[m [34mterm=[munderline [34mcterm=[munderline [34mguibg=[mGrey90
ColorColumn    [41mxxx[m [34mterm=[mreverse [34mctermbg=[m1 [34mguibg=[mLightRed
MatchParen     [46mxxx[m [34mterm=[mreverse [34mctermbg=[m6 [34mguibg=[mCyan
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Search[?25l
Search[9C[30m[43mxxx[m [34mterm=[mreverse [34mctermfg=[m0 [34mctermbg=[m3 [34mguibg=[mYellow
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" test setting colors.[?25l[27m[m[H[2J[1;1H:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST
[?12l[?25h[?25l
:[?12l[?25h" test clearing one color and all doesn't generate error or warning[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhi NewGroup term=bold cterm=italic ctermfg=DarkBlue ctermbg=Grey gui= guifg=#0
[23;80H0[24;1Hff00 guibg=Cyan[?25l[23;1H[1m[37m[41mE418: Illegal value: guifg=#00ff00[m[23;35H[K[24;1H[K[24;1H[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group2 term= cterm=[?25l[1m[37m[41mE418: Illegal value: cterm=[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group3 term=underline cterm=bold[?25l[1;1H[2L[1;1H:hi NewGroup
:hi Group2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hredir! >test.out[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhi NewGroup[?25l
NewGroup[7C[7m[34m[47mxxx[m [34mterm=[mbold [34mcterm=[mitalic [34mctermfg=[m4 [34mctermbg=[m7
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group2[?25l
Group2[9Cxxx cleared
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group3[?25l
Group3[9C[1mxxx[m [34mterm=[munderline [34mcterm=[mbold
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi clear NewGroup[?25l[1;1H[6L[1;1H:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hhi NewGroup[?25l
NewGroup[7Cxxx cleared
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group2[?25l
Group2[9Cxxx cleared
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Group2 NONE[?25l[1;1H[4L[1;1H:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hhi Group2[?25l
Group2[9Cxxx cleared
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi clear[?25l[27m[m[H[2J[1;1H:hi NewGroup
:hi Group2
:hi Group3
:hi clear NewGroup
:hi NewGroup
:hi Group2
:hi Group2 NONE
:hi Group2
:hi clear
:hi Group3
:hi Crash term='asdf
:redir END
:" filter ctermfg and ctermbg, the numbers depend on the terminal
:e test.out
:%s/ctermfg=\d*/ctermfg=2/
:%s/ctermbg=\d*/ctermbg=3/
:" filter out possibly translated error message
:%s/E475: [^:]*:/E475:/
:" fix the fileformat
:set ff&
:wq!
ENDTEST
[?12l[?25h[?25l
:[?12l[?25hhi Group3[?25l
Group3[9Cxxx cleared
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hhi Crash term='asdf[?25l[1m[37m[41mE475: Invalid argument: term='asdf[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[3L[1;1H:hi NewGroup
:hi Group2
:hi Group3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" filter ctermfg and ctermbg, the numbers depend on the terminal[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he test.out[?25l"test.out" 20 lines, 289 characters[1;1H[K[2;1H[K[3;1HNewGroup       xxx term=bold cterm=italic ctermfg=4 ctermbg=7[4;1H[K[5;1HGroup2         xxx cleared[6;1H[K[7;1HGroup3         xxx term=underline cterm=bold[8;1H[K[9;1H[K[10;1HNewGroup       xxx cleared[11;1H[K[12;1HGroup2         xxx cleared[13;1H[K[14;1H[K[15;1HGroup2         xxx cleared[16;1H[K[17;1H[K[18;1HGroup3         xxx cleared[19;1H[K[20;1HE475: Invalid argument: term='asdf
[1m[34m~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h%s/ctermfg=\d*/ctermfg=2/[?25l[3;51H2[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%s/ctermbg=\d*/ctermbg=3/[?25l[3;61H3[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" filter out possibly translated error message[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%s/E475: [^:]*:/E475:/[?25l[20;7Hterm='asdf[20;17H[K[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" fix the fileformat[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ff&[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwq![?25l"test.out" 20 lines, 271 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test52.failed test.ok test.out X* viminfo
cp test52.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test52.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test52.in" 65 lines, 1645 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for reading and writing files with conversion for Win32.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 57 lines, 1333 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:e Xcp1251
:.w ++enc=cp1251 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp1251 >>test.out
:"
:" read three 'fileencoding's with cp866 'encoding'
:set encoding=cp866 fencs=utf-8,cp1251
:e Xutf8
:.w ++enc=cp866 >>test.out
:e Xcp1251
:.w ++enc=cp866 >>test.out
:set fencs=utf-8,cp866
:e Xcp866
:.w ++enc=cp866 >>test.out
:"
:qa!
ENDTEST

1 utf-8 text: Ð[34m~T[mÐ»Ñ[34m~O[m Vim version 6.2.  Ð[34m~_[mÐ¾Ñ[34m~A[mÐ»ÐµÐ´Ð½ÐµÐµ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµµ[21;1H: 1970 Jan 01
2 cp1251 text: Äëÿ Vim version 6.2.  Ïîñëåäíåå èçìåíåíèå: 1970 Jan 01
3 cp866 text: [34m~D[m«ï Vim version 6.2.  [34m~O[m®á«¥¤­¥¥ ¨§¬¥­¥­¨¥: 1970 Jan 01[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" make this a dummy test for non-Win32 systems[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has("win32") | e! test.ok | wq! test.out | endif[?25l"test.ok" [24;11H[K[24;11H18 lines, 1374 characters
"test.out" [New File] 18 lines, 1374 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test53.failed test.ok test.out X* viminfo
cp test53.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test53.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test53.in" 123 lines, 2343 characters[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for string and html text objects. vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[9;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 73 lines, 1554 characters written[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[10;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hcgnj[34m^[[m
:" Make sure there is no other match y uppercase.
/[34m^V[mx59
gggnd
:" test repeating dgn
/^Johnny
ggdgn.
:" test repeating gUgn
/^Depp
gggUgn.
:/^start:/,/^end:/wq! test.out
ENDTEST

start: "wo\"rd\\" foo
'foo' 'bar' 'piep'
bla bla `quote` blah
out " in "noXno"
"'" 'blah' rep 'buh'
bla `s*`d-`+++`l**` b`la
voo "nah" sdf " asdf" sdf " sdf" sd

<begin>
-<b>asdf<i>Xasdf</i>asdf</b>-[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start:/[?25l[24;9H[K[24;1H[14;1H[?12l[?25h[?25l[7Cfo[14;11H[K[14;8H[?12l[?25h[15;8H[?25l[?12l[?25h[?25l[7m'foo'[?12l[?25h[?25l 'bar'[?12l[?25h[?25l[mxxxxxxxxxxxx[?12l[?25h
[14C[?25lblah[16;13H[K[16;9H[?12l[?25h[17;9H[12C[?25l"[17;12H[K[17;11H[?12l[?25h[18;11H[9C[?25l[?12l[?25h[?25l'[7m rep[?12l[?25h[?25l[myyyyy[?12l[?25h[19;11H[?25l[24;1H[K[24;1H:[?12l[?25hset quoteescape=+*-[?25l[19;11H[?12l[?25h[?25l` b`la[19;12H[K[19;6H[?12l[?25h[20;6H[29C[?25l[?12l[?25h[?25l[7m" sdf"[?12l[?25h[?25l[m"[5C[7m [20;27H[?12l[?25h[?25l"[?12l[?25h[?25l[20;16H asdf" sdf [20;15H[?12l[?25h[?25l[20;7Hah" sdf "[mvoo "[?12l[?25h[?25lzzzzzzzzzzzzzzzzzzzzzzzzzzzzvoo "[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^<begin[?25l[22;1H[?12l[?25h
[11C[?25l</i>asdf</b>-[23;25H[K[23;12H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H-<b>asdX<i>a<i />sdf</i>asdf</b>-[24;1H[K[23;12H[?12l[?25h[7C[?25l</b>-[23;10H[K[23;5H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H-<b>asdf<i>Xasdf</i>asdf</b>--<b>[?12l[?25h[7C[?25lasdf</b>-[23;18H[K[23;9H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H-<b>asdX<i>as<b />df</i>asdf</b>-[23;9H[?12l[?25h[7C[?25l--[23;3H[K[23;2H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H</begin><[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hput =matchstr(\"abcd\", \".\", 0, 2) " b[?25l[1;23r[23;1H
[1;24r[23;1Hb[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"abcd\", \"..\", 0, 2) " bc[?25l[1;23r[23;1H
[1;24r[23;1Hbc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"abcd\", \".\", 2, 0) " c (zero and negative -> first match)[?25l[1;23r[23;1H
[1;24r[23;1Hc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"abcd\", \".\", 0, -1) " a[?25l[1;23r[23;1H
[1;24r[23;1Ha[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match(\"abcd\", \".\", 0, 5) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match(\"abcd\", \".\", 0, -1) " 0[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 0, 1) " 0[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 0, 2) " 1[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 0, 3) " 2[?25l[1;23r[23;1H
[1;24r[23;1H2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 0, 4) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 1, 1) " 1[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 2, 1) " 2[?25l[1;23r[23;1H
[1;24r[23;1H2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '.', 3, 1) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 0, 1) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 0, 2) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 1, 1) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 2, 1) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 3, 1) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '$', 4, 1) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 0, 1) " 0[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 0, 2) " 1[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 0, 3) " 2[?25l[1;23r[23;1H
[1;24r[23;1H2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 0, 4) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 0, 5) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 1, 1) " 1[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 2, 1) " 2[?25l[1;23r[23;1H
[1;24r[23;1H2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 3, 1) " 3[?25l[1;23r[23;1H
[1;24r[23;1H3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =match('abc', '\zs', 4, 1) " -1[?25l[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^foobar[?25l[1;23r[1;1H[2M[1;24r[22;1HSEARCH:
foobar[24;1H[K[23;1H[?12l[?25h[?25l[7mfooba[?12l[?25h[?25l[msearchmatch[?12l[?25h[?25l
/[?12l[?25hone\_s*two\_s[?25l[1;23r[23;1H
[1;24r[23;1Hone[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h1[?25l[27m[m[H[2J[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H1
2
3
-1
1
2
3
-1
SEARCH:
searchmatch
[7mone 
two[m
abcdx | abcdx | abcdx
join
lines
zero width pattern
delete first and last chars
uniquepattern uniquepattern
my very excellent mother just served us nachos
for (i=0; i<=10; i++)
Y
text
Y[12;4H[?12l[?25h[?25l[11;23r[11;1H[2M[1;24r[22;1H--1
Johnny[11;1H[?12l[?25h
[?25l[24;1H/[?12l[?25h[a]bcdx[?25l[31msearch hit BOTTOM, continuing at TOP[11;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1[?25l[27m[m[H[2J[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H0
1
2
3
-1
1
2
3
-1
SEARCH:
searchmatch
abcdx | [7mabcd[mx | abcdx
join
lines
zero width pattern
delete first and last chars
uniquepattern uniquepattern
my very excellent mother just served us nachos
for (i=0; i<=10; i++)
Y
text
Y
--1[12;13H[?12l[?25h[?25l | abcdx[12;17H[K[12;9H[?12l[?25h[?25l[24;1H/[?12l[?25hjoin[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h$[?25l[13;5H[?12l[?25h[?25ljoin [?12l[?25h[?25l[13;23r[23;1H
[1;24r[13;1Hjoin lines[23;1HJohnny[24;1H[K[13;6H[?12l[?25h[14;6H[?25l[24;1H/[?12l[?25h\>\zs[?25l[14;11H[?12l[?25h[?25lzero[?12l[?25h[?25lwidth pattern[14;18H[K[14;5H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^[?25l[15;1H[?12l[?25h[?25l[?12l[?25h[?25lelete first and last chars[15;27H[K[15;1H[?12l[?25h[25C[?25l[24;1H[K[24;1H/[?12l[?25h\zs[?25l[15;26H[?12l[?25h[?25l[?12l[?25h[?25l[15;26H[K[15;25H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[u]niquepattern/s[?25l[24;17H[K[24;1H[16;1H[?12l[?25h[?25l[?12l[?25h[?25l[7mu[?12l[?25h[?25lniquepatter[?12l[?25h[?25l[m uniquepattern[16;15H[K[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H/[?12l[?25hmother[?25l[17;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset selection=exclusive[?25l[17;19H[?12l[?25h[27C[?25l[17;21Hngoose just served us nachos[17;26H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hi[?25l[18;6H[?12l[?25h[?25lj[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h" Make sure there is no other match y uppercase.[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Y[?25l[21;1H[?12l[?25h[?25l[27m[m[H[2J[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H3
-1
SEARCH:
searchmatch
abcdx |  | abcdx
join lines
zerowidth pattern
elete first and last char
 uniquepattern
my very excellent mongoose just served us nachos
for (j=0; i<=10; i++)
[7mY[m
text
Y
--1
Johnny
--2
Johnny
--3
Depp
--4
Depp
--5[12;2H[?12l[?25h[?25l[12;1H[K[12;1H[?12l[?25h
[?25l[24;1H:[?12l[?25h" test repeating dgn[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Johnny[?25l[16;1H[?12l[?25h[?25l[27m[m[H[2J[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H-1
SEARCH:
searchmatch
abcdx |  | abcdx
join lines
zerowidth pattern
elete first and last char
 uniquepattern
my very excellent mongoose just served us nachos
for (j=0; i<=10; i++)

text
Y
--1

--2
Johnny
--3
Depp
--4
Depp
--5
end:[15;1H[?12l[?25h[?25l[17;1H[K[17;1H[?12l[?25h
[?25l[24;1H:[?12l[?25h" test repeating gUgn[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Depp[?25l[19;1H[?12l[?25h[?25l[27m[m[H[2J[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()

Also test the gn command and repeating it.

STARTTEST
:so small.vim
/^start:/
da"
0va'a'rx
02f`da`
0fXdi"
03f'vi'ry
:set quoteescape=+*-
di`
$F"va"oha"i"rz
:"
/^<begin
jfXdit
0fXdit[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H-1
SEARCH:
searchmatch
abcdx |  | abcdx
join lines
zerowidth pattern
elete first and last char
 uniquepattern
my very excellent mongoose just served us nachos
for (j=0; i<=10; i++)

text
Y
--1

--2

--3
DEPP
--4
Depp
--5
end:[19;1H[?12l[?25h[?25l

DEPP[?12l[?25h
[?25l

:[?12l[?25h/^start:/,/^end:/wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 64 lines, 485 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test54.failed test.ok test.out X* viminfo
cp test54.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test54.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test54.in" 22 lines, 658 characters[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.oo[9;1Hut
:else
: !rm -f test.out
: au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
:endif
:e somefile[11C" here, autocommand for xx shall write test.out
:[21C" but autocommand shall not apply to buffer named <buffer>[16;1H:bwipe xx[13C" here, autocommand shall be auto-deleted
:e xx[17C" nothing shall be written
:e somefile[11C" nothing shall be written
:qa!
ENDTEST

start of test file xx
end of test file xx[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HSome tests for buffer-local autocommands[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 15 lines, 555 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[20;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he xx[?25l"xx" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hif has("vms")[?25l
:  [?12l[?25h: !del test.out.*
[?25l:  [?12l[?25h: au BufLeave <buffer> :!write sys$output "buffer-local autommand in %" > te
[23;80Hs[24;1Ht.out
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: !rm -f test.out
[?25l:!rm -f test.out[?1l>[?12l[?25h[?1049l

Press ENTER or type command to continue[?1049h[?1h=[24;1H
[?25l:  :[?12l[?25h au BufLeave <buffer> :!echo buffer-local autommand in %>> test.out
[?25l:  [?12l[?25h:endif[?25l[24;1H[K[24;1H:[?12l[?25he somefile           " here, autocommand for xx shall write test.out [?25l:!echo buffer-local autommand in xx>> test.out[24;47H[K[24;47H
[?12l[?25h[?25l[m"somefile" [New File]
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h                     " but autocommand shall not apply to buffer named <buffer
[23;80H>[24;1H[?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hbwipe xx             " here, autocommand shall be auto-deleted[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he xx                 " nothing shall be written[?25l"xx" [New File][24;23H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he somefile           " nothing shall be written[?25l"somefile" [New File][24;23H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[?1l>[?12l[?25h[?1049l
# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test55.failed test.ok test.out X* viminfo
cp test55.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test55.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test55.in" 410 lines, 8794 characters[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])
:"[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for List and Dictionary types.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 404 lines, 8708 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$put =string(d)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
:unlet dict
:call garbagecollect(1)
:"
:" test for patch 7.3.637
:let a = 'No error caught'
:try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
o[34m^R[m=a[34m^M^[[m:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o[34m^R[m=a[34m^M^[[m:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfun Test(...)[?25l
:  [?12l[?25h:lang C
[?25l:  [?12l[?25h:" Creating List directly with different types
[?25l:  [?12l[?25h:let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25h:$put =string(l[-1])
[?25l:  [?12l[?25h:$put =string(l[-4])
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  $put =string(l[-5])
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:14]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:" List slices
[?25l:  [?12l[?25h:$put =string(l[:])
[?25l:  [?12l[?25h:$put =string(l[1:])
[?25l:  [?12l[?25h:$put =string(l[:-2])
[?25l:  [?12l[?25h:$put =string(l[0:8])
[?25l:  [?12l[?25h:$put =string(l[8:-1])
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" List identity
[?25l:  [?12l[?25h:let ll = l
[?25l:  [?12l[?25h:let lx = copy(l)
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  $put =(l == ll) . (l isnot ll) . (l is ll) . (l == lx) . (l is lx) . (l
isnot lx)
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Creating Dictionary directly with different types
[?25l:  [?12l[?25h:let d = {001: 'asd', 'b': [1, 2, function('strlen')], -1: {'a': 1},}
[?25l:  [?12l[?25h:$put =string(d) . d.1
[?25l:  [?12l[?25h:$put =string(sort(keys(d)))
[?25l:  [?12l[?25h:$put =string (values(d))
[?25l:  [?12l[?25h:for [key, val] in items(d)
[?25l:    [?12l[?25h:  $put =key . ':' . string(val)
[?25l:    [?12l[?25h:  unlet key val
[?25l:    [?12l[?25h:endfor
[?25l:  [?12l[?25h:call extend  (d, {3:33, 1:99})
[?25l:  [?12l[?25h:call extend(d, {'b':'bbb', 'c':'ccc'}, "keep")
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  call extend(d, {3:333,4:444}, "error")
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:15] . v:exception[-1:-1]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:$put =string(d)
[?25l:  [?12l[?25h:call filter(d, 'v:key =~ ''[ac391]''')
[?25l:  [?12l[?25h:$put =string(d)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Dictionary identity
[?25l:  [?12l[?25h:let dd = d
[?25l:  [?12l[?25h:let dx = copy(d)
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  $put =(d == dd) . (d isnot dd) . (d is dd) . (d == dx) . (d is dx) . (d
isnot dx)
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Changing var type should fail
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  let d = []
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:14] . v:exception[-1:-1]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  let l = {}
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:14] . v:exception[-1:-1]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" removing items with :unlet
[?25l:  [?12l[?25h:unlet l[2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25h:let l = range(8)
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:unlet l[:3]
[?25l:    [?12l[?25h:unlet l[1:]
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:$put =v:exception
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:unlet d.c
[?25l:  [?12l[?25h:unlet d[-1]
[?25l:  [?12l[?25h:$put =string(d)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" removing items out of range: silently skip items that don't exist
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[2:1]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[2:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[2:3]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[2:4]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[2:5]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-1:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-2:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-3:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-4:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-5:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25hlet l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:unlet l[-6:2]
[?25l:  [?12l[?25h:$put =string(l)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" assignment to a list
[?25l:  [?12l[?25h:let l = [0, 1, 2, 3]
[?25l:  [?12l[?25h:let [va, vb] = l[2:3]
[?25l:  [?12l[?25h:$put =va
[?25l:  [?12l[?25h:$put =vb
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  let [va, vb] = l
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:14]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  let [va, vb] = l[1:1]
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =v:exception[:14]
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" manipulating a big Dictionary (hashtable.c has a border of 1000 entries)
[?25l:  [?12l[?25h:let d = {}
[?25l:  [?12l[?25h:for i in range(1500)
[?25l:    [?12l[?25h: let d[i] = 3000 - i
[?25l:    [?12l[?25h:endfor
[?25l:  [?12l[?25h:$put =d[0] . ' ' . d[100] . ' ' . d[999] . ' ' . d[1400] . ' ' . d[1499]
[?25l:  [?12l[?25h:try
[?25l:    [?12l[?25h:  let n = d[1500]
[?25l:    [?12l[?25h:catch
[?25l:    [?12l[?25h:  $put =substitute(v:exception, '\v(.{14}).*( \d{4}).*', '\1\2', '')
[?25l:    [?12l[?25h:endtry
[?25l:  [?12l[?25h:" lookup each items
[?25l:  [?12l[?25h:for i in range(1500)
[?25l:    [?12l[?25h: if d[i] != 3000 - i
[?25l:      [?12l[?25h:  $put =d[i]
[?25l:      [?12l[?25h: endif
[?25l:    [?12l[?25h:endfor
[?25l:  [?12l[?25h: let i += 1
[?25l:  [?12l[?25h:" delete even items
[?25l:  [?12l[?25h:while i >= 2
[?25l:    [?12l[?25h: let i -= 2
[?25l:    [?12l[?25h: unlet d[i]
[?25l:    [?12l[?25h:endwhile
[?25l:  [?12l[?25h:$put =get(d, 1500 - 100, 'NONE') . ' ' . d[1]
[?25l:  [?12l[?25h:" delete odd items, checking value, one intentionally wrong
[?25l:  [?12l[?25h:let d[33] = 999
[?25l:  [?12l[?25h:let i = 1
[?25l:  [?12l[?25h:while i < 1500
[?25l:    [?12l[?25h: if d[i] != 3000 - i
[?25l:      [?12l[?25h:  $put =i . '=' . d[i]
[?25l:      [?12l[?25h: else
[?25l:      [?12l[?25h:  unlet d[i]
[?25l:      [?12l[?25h: endif
[?25l:    [?12l[?25h: let i += 2
[?25l:    [?12l[?25h:endwhile
[?25l:  [?12l[?25h:$put =string(d)  " must be almost empty now
[?25l:  [?12l[?25h:unlet d
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Dictionary function
[?25l:  [?12l[?25h:let dict = {}
[?25l:  [?12l[?25h:func dict.func(a) dict
[?25l:    [?12l[?25h:  $put =a:a . len(self.data)
[?25l:    [?12l[?25h:endfunc
[?25l:    [?12l[?25h:let dict.data = [1,2,3]
[?25l:    [?12l[?25h:call dict.func("len: ")
[?25l:    [?12l[?25h:let x = dict.func("again: ")
[?25l:    [?12l[?25h:try
[?25l:      [?12l[?25h:  let Fn = dict.func
[?25l:      [?12l[?25h:  call Fn('xxx')
[?25l:      [?12l[?25h:catch
[?25l:      [?12l[?25h:  $put =v:exception[:15]
[?25l:      [?12l[?25h:endtry
[?25l:    [?12l[?25h:" 
[?25l:    [?12l[?25h:" Function in script-local List or Dict
[?25l:    [?12l[?25h:let g:dict = {}
[?25l:    [?12l[?25h:function g:dict.func() dict
[?25l:      [?12l[?25h:  $put ='g:dict.func'.self.foo[1].self.foo[0]('asdf')
[?25l:      [?12l[?25h:endfunc
[?25l:      [?12l[?25h:let g:dict.foo = ['-', 2, 3]
[?25l:      [?12l[?25h:call insert(g:dict.foo, function('strlen'))
[?25l:      [?12l[?25h:call g:dict.func()
[?25l:      [?12l[?25h:" 
[?25l:      [?12l[?25h:" Nasty: remove func from Dict that's being called (works)
[?25l:      [?12l[?25h:let d = {1:1}
[?25l:      [?12l[?25h:func d.func(a)
[?25l:[8C[?12l[?25h:  return "a:". a:a
[?25l:[8C[?12l[?25h:endfunc
[?25l:[8C[?12l[?25h:$put =d.func(string(remove(d, 'func')))
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" Nasty: deepcopy() dict that refers to itself (fails when noref used
[23;80H)[24;1H
[?25l:[8C[?12l[?25h:let d = {1:1, 2:2}
[?25l:[8C[?12l[?25h:let l = [4, d, 6]
[?25l:[8C[?12l[?25h:let d[3] = l
[?25l:[8C[?12l[?25h:let dc = deepcopy(d)
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let dc = deepcopy(d, 1)
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put =v:exception[:14]
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:let l2 = [0, l, l, 3]
[?25l:[8C[?12l[?25h:let l[1] = l2
[?25l:[8C[?12l[?25h:let l3 = deepcopy(l2)
[?25l:[8C[?12l[?25h:$put ='same list: ' . (l3[1] is l3[2])
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" Locked variables
[?25l:[8C[?12l[?25h:for depth in range(5)
[?25l:[10C[?12l[?25h:  $put ='depth is ' . depth
[?25l:[10C[?12l[?25h:  for u in range(3)
[?25l:[12C[?12l[?25h:    unlet l
[?25l:[12C[?12l[?25h:    let l = [0, [1, [2, 3]], {4: 5, 6: {7: 8}}]
[?25l:[12C[?12l[?25h:    exe "lockvar " . depth . " l"
[?25l:[12C[?12l[?25h:    if u == 1
[?25l:[14C[?12l[?25h:      exe "unlockvar l"
[?25l:[14C[?12l[?25h:    elseif u == 2
[?25l:[14C[?12l[?25h:      exe "unlockvar " . depth . " l"
[?25l:[14C[?12l[?25h:    endif
[?25l:[12C[?12l[?25h:    let ps = islocked("l").islocked("l[1]").islocked("l[1][1]").i
[23;80Hs[24;1Hlocked("l[1][1][0]").'-'.islocked("l[2]").islocked("l[2]['6']").islocked("l[2][
[23;80H'[24;1H6'][7]")
[?25l:[12C[?12l[?25h:    $put =ps
[?25l:[12C[?12l[?25h:    let ps = ''
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[1][1][0] = 99
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[1][1] = [99]
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[1] = [99]
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[2]['6'][7] = 99
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[2][6] = {99: 99}
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l[2] = {99: 99}
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    try
[?25l:[14C[?12l[?25h:      let l = [99]
[?25l:[14C[?12l[?25h:      let ps .= 'p'
[?25l:[14C[?12l[?25h:    catch
[?25l:[14C[?12l[?25h:      let ps .= 'F'
[?25l:[14C[?12l[?25h:    endtry
[?25l:[12C[?12l[?25h:    $put =ps
[?25l:[12C[?12l[?25h:  endfor
[?25l:[10C[?12l[?25h:endfor
[?25l:[8C[?12l[?25h:" :lockvar/islocked() triggering script autoloading
[?25l:[8C[?12l[?25h:set rtp+=./sautest
[?25l:[8C[?12l[?25h:lockvar g:footest#x
[?25l:[8C[?12l[?25h:unlockvar g:footest#x
[?25l:[8C[?12l[?25h:$put ='locked g:footest#x:'.islocked('g:footest#x')
[?25l:[8C[?12l[?25h:$put ='exists g:footest#x:'.exists('g:footest#x')
[?25l:[8C[?12l[?25h:$put ='g:footest#x: '.g:footest#x
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" a:000 function argument
[?25l:[8C[?12l[?25h:" first the tests that should fail
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let a:000 = [1, 2]
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put ='caught a:000'
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let a:000[0] = 9
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put ='caught a:000[0]'
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let a:000[2] = [9, 10]
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put ='caught a:000[2]'
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let a:000[3] = {9: 10}
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put ='caught a:000[3]'
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:" now the tests that should pass
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  let a:000[2][1] = 9
[?25l:[10C[?12l[?25h:  call extend(a:000[2], [5, 6])
[?25l:[10C[?12l[?25h:  let a:000[3][5] = 8
[?25l:[10C[?12l[?25h:  let a:000[3]['a'] = 12
[?25l:[10C[?12l[?25h:  $put =string(a:000)
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put ='caught ' . v:exception
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" reverse(), sort(), uniq()
[?25l:[8C[?12l[?25h:let l = ['-0', 'A11', 2, 2, 'xaaa', 4, 'foo', 'foo6', 'foo', [0, 1, 2
[23;80H][24;1H, 'x8', [0, 1, 2], 1.5]
[?25l:[8C[?12l[?25h:$put =string(uniq(copy(l)))
[?25l:[8C[?12l[?25h:$put =string(reverse(l))
[?25l:[8C[?12l[?25h:$put =string(reverse(reverse(l)))
[?25l:[8C[?12l[?25h:$put =string(sort(l))
[?25l:[8C[?12l[?25h:$put =string(reverse(sort(l)))
[?25l:[8C[?12l[?25h:$put =string(sort(reverse(sort(l))))
[?25l:[8C[?12l[?25h:$put =string(uniq(sort(l)))
[?25l:[8C[?12l[?25h:let l=[7, 9, 'one', 18, 12, 22, 'two', 10.0e-16, -1, 'three', 0xff, 0
[23;80H.[24;1H22, 'four']
[?25l:[8C[?12l[?25h:$put =string(sort(copy(l), 'n'))
[?25l:[8C[?12l[?25h:let l=[7, 9, 18, 12, 22, 10.0e-16, -1, 0xff, 0, -0, 0.22, 'bar', 'BAR
[23;80H'[24;1H, 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', {}, []]
[?25l:[8C[?12l[?25h:$put =string(sort(copy(l), 1))
[?25l:[8C[?12l[?25h:$put =string(sort(copy(l), 'i'))
[?25l:[8C[?12l[?25h:$put =string(sort(copy(l)))
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" splitting a string to a List
[?25l:[8C[?12l[?25h:$put =string(split('  aa  bb '))
[?25l:[8C[?12l[?25h:$put =string(split('  aa  bb  ', '\W\+', 0))
[?25l:[8C[?12l[?25h:$put =string(split('  aa  bb  ', '\W\+', 1))
[?25l:[8C[?12l[?25h:$put =string(split('  aa  bb  ', '\W', 1))
[?25l:[8C[?12l[?25h:$put =string(split(':aa::bb:', ':', 0))
[?25l:[8C[?12l[?25h:$put =string(split(':aa::bb:', ':', 1))
[?25l:[8C[?12l[?25h:$put =string(split('aa,,bb, cc,', ',\s*', 1))
[?25l:[8C[?12l[?25h:$put =string(split('abc', '\zs'))
[?25l:[8C[?12l[?25h:$put =string(split('abc', '\zs', 1))
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" compare recursively linked list and dict
[?25l:[8C[?12l[?25h:let l = [1, 2, 3, 4]
[?25l:[8C[?12l[?25h:let d = {'1': 1, '2': l, '3': 3}
[?25l:[8C[?12l[?25h:let l[1] = d
[?25l:[8C[?12l[?25h:$put =(l == l)
[?25l:[8C[?12l[?25h:$put =(d == d)
[?25l:[8C[?12l[?25h:$put =(l != deepcopy(l))
[?25l:[8C[?12l[?25h:$put =(d != deepcopy(d))
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" compare complex recursively linked list and dict
[?25l:[8C[?12l[?25h:let l = []
[?25l:[8C[?12l[?25h:call add(l, l)
[?25l:[8C[?12l[?25h:let dict4 = {"l": l}
[?25l:[8C[?12l[?25h:call add(dict4.l, dict4)
[?25l:[8C[?12l[?25h:let lcopy = deepcopy(l)
[?25l:[8C[?12l[?25h:let dict4copy = deepcopy(dict4)
[?25l:[8C[?12l[?25h:$put =(l == lcopy)
[?25l:[8C[?12l[?25h:$put =(dict4 == dict4copy)
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" Pass the same List to extend()
[?25l:[8C[?12l[?25h:let l = [1, 2, 3, 4, 5]
[?25l:[8C[?12l[?25h:call extend(l, l)
[?25l:[8C[?12l[?25h:$put =string(l)
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" Pass the same Dict to extend()
[?25l:[8C[?12l[?25h:let d = { 'a': {'b': 'B'}}
[?25l:[8C[?12l[?25h:call extend(d, d)
[?25l:[8C[?12l[?25h:$put =string(d)
[?25l:[8C[?12l[?25h:"
[?25l:[8C[?12l[?25h:" Pass the same Dict to extend() with "error"
[?25l:[8C[?12l[?25h:try
[?25l:[10C[?12l[?25h:  call extend(d, d, "error")
[?25l:[10C[?12l[?25h:catch
[?25l:[10C[?12l[?25h:  $put =v:exception[:15] . v:exception[-1:-1]
[?25l:[10C[?12l[?25h:endtry
[?25l:[8C[?12l[?25h:$put =string(d)
[?25l:[8C[?12l[?25h:endfun[27m[m[H[2J[?25l[1;1H:$put =string(d)
:endfun
:"
:call Test(1, 2, [3, 4], {5: 6})  " This may take a while
:"
:delfunc Test
:unlet dict
:call garbagecollect(1)
:"
:" test for patch 7.3.637
:let a = 'No error caught'
:try|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
o[34m^R[m=a[34m^M^[[m:"
:lang C
:redir => a
:try|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry
:redir END
o[34m^R[m=a[34m^M^[[m:"
:"
:/^start:/,$wq! test.out
ENDTEST

start:[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall Test(1, 2, [3, 4], {5: 6})  " This may take a while[?25l[1m[37m[41mError detected while processing function Test:[m[24;47H[K[24;1H
[33mline   87:[m
[1m[37m[41mE684: list index out of range: 1[m
[33mline  102:[m
[1m[37m[41mE684: list index out of range: 2[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[5L[1;1H['bar', 'BAR', 'Bar', 'Foo', 'FOO', 'foo', 'FOOBAR', -1, 0, 0, 0.22, 1.0e-15, 122[2;1H, 18, 22, 255, 7, 9, [], {}]
['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122[4;1H, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb']
['aa', 'bb'][6;13H[K[7;1H['', 'aa', 'bb', '']
['', '', 'aa', '', 'bb', '', '']
['aa', '', 'bb']
['', 'aa', '', 'bb', ''][10;25H[K[11;1H['aa', '', 'bb', 'cc', '']
['a', 'b', 'c'][12;16H[K[13;1H['', 'a', '', 'b', '', 'c', '']
1[14;2H[K[15;1H1[15;2H[K[16;1H0[16;2H[K[17;1H0[17;2H[K[18;1H1[18;2H[K[19;1H1[19;2H[K[20;1H[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
{'a': {'b': 'B'}}
Vim(call):E737: a
{'a': {'b': 'B'}}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hdelfunc Test[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet dict[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall garbagecollect(1)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for patch 7.3.637[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet a = 'No error caught'[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry|foldopen|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H=[?12l[?25ha[?25l[1;23r[1;1H[2M[1;24r[22;1HVim(foldopen):E490:
[1m[34m~                                                                               [m[24;1H[K[22;19H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlang C[?25l[22;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir => a[?25l[22;19H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry|foobar|catch|let a = matchstr(v:exception,'^[^ ]*')|endtry[?25l[1m[37m[41mError detected while processing :[m[24;34H[K[24;1H
[1m[37m[41mE492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'[m
[23;80H[1m[37m[41m)[24;1H|endtry[m
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir END[?25l[1;1H[3L[1;1H['BAR', 'Bar', 'FOO', 'FOOBAR', 'Foo', 'bar', 'foo', -1, 0, 0, 0.22, 1.0e-15, 122[2;1H, 18, 22, 255, 7, 9, [], {}]
['aa', 'bb'][24;1H[K[22;19H[?12l[?25h[?25l

=[?12l[?25ha[?25l[1;23r[1;1H[4M[1;24r[19;1H[K[21;1HError detected while processing :
E492: Not an editor command: foobar|catch|let a = matchstr(v:exception,'^[^ ]*'))[23;1H|endtry[1;23r[23;1H
[1;24r[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start:/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 132 lines, 2870 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test56.failed test.ok test.out X* viminfo
cp test56.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test56.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test56.in" 21 lines, 457 characters[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>delfunn[21;1Hc <SID>DoNothing<bar>delfunc <SID>DoLast<cr>
end:
[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for script-local function.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 7 lines, 120 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp viminfo+=nviminfo[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start:/+1,/^end:/-1w! Xtest.vim[?25l"Xtest.vim" [24;13H[K[24;13H[New] 7L, 251C written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsource Xtest.vim[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:call <SNR>3_DoNothing()|call <SNR>3_DoLast()|delfunc <SNR>3_DoNothing|delfunc 
[23;80H<[24;1HSNR>3_DoLast[32mPress ENTER or type command to continue[?12l[?25h[m[1;1H[L[?25l[1;1HTest for script-local function.     vim: set ft=vim :[23;1Hnothing line[23;13H[K[24;1H[K[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h$-1,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New] 2L, 23C written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test57.failed test.ok test.out X* viminfo
cp test57.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test57.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test57.in" 500 lines, 3666 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for :sort command.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 30 lines, 842 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[11M[1;24r[13;1H:/^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[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^t01:/+1,/^t02/-1sort[?25l[1;23r[1;1H[2M[1;24r[22;1Ht01: alphebetical[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t02:/+1,/^t03/-1sort n[?25l[27m[m[H[2J[1;1Ha321
ab
abc
b123
b321
b321
b321b
b322b
c123d
c321d
t02: numeric
abc
ab
a[18;1H-24
x-22
0
a122
a123
b123[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t03:/+1,/^t04/-1sort x[?25l[1;23r[1;1H[10M[1;24r[14;1Hc123d
 123b
a321
b321
c321d
b321
b321b
b322b
t03: hexadecimal[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t04:/+1,/^t05/-1sort u[?25l[27m[m[H[2J[1;1Ha122
a123
a321
b123
b321
b321
b321b
b322b
c123d
c321d
t04: alpha, unique

 123b
a
a122
a123
a321
ab
abc
b123
b321
b321b
b322b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t05:/+1,/^t06/-1sort![?25l[1;23r[1;1H[4M[1;24r[20;1Hc123d
c321d
t05: alpha, reverse
c321d[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t06:/+1,/^t07/-1sort! n        [?25l[27m[m[H[2J[1;1Hb123
abc
ab
a321
a123
a122
a
 123b


t06: numeric, reverse
b322b
b321b
b321
c321d
b321
a321
 123b
c123d
b123
a123
a122[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t07:/+1,/^t08/-1sort! u[?25l[1;23r[1;1H[6M[1;24r[19;1Ha
ab
abc
t07: unique, reverse
c321d[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t08:/+1,/^t09/-1sort o         [?25l[27m[m[H[2J[1;1Hb321
b123
abc
ab
a321
a123
a122
a
 123b

t08: octal
abc
ab
a


a122
a123
b123
c123d
 123b
a321
b321[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t09:/+1,/^t10/-1sort! x        [?25l[1;23r[1;1H[6M[1;24r[18;1Hc321d
b321
b321b
b322b
t09: reverse, hexadecimal
c321d[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t10:/+1,/^t11/-1sort/./        [?25l[27m[m[H[2J[1;1Hb123
a321
a123
a122
 123b
abc
ab
a


t10: alpha, skip first character
a


a122
a123
b123
 123b
c123d
a321
b321
b321
b321b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t11:/+1,/^t12/-1sort/../       [?25l[1;23r[1;1H[6M[1;24r[18;1Hc321d
b322b
ab
abc
t11: alpha, skip first 2 characters
ab[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t12:/+1,/^t13/-1sort/../u[?25l[27m[m[H[2J[1;1Hb321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
abc
t12: alpha, unique, skip first 2 characters
ab
a

a321
b321
b321b
c321d
a122
b322b
a123
b123
 123b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t13:/+1,/^t14/-1sort/./n[?25l[1;23r[1;1H[4M[1;24r[20;1Hc123d
abc
t13: numeric, skip first character
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t14:/+1,/^t15/-1sort/./r[?25l[27m[m[H[2J[1;1Ha123
b123
c123d
 123b
a321
b321
c321d
b321
b321b
b322b
t14: alpha, sort on first character[14;2H123b
abc
ab
a
a321
a123
a122
b321
b123
b322b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t15:/+1,/^t16/-1sort/../r[?25l[1;23r[1;1H[6M[1;24r[18;1Hb321
b321b
c123d
c321d
t15: alpha, sort on first 2 characters
a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t16:/+1,/^t17/-1sort/./rn[?25l[27m[m[H[2J[1;1Ha321
abc
ab
b123
b321
b322b
b321
b321b
c123d
c321d
t16: numeric, sort on first character
abc
ab
a
a321
a123
a122
b321
b123
c123d
 123b
c321d
b322b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t17:/+1,/^t18/-1sort/\d/[?25l[1;23r[1;1H[6M[1;24r[18;1Hb321
b321b


t17: alpha, skip past first digit
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t18:/+1,/^t19/-1sort/\d/r[?25l[27m[m[H[2J[1;1Hb321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
t18: alpha, sort on first digit
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t19:/+1,/^t20/-1sort/\d/n[?25l[1;23r[1;1H[6M[1;24r[18;1Hc321d
b322b
b321
b321b
t19: numeric, skip past first digit
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t20:/+1,/^t21/-1sort/\d/rn[?25l[27m[m[H[2J[1;1Hb321
c321d
b321
b321b
a122
b322b
a123
b123
c123d
 123b
t20: numeric, sort on first digit
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t21:/+1,/^t22/-1sort/\d\d/[?25l[1;23r[1;1H[6M[1;24r[18;1Hc321d
b322b
b321
b321b
t21: alpha, skip past first 2 digits
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t22:/+1,/^t23/-1sort/\d\d/n[?25l[27m[m[H[2J[1;1Hb321
b321
b321b
c321d
a122
b322b
a123
b123
 123b
c123d
t22: numeric, skip past first 2 digits
abc
ab
a


a321
b321
c321d
b321
b321b
a122
b322b[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t23:/+1,/^t24/-1sort/\d\d/x[?25l[1;23r[1;1H[6M[1;24r[18;1Ha123
b123
c123d
 123b
t23: hexadecimal, skip past first 2 digits
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t24:/+1,/^t25/-1sort/\d\d/r[?25l[27m[m[H[2J[1;1Hb321
b321
a122
a123
b123
b321b
c321d
b322b
 123b
c123d
t24: alpha, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t25:/+1,/^t26/-1sort/\d\d/rn[?25l[1;23r[1;1H[6M[1;24r[18;1Hc321d
b322b
b321
b321b
t25: numeric, sort on first 2 digits
abc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^t26:/+1,/^t27/-1sort/\d\d/rx[?25l[27m[m[H[2J[1;1Ha122
b123
c123d
 123b
a321
b321
c321d
b322b
b321
b321b
t26: hexadecimal, sort on first 2 digits
abc
ab
a


a123
a122
b123
c123d
 123b
a321
b321[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^t27:/+1,/^t28/-1sort no[?25l[1m[37m[41mE474: Invalid argument[m[24;23H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^t01:/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 459 lines, 2739 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test58.failed test.ok test.out X* viminfo
cp test58.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test58.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test58.in" 639 lines, 10884 characters[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
iasd[34m^[[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for spell checking.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 109 lines, 2556 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: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àáâãäåæçèéêëìíîïðñòò[23;1HóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Don't want to depend on the locale from the environment[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=latin1[?25l[27m[m[H[2J[1;1H: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àáâãäåæçèéêëìíîïðñòò[23;1HóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25he![?25l"test58.in" 639 lines, 10884 characters[1;1HTests for spell checking.     vim: set ft=vim :[2;1H[K[3;1HSTARTTEST
:so small.vim
:"[5;3H[K[6;4HDon't want to depend on the locale from the environment
:set enc=latin1[7;17H[K[8;2He![8;4H[K[9;2H"[9;3H[K[10;4HCheck using z= in new buffer (crash fixed by patch 7.4a.028).
:set maxmem=512 spell[11;22H[K[12;1Hiasd[34m^[[mz=:"
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=[16;17H[K[17;3H$put =''
  $put ='test '. a:aff . '-' . a:dic[18;37H[K[19;1H  " 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[22;23H[K[23;1H  " use that spell file[23;24H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check using z= in new buffer (crash fixed by patch 7.4a.028).[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset maxmem=512 spell[?25l[1;31H[44mvim[m[9C[45mvim[m

[41mSTARTTEST[m[4;11H[45mvim[m[7;10H[41mlatin1
[m:[41me[10;16Hz[11;6Hmaxmem
iasd[2Cz[14;22Haff[m/.[41mdic
[m:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[16;7Hspellfile[m[18;18H[44ma[m:[41maff[m[9C[44ma[m:[41mdic[19;17Hspl[14Cdic[m and .[41maff
[m  [41mexe[m[10C[44ma[m:[41maff[m . '[41maffstart[m[10C[44ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff
[m  [41mexe[m[10C[44ma[m:[41mdic[m . '[41mdicstart[m[10C[44ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic
[m  [41mmkspell[m! [41mXtest[m [41mXtest[1;1H[?12l[?25h[?25lasdTests[m for spell checking.     [44mvim[m: set ft=[45mvim[m :[1;3H[?12l[?25h[?25l[24;1HChange "asdTests" to:
 1 "Acid tests"
 2 "Attests"
 3 "Ass Tests"
 4 "Asa Tests"
 5 "Ase Tests"
 6 "As Tests"
 7 "Sad Tests"
 8 "Ads Tests"
 9 "As tests"
10 "As detests"
11 "Add Tests"
12 "Aid Tests"
13 "Ash Tests"
14 "Ad Tests"
15 "And Tests"
16 "Ask Tests"
17 "Asp Tests"
18 "USD Tests"
19 "Astutest"
20 "Sadists"
21 "Asst Tests"
22 "Assad Tests"
Type number and <Enter> or click with mouse (empty cancels): [?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[27m[m[H[2J[1;1H[41masdTests[m for spell checking.     [44mvim[m: set ft=[45mvim[m :

[41mSTARTTEST[m
:so small.[45mvim[m
:"
:" Don't want to depend on the locale from the environment
:set enc=[41mlatin1[m
:[41me[m!
:"
:" Check using [41mz[m= in new buffer (crash fixed by patch 7.4a.028).
:set [41mmaxmem[m=512 spell
[41miasd[m[34m^[[m[41mz[m=:"
:"
:" Function to test .[41maff[m/.[41mdic[m with list of good and bad words.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  set [41mspellfile[m=
  $put =''
  $put ='test '. [44ma[m:[41maff[m . '-' . [44ma[m:[41mdic[m
  " Generate a .[41mspl[m file from a .[41mdic[m and .[41maff[m file.
  [41mexe[m '1;/^' . [44ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [44ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [44ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [44ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " use that spell file[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Function to test .aff/.dic with list of good and bad words.[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunc TestOne(aff, dic)[?25l
:  [?12l[?25h  set spellfile=
[?25l:  [?12l[?25h  $put =''
[?25l:  [?12l[?25h  $put ='test '. a:aff . '-' . a:dic
[?25l:  [?12l[?25h  " Generate a .spl file from a .dic and .aff file.
[?25l:  [?12l[?25h  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
[?25l:  [?12l[?25h  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
[?25l:  [?12l[?25h  mkspell! Xtest Xtest
[?25l:  [?12l[?25h  " use that spell file
[?25l:  [?12l[?25h  set spl=Xtest.latin1.spl spell
[?25l:  [?12l[?25h  " list all valid words
[?25l:  [?12l[?25h  spelldump
[?25l:  [?12l[?25h  %yank
[?25l:  [?12l[?25h  quit
[?25l:  [?12l[?25h  $put
[?25l:  [?12l[?25h  $put ='-------'
[?25l:  [?12l[?25h  " find all bad words and suggestions for them
[?25l:  [?12l[?25h  exe '1;/^' . a:aff . 'good:'
[?25l:  [?12l[?25h  normal 0f:]s
[?25l:  [?12l[?25h  let prevbad = ''
[?25l:  [?12l[?25h  while 1
[?25l:    [?12l[?25h    let [bad, a] = spellbadword()
[?25l:    [?12l[?25h    if bad == '' || bad == prevbad || bad == 'badend'
[?25l:      [?12l[?25h      break
[?25l:      [?12l[?25h    endif
[?25l:    [?12l[?25h    let prevbad = bad
[?25l:    [?12l[?25h    let lst = spellsuggest(bad, 3)
[?25l:    [?12l[?25h    normal mm
[?25l:    [?12l[?25h    $put =bad
[?25l:    [?12l[?25h    $put =string(lst)
[?25l:    [?12l[?25h    normal `m]s
[?25l:    [?12l[?25h  endwhile
[?25l:  [?12l[?25hendfunc[27m[m[H[2J[?25l[1;1H[41masdTests[m for spell checking.     [44mvim[m: set ft=[45mvim[m :

[41mSTARTTEST[m
:so small.[45mvim[m
:"
:" Don't want to depend on the locale from the environment
:set enc=[41mlatin1[m
:[41me[m!
:"
:" Check using [41mz[m= in new buffer (crash fixed by patch 7.4a.028).
:set [41mmaxmem[m=512 spell
[41miasd[m[34m^[[m[41mz[m=:"
:"
:" Function to test .[41maff[m/.[41mdic[m with list of good and bad words.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  set [41mspellfile[m=
  $put =''
  $put ='test '. [44ma[m:[41maff[m . '-' . [44ma[m:[41mdic[m
  " Generate a .[41mspl[m file from a .[41mdic[m and .[41maff[m file.
  [41mexe[m '1;/^' . [44ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [44ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [44ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [44ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " use that spell file[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('1', '1')[?25l"Xtest.aff" [24;13H[K[24;13H[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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =soundfold('goobledygoook')[?25l[1;1H[19L[1;1Hthe end
uk
wrong
-------
[41mbad[m
['put', 'uk', 'OK']
[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test'][20;22H[K[21;1H[41mth[m[21;4H[K[22;1H['put', 'uk', 'test'][22;22H[K[23;1H[41mgebletegek[m[23;11H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('kóopërÿnôven')[?25l[1;23r[23;1H
[1;24r[23;1H[41mkepereneven[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('oeverloos gezwets edale')[?25l[1;23r[23;1H
[1;24r[23;1H[41meverles[m [41mgesvets[m [41metele[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" and now with SAL instead of SOFO items; test automatic reloading[?25l[23;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H[41masdTests[m [41mfor[m [41mspell[m [41mchecking[m.     [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:"
:" [41mDon't[m [41mwant[m [41mto[m [41mdepend[m [41mon[m [41mthe[m [41mlocale[m [41mfrom[m [41mthe[m [41menvironment[m
:[41mset[m [41menc[m=[41mlatin1[m
:[41me[m!
:"
:" [41mCheck[m [41musing[m [41mz[m= [41min[m [41mnew[m [41mbuffer[m ([41mcrash[m [41mfixed[m [41mby[m [41mpatch[m 7.4[41ma[m.028).
:[41mset[m [41mmaxmem[m=512 [41mspell
iasd[m[34m^[[m[41mz[m=:"
:"
:" [41mFunction[m [41mto[m test .[41maff[m/.[41mdic[m [41mwith[m [41mlist[m [41mof[m [41mgood[m [41mand[m [41mbad[m [41mwords[m.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  [41mset[m [41mspellfile[m=
  $put =''
  $put ='test '. [41ma[m:[41maff[m . '-' . [41ma[m:[41mdic[m
  " [41mGenerate[m [41ma[m .[41mspl[m [41mfile[m [41mfrom[m [41ma[m .[41mdic[m [41mand[m .[41maff[m [41mfile[m.
  [41mexe[m '1;/^' . [41ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [41ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [41ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [41ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " [41muse[m [41mthat[m [41mspell[m [41mfile[1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff[?25l"Xtest.aff" [24;13H[K[24;13H151 lines, 3412 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmkspell! Xtest Xtest[?25lReading affix file Xtest.aff ...
Reading dictionary file Xtest.dic ...
line      2, word      0 - testCompressing word tree...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =soundfold('goobledygoook')[?25l[1;1H[14L[1;1H-------
[41mbad[m
['put', 'uk', 'OK']
[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m[16;4H[K[17;1H['put', 'uk', 'test']
[41mthe[m[18;4H[K[19;1H['put', 'uk', 'test'][19;22H[K[20;1H[41mgebletegek[m[20;11H[K[21;1H[41mkepereneven[m[21;12H[K[22;1H[41meverles[m [41mgesvet[m[1C [41metele[m[22;22H[K[23;1H[41mkbltykk[m[23;9H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('kóopërÿnôven')[?25l[1;23r[23;1H
[1;24r[23;1H[41mkprnfn[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('oeverloos gezwets edale')[?25l[1;23r[23;1H
[1;24r[23;1H*[41mfls[m [41mkswts[m [41mtl[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" also use an addition file[?25l[23;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H[41masdTests[m [41mfor[m [41mspell[m [41mchecking[m.     [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:"
:" [41mDon't[m [41mwant[m [41mto[m [41mdepend[m [41mon[m [41mthe[m [41mlocale[m [41mfrom[m [41mthe[m [41menvironment[m
:[41mset[m [41menc[m=[41mlatin1[m
:[41me[m!
:"
:" [41mCheck[m [41musing[m [41mz[m= [41min[m [41mnew[m [41mbuffer[m ([41mcrash[m [41mfixed[m [41mby[m [41mpatch[m 7.4[41ma[m.028).
:[41mset[m [41mmaxmem[m=512 [41mspell
iasd[m[34m^[[m[41mz[m=:"
:"
:" [41mFunction[m [41mto[m test .[41maff[m/.[41mdic[m [41mwith[m [41mlist[m [41mof[m [41mgood[m [41mand[m [41mbad[m [41mwords[m.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  [41mset[m [41mspellfile[m=
  $put =''
  $put ='test '. [41ma[m:[41maff[m . '-' . [41ma[m:[41mdic[m
  " [41mGenerate[m [41ma[m .[41mspl[m [41mfile[m [41mfrom[m [41ma[m .[41mdic[m [41mand[m .[41maff[m [41mfile[m.
  [41mexe[m '1;/^' . [41ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [41ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [41ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [41ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " [41muse[m [41mthat[m [41mspell[m [41mfile[1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h/^addstart/+1,/^addend/-1w! Xtest.latin1.add[?25l"Xtest.latin1.add" [24;20H[K[24;20H[New File] 3 lines, 38 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmkspell! Xtest.latin1.add.spl Xtest.latin1.add[?25lReading word file Xtest.latin1.add ...[24;39H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset spellfile=Xtest.latin1.add[?25l[1;1H[6L[1;1H[41masdTests[m [41mfor[m [41mspell[m [41mchecking[m.     [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:"
:" [41mDon't[m [41mwant[m [41mto[m [41mdepend[m [41mon[m [41mthe[m [41mlocale[m [41mfrom[m [41mthe[m [41menvironment[m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/[?12l[?25h^test2:[?25l[27m[m[H[2J[2;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
elequint/2
elekwint/3
[41maddend

test2[m:
elequint test elekwint test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[12;1H[?12l[?25h[13;29H[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_us.latin1.spl[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[2;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
[46melequint[m/2
[46melekwint[m/3
[41maddend

test2[m:
[46melequint[m test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[m
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[?12l[?25h[?25l[27m[m[H[2J[1;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
[46melequint[m/2
[46melekwint[m/3
[41maddend

test2[m:
[46melequint[m test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[12;1H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint
elekwint[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_gb.latin1.spl[?25l[22;1Helequint
[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[2;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
elequint/2
[46melekwint[m/3
[41maddend

test2[m:
elequint test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[m
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[13;15H[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
elequint
[46melekwint
elekwint[?12l[?25h[?25l[27m[m[H[2J[1;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
elequint/2
[46melekwint[m/3
[41maddend

test2[m:
elequint test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[12;15H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
elequint
[46melekwint
elekwint[m
[41melekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_nz.latin1.spl[?25l[20;1H[46melequint[m
elekwint
elekwint
[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[2;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
[46melequint[m/2
elekwint/3
[41maddend

test2[m:
[46melequint[m test elekwint test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[m
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[m
elekwint
elekwint
[41melekwent[m
[46melequint[?12l[?25h[?25l[27m[m[H[2J[1;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz[m
[46melequint[m/2
elekwint/3
[41maddend

test2[m:
[46melequint[m test elekwint test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[12;1H[?12l[?25h[28C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[m
elekwint
elekwint
[41melekwent[m
[46melequint[m
[41melekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_ca.latin1.spl[?25l[18;1H[41melequint
elekwint
elekwint

elequint
[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[2;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz
elequint[m/2
[41melekwint[m/3
[41maddend

test2[m:
[41melequint[m test [41melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[m
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint[?12l[?25h[?25l[27m[m[H[2J[1;1H2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend

addstart[m
/[41mregions[m=[41musgbnz
elequint[m/2
[41melekwint[m/3
[41maddend

test2[m:
[41melequint[m test [41melekwint[m test [41melekwent[m [41masdf[m

Test [41mrules[m [41mfor[m [41mcompounding[m.

3[41maffstart
SET[m [41mISO8859-1

COMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[12;1H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1Htest
['Test', 'testn', 'testen']
[41mdéôl[m
['deol', 'déôr', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint[?12l[?25h[?25l
[m:[?12l[?25hunlet str a[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Postponed prefixes[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('2', '1')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[12L[1;1H[41mMAP[m [41meèéêë
MAP[m [41miìíîï
MAP[m [41moòóôõö
MAP[m [41muùúûü
MAP[m [41mnñ
MAP[m [41mcç
MAP[m [41myÿý
MAP[m [41msß[m
2[41maffend[m

2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdéôl
badend[m[14;1H[K[15;1H[41maddstar[m
/[41mregions[m=[41musgbnz
elequ[m[3C/2[18;9H/3
[41maddend[m[19;7H[K[20;1H[K[21;1H[41mtest2[m:[21;7H[K[22;10Htest [41melekwint[m test [41melekwent[m [41masdf[m[23;1H[K[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" Compound words[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('3', '3')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('4', '4')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('5', '5')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('6', '6')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('7', '7')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[27m[m[H[2J[1;1H1234
[41mmee[m/391,111,9999
bar/17,61003,123
lead/2
tail/123
[41mmiddle[m/77,1
7[41mdicend[m

7[41mgood[m: meea1 meeaé bar prebar barmeat prebarmeat  leadprebar[10;7Hlead tail leadtail  leadmiddletail
[41mbad[m: [41mmee[m [41mmeea2[m [41mprabar[m [41mprobarmaat[m [41mmiddle[m [41mleadmiddle[m [41mmiddletail[m [41mtaillead[12;9Hleadprobar
badend

Test[m [41mNOSLITSUGS[m

8[41maffstart
SET[m [41mISO8859[m-1

[41mNOSPLITSUGS[m
8[41maffend[m

8[41mdicstart[13;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h" NOSLITSUGS[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('8', '8')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[11L[1;1H[41mNOSPLITSUGS[m
8[41maffend[m

8[41mdicstart[m
1234
foo
bar
faabar
8[41mdicend[m

8[41mgood[m: foo bar faabar
[41mbad[m: [41mfoobar[m [41mbarfoo[m[15;1H[K[16;1H[41mtest[m [41moutput[m:[17;1H[K[18;1H[41mtest[m 1-1[18;9H[K[19;1H# [41mfile[m: [41mXtest[m.[41mlatin1[m.[41mspl
Comment[m[20;8H[K[21;1H[41mdeol[m[21;5H[K[22;1H[41mdéôr
input[m[23;6H[K[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" clean up for valgrind[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc TestOne[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset spl= enc=latin1[?25l[27m[m[H[2J[1;1HNOSPLITSUGS
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[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[27m[m[H[2J[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
iasd[34m^[[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[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^test output:/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 283 lines, 3793 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test59.failed test.ok test.out X* viminfo
cp test59.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test59.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test59.in" 626 lines, 10897 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 106 lines, 2520 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: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àáâãäåæçèéêëìíîïðñòò[23;1HóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Don't want to depend on the locale from the environment.  The .aff and .dic[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" text is in latin1, the test text is utf-8.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=latin1[?25l[27m[m[H[2J[1;1H: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àáâãäåæçèéêëìíîïðñòò[23;1HóôõöøùúûüýþßÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ¿[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25he![?25l"test59.in" 626 lines, 10897 characters[1;1HTests for spell checking with 'encoding' set to "utf-8".  vim: set ft=vim :[2;1H[K[3;1HSTARTTEST[3;10H[K[4;2Hso small.vim[4;14H[K[5;2Hso mbyte.vim[5;14H[K[7;4HDon't want to depend on the locale from the environment.  The .aff and .dic
:" text is in latin1, the test text is utf-8.[9;6Henc=latin1[9;16H[K[10;2He!
:set enc=utf-8[11;15H[K[12;1H:set fenc=
:"
:" Function to test .aff/.dic with list of good and bad words.
:func TestOne(aff, dic)
  set spellfile=[16;17H[K[17;3H$put =''
  $put ='test '. a:aff . '-' . a:dic[18;37H[K[19;1H  " 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[22;23H[K[23;1H  " use that spell file[23;24H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=utf-8[?25l[27m[m[H[2J[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[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset fenc=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Function to test .aff/.dic with list of good and bad words.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunc TestOne(aff, dic)[?25l
:  [?12l[?25h  set spellfile=
[?25l:  [?12l[?25h  $put =''
[?25l:  [?12l[?25h  $put ='test '. a:aff . '-' . a:dic
[?25l:  [?12l[?25h  " Generate a .spl file from a .dic and .aff file.
[?25l:  [?12l[?25h  exe '1;/^' . a:aff . 'affstart/+1,/^' . a:aff . 'affend/-1w! Xtest.aff'
[?25l:  [?12l[?25h  exe '1;/^' . a:dic . 'dicstart/+1,/^' . a:dic . 'dicend/-1w! Xtest.dic'
[?25l:  [?12l[?25h  mkspell! Xtest Xtest
[?25l:  [?12l[?25h  " use that spell file
[?25l:  [?12l[?25h  set spl=Xtest.utf-8.spl spell
[?25l:  [?12l[?25h  " list all valid words
[?25l:  [?12l[?25h  spelldump
[?25l:  [?12l[?25h  %yank
[?25l:  [?12l[?25h  quit
[?25l:  [?12l[?25h  $put
[?25l:  [?12l[?25h  $put ='-------'
[?25l:  [?12l[?25h  " find all bad words and suggestions for them
[?25l:  [?12l[?25h  exe '1;/^' . a:aff . 'good:'
[?25l:  [?12l[?25h  normal 0f:]s
[?25l:  [?12l[?25h  let prevbad = ''
[?25l:  [?12l[?25h  while 1
[?25l:    [?12l[?25h    let [bad, a] = spellbadword()
[?25l:    [?12l[?25h    if bad == '' || bad == prevbad || bad == 'badend'
[?25l:      [?12l[?25h      break
[?25l:      [?12l[?25h    endif
[?25l:    [?12l[?25h    let prevbad = bad
[?25l:    [?12l[?25h    let lst = spellsuggest(bad, 3)
[?25l:    [?12l[?25h    normal mm
[?25l:    [?12l[?25h    $put =bad
[?25l:    [?12l[?25h    $put =string(lst)
[?25l:    [?12l[?25h    normal `m]s
[?25l:    [?12l[?25h  endwhile
[?25l:  [?12l[?25hendfunc[27m[m[H[2J[?25l[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[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('1', '1')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =soundfold('goobledygoook')[?25l[1;1H[19L[1;1Hthe end
uk
wrong
-------
[41mbad[m
['put', 'uk', 'OK']
[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test'][20;22H[K[21;1H[41mthe[m[21;4H[K[22;1H['put', 'uk', 'test'][22;22H[K[23;1H[41mgebletegek[m[23;11H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('kÃ³opÃ«rÃ¿nÃ´ven')[?25l[1;23r[23;1H
[1;24r[23;1H[41mkepereneven[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('oeverloos gezwets edale')[?25l[1;23r[23;1H
[1;24r[23;1H[41meverles[m [41mgesvets[m [41metele[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" and now with SAL instead of SOFO items; test automatic reloading[?25l[23;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H[41mTests[m [41mfor[m [41mspell[m [41mchecking[m [41mwith[m '[41mencoding[m' [41mset[m [41mto[m "[41mutf-8[m".  [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:[41mso[m [41mmbyte[m.[41mvim[m
:"
:" [41mDon't[m [41mwant[m [41mto[m [41mdepend[m [41mon[m [41mthe[m [41mlocale[m [41mfrom[m [41mthe[m [41menvironment[m.  [41mThe[m .[41maff[m [41mand[m .[41mdic[m
:" [41mtext[m [41mis[m [41min[m [41mlatin1[m, [41mthe[m test [41mtext[m [41mis[m [41mutf-8[m.
:[41mset[m [41menc[m=[41mlatin1[m
:[41me[m!
:[41mset[m [41menc[m=[41mutf-8[m
:[41mset[m [41mfenc[m=
:"
:" [41mFunction[m [41mto[m test .[41maff[m/.[41mdic[m [41mwith[m [41mlist[m [41mof[m [41mgood[m [41mand[m [41mbad[m [41mwords[m.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  [41mset[m [41mspellfile[m=
  $put =''
  $put ='test '. [41ma[m:[41maff[m . '-' . [41ma[m:[41mdic[m
  " [41mGenerate[m [41ma[m .[41mspl[m [41mfile[m [41mfrom[m [41ma[m .[41mdic[m [41mand[m .[41maff[m [41mfile[m.
  [41mexe[m '1;/^' . [41ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [41ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [41ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [41ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " [41muse[m [41mthat[m [41mspell[m [41mfile[1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h/^affstart_sal/+1,/^affend_sal/-1w! Xtest.aff[?25l"Xtest.aff" [24;13H[K[24;13H153 lines, 3426 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmkspell! Xtest Xtest[?25lReading affix file Xtest.aff ...
Reading dictionary file Xtest.dic ...
line      2, word      0 - testCompressing word tree...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =soundfold('goobledygoook')[?25l[1;1H[14L[1;1H-------
[41mbad[m
['put', 'uk', 'OK']
[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m[16;4H[K[17;1H['put', 'uk', 'test']
[41mthe[m[18;4H[K[19;1H['put', 'uk', 'test'][19;22H[K[20;1H[41mgebletegek[m[20;11H[K[21;1H[41mkepereneven[m[21;12H[K[22;1H[41meverles[m [41mgesvet[m[1C [41metele[m[22;22H[K[23;1H[41mkbltykk[m[23;9H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('kÃ³opÃ«rÃ¿nÃ´ven')[?25l[1;23r[23;1H
[1;24r[23;1H[41mkprnfn[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =soundfold('oeverloos gezwets edale')[?25l[1;23r[23;1H
[1;24r[23;1H*[41mfls[m [41mkswts[m [41mtl[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" also use an addition file[?25l[23;1H[?12l[?25h[?25l[27m[m[H[2J[1;1H[41mTests[m [41mfor[m [41mspell[m [41mchecking[m [41mwith[m '[41mencoding[m' [41mset[m [41mto[m "[41mutf-8[m".  [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:[41mso[m [41mmbyte[m.[41mvim[m
:"
:" [41mDon't[m [41mwant[m [41mto[m [41mdepend[m [41mon[m [41mthe[m [41mlocale[m [41mfrom[m [41mthe[m [41menvironment[m.  [41mThe[m .[41maff[m [41mand[m .[41mdic[m
:" [41mtext[m [41mis[m [41min[m [41mlatin1[m, [41mthe[m test [41mtext[m [41mis[m [41mutf-8[m.
:[41mset[m [41menc[m=[41mlatin1[m
:[41me[m!
:[41mset[m [41menc[m=[41mutf-8[m
:[41mset[m [41mfenc[m=
:"
:" [41mFunction[m [41mto[m test .[41maff[m/.[41mdic[m [41mwith[m [41mlist[m [41mof[m [41mgood[m [41mand[m [41mbad[m [41mwords[m.
:[41mfunc[m [41mTestOne[m([41maff[m, [41mdic[m)
  [41mset[m [41mspellfile[m=
  $put =''
  $put ='test '. [41ma[m:[41maff[m . '-' . [41ma[m:[41mdic[m
  " [41mGenerate[m [41ma[m .[41mspl[m [41mfile[m [41mfrom[m [41ma[m .[41mdic[m [41mand[m .[41maff[m [41mfile[m.
  [41mexe[m '1;/^' . [41ma[m:[41maff[m . '[41maffstart[m/+1,/^' . [41ma[m:[41maff[m . '[41maffend[m/-1[41mw[m! [41mXtest[m.[41maff[m'
  [41mexe[m '1;/^' . [41ma[m:[41mdic[m . '[41mdicstart[m/+1,/^' . [41ma[m:[41mdic[m . '[41mdicend[m/-1[41mw[m! [41mXtest[m.[41mdic[m'
  [41mmkspell[m! [41mXtest[m [41mXtest[m
  " [41muse[m [41mthat[m [41mspell[m [41mfile[1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h/^addstart/+1,/^addend/-1w! Xtest.utf-8.add[?25l"Xtest.utf-8.add" [24;19H[K[24;19H[New File] 3 lines, 38 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmkspell! Xtest.utf-8.add.spl Xtest.utf-8.add[?25lReading word file Xtest.utf-8.add ...[24;38H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset spellfile=Xtest.utf-8.add[?25l[1;1H[6L[1;1H[41mTests[m [41mfor[m [41mspell[m [41mchecking[m [41mwith[m '[41mencoding[m' [41mset[m [41mto[m "[41mutf-8[m".  [41mvim[m: [41mset[m [41mft[m=[41mvim[m :

[41mSTARTTEST[m
:[41mso[m [41msmall[m.[41mvim[m
:[41mso[m [41mmbyte[m.[41mvim[m
:"[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/[?12l[?25h^test2:[?25l[27m[m[H[2J[1;9H[41mtomato[m [41mtomatotomato[m [41mstartend[m [41mstartword[m [41mstartwordword[m [41mstartwordend[2;9Hstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[3;9Hpreborkborkbork[4;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[6;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[7;9Hpreborkprebork[m  [41mpreborkpreborkbork[8;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[9;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
elequint test elekwint test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !![12;1H[?12l[?25h[13;29H[?25l[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41minputs[m
['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_us.utf-8.spl[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;9H[41mtomato[m [41mtomatotomato[m [41mstartend[m [41mstartword[m [41mstartwordword[m [41mstartwordend[2;9Hstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[3;9Hpreborkborkbork[4;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[6;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[7;9Hpreborkprebork[m  [41mpreborkpreborkbork[8;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[9;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[46melequint[m test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['input', 'puts', 'outputs']
[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[?12l[?25h[?25l[27m[m[H[2J[1;9H[41mstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[2;9Hpreborkborkbork[3;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[5;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[6;9Hpreborkprebork[m  [41mpreborkpreborkbork[7;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[8;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[46melequint[m test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[41mCOMPOUNDRULE[m [41mssmm[m*[41mee[12;1H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mcomment[m
['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint
elekwint[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_gb.utf-8.spl[?25l[22;1Helequint
[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;9H[41mtomato[m [41mtomatotomato[m [41mstartend[m [41mstartword[m [41mstartwordword[m [41mstartwordend[2;9Hstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[3;9Hpreborkborkbork[4;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[6;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[7;9Hpreborkprebork[m  [41mpreborkpreborkbork[8;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[9;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
elequint test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[13;15H[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['Comment', 'outtest', 'the end']
[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
elequint
[46melekwint
elekwint[?12l[?25h[?25l[27m[m[H[2J[1;9H[41mstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[2;9Hpreborkborkbork[3;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[5;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[6;9Hpreborkprebork[m  [41mpreborkpreborkbork[7;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[8;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
elequint test [46melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[41mCOMPOUNDRULE[m [41mssmm[m*[41mee[12;15H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mok[m
['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
elequint
[46melekwint
elekwint[m
[41melekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_nz.utf-8.spl[?25l[20;1H[46melequint[m
elekwint
elekwint
[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;9H[41mtomato[m [41mtomatotomato[m [41mstartend[m [41mstartword[m [41mstartwordword[m [41mstartwordend[2;9Hstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[3;9Hpreborkborkbork[4;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[6;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[7;9Hpreborkprebork[m  [41mpreborkpreborkbork[8;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[9;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[46melequint[m test elekwint test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['OK', 'uk', 'put']
[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[m
elekwint
elekwint
[41melekwent[m
[46melequint[?12l[?25h[?25l[27m[m[H[2J[1;9H[41mstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[2;9Hpreborkborkbork[3;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[5;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[6;9Hpreborkprebork[m  [41mpreborkpreborkbork[7;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[8;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[46melequint[m test elekwint test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[41mCOMPOUNDRULE[m [41mssmm[m*[41mee[12;1H[?12l[?25h[28C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;29H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H[41mOk[m
['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent[m
[46melequint[m
elekwint
elekwint
[41melekwent[m
[46melequint[m
[41melekwent[?12l[?25h[?25l
[m:[?12l[?25hset spl=Xtest_ca.utf-8.spl[?25l[18;1H[41melequint
elekwint
elekwint

elequint
[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h^test2:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;9H[41mtomato[m [41mtomatotomato[m [41mstartend[m [41mstartword[m [41mstartwordword[m [41mstartwordend[2;9Hstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[3;9Hpreborkborkbork[4;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[6;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[7;9Hpreborkprebork[m  [41mpreborkpreborkbork[8;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[9;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[41melequint[m test [41melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[?25l[m[24;1H[K[24;1H:[?12l[?25hlet [str, a] = spellbadword()[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1H['OK', 'Uk', 'Put']
test
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint[?12l[?25h[?25l[27m[m[H[2J[1;9H[41mstartwordwordend[m [41mstartwordwordwordend[m [41mprebork[m [41mpreborkbork[2;9Hpreborkborkbork[3;9Hnouword
bad[m: [41mwordutilize[m [41mpro[m [41mborkborkborkborkborkbork[m [41mtomatotomatotomato[5;9Hendstart[m [41mendend[m [41mstartstart[m [41mwordend[m [41mwordstart[6;9Hpreborkprebork[m  [41mpreborkpreborkbork[7;9Hstartwordwordwordwordend[m [41mborkpreborkpreborkbork[8;9Hutilsbork[m  [41mstartnouword
badend

test2[m:
[41melequint[m test [41melekwint[m test [41melekwent[m [41masdf[m

Test [41maffix[m [41mflags[m [41mwith[m [41mtwo[m [41mcharacters[m

5[41maffstart
SET[m [41mISO8859-1

FLAG[m [41mlong

NEEDAFFIX[m !!

[41mCOMPOUNDRULE[m [41mssmm[m*[41mee[12;1H[?12l[?25h[14C[?25l[24;1H[m:[?12l[?25hlet [str, a] = spellbadword()[?25l[12;15H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =str[?25l[27m[m[H[2J[1;1Htest
['Test', 'testn', 'testen']
[41mdÃ©Ã´l[m
['deol', 'dÃ©Ã´r', 'test']
[41mend[m
['put', 'uk', 'test']
[41mthe[m
['put', 'uk', 'test']
[41mgebletegek
kepereneven
everles[m [41mgesvets[m [41metele
kbltykk
kprnfn[m
*[41mfls[m [41mkswts[m [41mtl
elekwent
elequint
elekwint
elekwint
elekwent
elequint
elekwent
elequint
elekwint[?12l[?25h[?25l
[m:[?12l[?25hunlet str a[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Postponed prefixes[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('2', '1')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[12L[1;1H[41maddstart[m
/[41mregions[m=[41musgbnz
elequint[m/2
[41melekwint[m/3
[41maddend[m

1[41mgood[m: wrong OK puts. Test the end
[41mbad[m:  [41minputs[m [41mcomment[m [41mok[m [41mOk[m. [44mtest[m [41mdÃ©Ã´l[m [41mend[m [41mthe
badend[m

2[41mgood[m: puts
[41mbad[m: [41minputs[m [41mcomment[m [41mok[m [41mOk[m [41mend[m [41mthe[m. [44mtest[m [41mdÃ©Ã´l
badend[m[14;1H[K[15;1HTest [41mrules[m [41mfor[m [41mcompounding[m.[16;1H[K[17;1H3[41maffstart
SET[m [41mISO8859-1[m[19;1H[K[20;1H[41mCOMPOUNDMIN[m 3
[41mCOMPOUNDRULE[m [41mm[m*
[41mNEEDCOMPOUND[m [41mx[m
3[41maffend[m[23;8H[K[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" Compound words[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall TestOne('3', '3')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('4', '4')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('5', '5')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('6', '6')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall TestOne('7', '7')[?25l"Xtest.aff" [24;13H[K[24;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...[24;26H[K[24;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
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[27m[m[H[2J[1;1H1234
[41mmee[m/391,111,9999
bar/17,61003,123
lead/2
tail/123
[41mmiddle[m/77,1
7[41mdicend[m

7[41mgood[m: meea1 meeaÃ© bar prebar barmeat prebarmeat  leadprebar[10;7Hlead tail leadtail  leadmiddletail
[41mbad[m: [41mmee[m [41mmeea2[m [41mprabar[m [41mprobarmaat[m [41mmiddle[m [41mleadmiddle[m [41mmiddletail[m [41mtaillead[12;9Hleadprobar
badend

test[m [41moutput[m:

[41mtest[m 1-1
# [41mfile[m: [41mXtest[m.[41mutf[m-8.[41mspl
Comment
deol
dÃ©Ã´r
input
OK[13;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h" clean up for valgrind[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc TestOne[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset spl= enc=latin1[?25l[27m[m[H[2J[1;1H1234
mee/391,111,9999
bar/17,61003,123
lead/2
tail/123
middle/77,1
7dicend

7good: meea1 meeaÃ© bar prebar barmeat prebarmeat  leadprebar[10;7Hlead tail leadtail  leadmiddletail
bad: mee meea2 prabar probarmaat middle leadmiddle middletail taillead[12;9Hleadprobar
badend

test output:

test 1-1
# file: Xtest.utf-8.spl
Comment
deol
dÃ©Ã´r
input
OK[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[27m[m[H[2J[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[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^test output:/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 270 lines, 3685 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test60.failed test.ok test.out X* viminfo
cp test60.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test60.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test60.in" 610 lines, 13323 characters[1;1HTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :

STARTTEST
:so small.vim
:function! RunTest(str, result)
    if exists(a:str) == a:result[7;9Hecho "OK"
    else[9;9Hecho "FAILED: Checking for " . a:str
    endif
endfunction
:function! TestExists()
    augroup myagroup[14;9Hautocmd! BufEnter[7C*.my     echo "myfile edited"[15;9Hautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
    augroup END
    set rtp+=./sautest[19;5Hlet test_cases = [][21;5H" valid autocmd group
    let test_cases += [['#myagroup', 1]]
    " valid autocmd group with garbage[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for the exists() and has() functions.  vim: set ft=vim ts=8 sw=2 :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 605 lines, 13230 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()
  redir >> test.out
  for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
    echo 'has patch ' . pl . ': ' . has('patch-' . pl)
  endfor
  redir END
endfunc
:call TestHas()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! RunTest(str, result)[?25l
:  [?12l[?25h    if exists(a:str) == a:result
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED: Checking for " . a:str
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25hendfunction[1;1H[6L[?25l[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()
  redir >> test.out[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hfunction! TestExists()[?25l
:  [?12l[?25h    augroup myagroup
[?25l:  [?12l[?25h[34m^I[mautocmd! BufEnter       *.my     echo "myfile edited"
[?25l:  [?12l[?25h[34m^I[mautocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
[?25l:  [?12l[?25h    augroup END
[?25l:  [?12l[?25h    set rtp+=./sautest
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    let test_cases = []
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " valid autocmd group
[?25l:  [?12l[?25h    let test_cases += [['#myagroup', 1]]
[?25l:  [?12l[?25h    " valid autocmd group with garbage
[?25l:  [?12l[?25h    let test_cases += [['#myagroup+b', 0]]
[?25l:  [?12l[?25h    " Valid autocmd group and event
[?25l:  [?12l[?25h    let test_cases += [['#myagroup#BufEnter', 1]]
[?25l:  [?12l[?25h    " Valid autocmd group, event and pattern
[?25l:  [?12l[?25h    let test_cases += [['#myagroup#BufEnter#*.my', 1]]
[?25l:  [?12l[?25h    " Valid autocmd event
[?25l:  [?12l[?25h    let test_cases += [['#BufEnter', 1]]
[?25l:  [?12l[?25h    " Valid autocmd event and pattern
[?25l:  [?12l[?25h    let test_cases += [['#BufEnter#*.my', 1]]
[?25l:  [?12l[?25h    " Non-existing autocmd group or event
[?25l:  [?12l[?25h    let test_cases += [['#xyzagroup', 0]]
[?25l:  [?12l[?25h    " Non-existing autocmd group and valid autocmd event
[?25l:  [?12l[?25h    let test_cases += [['#xyzagroup#BufEnter', 0]]
[?25l:  [?12l[?25h    " Valid autocmd group and event with no matching pattern
[?25l:  [?12l[?25h    let test_cases += [['#myagroup#CmdwinEnter', 0]]
[?25l:  [?12l[?25h    " Valid autocmd group and non-existing autocmd event
[?25l:  [?12l[?25h    let test_cases += [['#myagroup#xyzacmd', 0]]
[?25l:  [?12l[?25h    " Valid autocmd group and event and non-matching pattern
[?25l:  [?12l[?25h    let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
[?25l:  [?12l[?25h    " Valid autocmd event and non-matching pattern
[?25l:  [?12l[?25h    let test_cases += [['#BufEnter#xyzpat', 0]]
[?25l:  [?12l[?25h    " Empty autocmd group, event and pattern
[?25l:  [?12l[?25h    let test_cases += [['###', 0]]
[?25l:  [?12l[?25h    " Empty autocmd group and event or empty event and pattern
[?25l:  [?12l[?25h    let test_cases += [['##', 0]]
[?25l:  [?12l[?25h    " Valid autocmd event
[?25l:  [?12l[?25h    let test_cases += [['##FileReadCmd', 1]]
[?25l:  [?12l[?25h    " Non-existing autocmd event
[?25l:  [?12l[?25h    let test_cases += [['##MySpecialCmd', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing and working option (long form)
[?25l:  [?12l[?25h    let test_cases += [['&textwidth', 1]]
[?25l:  [?12l[?25h    " Existing and working option (short form)
[?25l:  [?12l[?25h    let test_cases += [['&tw', 1]]
[?25l:  [?12l[?25h    " Existing and working option with garbage
[?25l:  [?12l[?25h    let test_cases += [['&tw-', 0]]
[?25l:  [?12l[?25h    " Global option
[?25l:  [?12l[?25h    let test_cases += [['&g:errorformat', 1]]
[?25l:  [?12l[?25h    " Local option
[?25l:  [?12l[?25h    let test_cases += [['&l:errorformat', 1]]
[?25l:  [?12l[?25h    " Negative form of existing and working option (long form)
[?25l:  [?12l[?25h    let test_cases += [['&nojoinspaces', 0]]
[?25l:  [?12l[?25h    " Negative form of existing and working option (short form)
[?25l:  [?12l[?25h    let test_cases += [['&nojs', 0]]
[?25l:  [?12l[?25h    " Non-existing option
[?25l:  [?12l[?25h    let test_cases += [['&myxyzoption', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing and working option (long form)
[?25l:  [?12l[?25h    let test_cases += [['+incsearch', 1]]
[?25l:  [?12l[?25h    " Existing and working option with garbage
[?25l:  [?12l[?25h    let test_cases += [['+incsearch!1', 0]]
[?25l:  [?12l[?25h    " Existing and working option (short form)
[?25l:  [?12l[?25h    let test_cases += [['+is', 1]]
[?25l:  [?12l[?25h    " Existing option that is hidden.
[?25l:  [?12l[?25h    let test_cases += [['+autoprint', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing environment variable
[?25l:  [?12l[?25h    let $EDITOR_NAME = 'Vim Editor'
[?25l:  [?12l[?25h    let test_cases += [['$EDITOR_NAME', 1]]
[?25l:  [?12l[?25h    " Non-existing environment variable
[?25l:  [?12l[?25h    let test_cases += [['$NON_ENV_VAR', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid internal function
[?25l:  [?12l[?25h    let test_cases += [['*bufnr', 1]]
[?25l:  [?12l[?25h    " Valid internal function with ()
[?25l:  [?12l[?25h    let test_cases += [['*bufnr()', 1]]
[?25l:  [?12l[?25h    " Non-existing internal function
[?25l:  [?12l[?25h    let test_cases += [['*myxyzfunc', 0]]
[?25l:  [?12l[?25h    " Valid internal function with garbage
[?25l:  [?12l[?25h    let test_cases += [['*bufnr&6', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid user defined function
[?25l:  [?12l[?25h    let test_cases += [['*TestExists', 1]]
[?25l:  [?12l[?25h    " Non-existing user defined function
[?25l:  [?12l[?25h    let test_cases += [['*MyxyzFunc', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Function that may be created by FuncUndefined event
[?25l:  [?12l[?25h    let test_cases += [['*UndefFun', 0]]
[?25l:  [?12l[?25h    " Function that may be created by script autoloading
[?25l:  [?12l[?25h    let test_cases += [['*footest#F', 0]]
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    redir! > test.out
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    for [test_case, result] in test_cases
[?25l:    [?12l[?25h        echo test_case . ": " . result
[?25l:    [?12l[?25h        call RunTest(test_case, result)
[?25l:    [?12l[?25h    endfor
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid internal command (full match)
[?25l:  [?12l[?25h    echo ':edit: 2'
[?25l:  [?12l[?25h    if exists(':edit') == 2
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid internal command (full match) with garbage
[?25l:  [?12l[?25h    echo ':edit/a: 0'
[?25l:  [?12l[?25h    if exists(':edit/a') == 0
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid internal command (partial match)
[?25l:  [?12l[?25h    echo ':q: 1'
[?25l:  [?12l[?25h    if exists(':q') == 1
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing internal command
[?25l:  [?12l[?25h    echo ':invalidcmd: 0'
[?25l:  [?12l[?25h    if !exists(':invalidcmd')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " User defined command (full match)
[?25l:  [?12l[?25h    command! MyCmd :echo 'My command'
[?25l:  [?12l[?25h    echo ':MyCmd: 2'
[?25l:  [?12l[?25h    if exists(':MyCmd') == 2
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " User defined command (partial match)
[?25l:  [?12l[?25h    command! MyOtherCmd :echo 'Another command'
[?25l:  [?12l[?25h    echo ':My: 3'
[?25l:  [?12l[?25h    if exists(':My') == 3
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Command modifier
[?25l:  [?12l[?25h    echo ':rightbelow: 2'
[?25l:  [?12l[?25h    if exists(':rightbelow') == 2
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing user defined command (full match)
[?25l:  [?12l[?25h    delcommand MyCmd
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    echo ':MyCmd: 0'
[?25l:  [?12l[?25h    if !exists(':MyCmd')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing user defined command (partial match)
[?25l:  [?12l[?25h    delcommand MyOtherCmd
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    echo ':My: 0'
[?25l:  [?12l[?25h    if !exists(':My')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local variable
[?25l:  [?12l[?25h    let local_var = 1
[?25l:  [?12l[?25h    echo 'local_var: 1'
[?25l:  [?12l[?25h    if exists('local_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local variable with garbage
[?25l:  [?12l[?25h    let local_var = 1
[?25l:  [?12l[?25h    echo 'local_var%n: 0'
[?25l:  [?12l[?25h    if !exists('local_var%n')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing local variable
[?25l:  [?12l[?25h    unlet local_var
[?25l:  [?12l[?25h    echo 'local_var: 0'
[?25l:  [?12l[?25h    if !exists('local_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing autoload variable that may be autoloaded
[?25l:  [?12l[?25h    echo 'footest#x: 0'
[?25l:  [?12l[?25h    if !exists('footest#x')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local list
[?25l:  [?12l[?25h    let local_list = ["blue", "orange"]
[?25l:  [?12l[?25h    echo 'local_list: 1'
[?25l:  [?12l[?25h    if exists('local_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local list item
[?25l:  [?12l[?25h    echo 'local_list[1]: 1'
[?25l:  [?12l[?25h    if exists('local_list[1]')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local list item with garbage
[?25l:  [?12l[?25h    echo 'local_list[1]+5: 0'
[?25l:  [?12l[?25h    if !exists('local_list[1]+5')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Invalid local list item
[?25l:  [?12l[?25h    echo 'local_list[2]: 0'
[?25l:  [?12l[?25h    if !exists('local_list[2]')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing local list
[?25l:  [?12l[?25h    unlet local_list
[?25l:  [?12l[?25h    echo 'local_list: 0'
[?25l:  [?12l[?25h    if !exists('local_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Valid local dictionary
[?25l:  [?12l[?25h    let local_dict = {"xcord":100, "ycord":2}
[?25l:  [?12l[?25h    echo 'local_dict: 1'
[?25l:  [?12l[?25h    if exists('local_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing local dictionary
[?25l:  [?12l[?25h    unlet local_dict
[?25l:  [?12l[?25h    echo 'local_dict: 0'
[?25l:  [?12l[?25h    if !exists('local_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing local curly-brace variable
[?25l:  [?12l[?25h    let str = "local"
[?25l:  [?12l[?25h    let curly_{str}_var = 1
[?25l:  [?12l[?25h    echo 'curly_' . str . '_var: 1'
[?25l:  [?12l[?25h    if exists('curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing local curly-brace variable
[?25l:  [?12l[?25h    unlet curly_{str}_var
[?25l:  [?12l[?25h    echo 'curly_' . str . '_var: 0'
[?25l:  [?12l[?25h    if !exists('curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing global variable
[?25l:  [?12l[?25h    let g:global_var = 1
[?25l:  [?12l[?25h    echo 'g:global_var: 1'
[?25l:  [?12l[?25h    if exists('g:global_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing global variable with garbage
[?25l:  [?12l[?25h    echo 'g:global_var-n: 1'
[?25l:  [?12l[?25h    if !exists('g:global_var-n')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing global variable
[?25l:  [?12l[?25h    unlet g:global_var
[?25l:  [?12l[?25h    echo 'g:global_var: 0'
[?25l:  [?12l[?25h    if !exists('g:global_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing global list
[?25l:  [?12l[?25h    let g:global_list = ["blue", "orange"]
[?25l:  [?12l[?25h    echo 'g:global_list: 1'
[?25l:  [?12l[?25h    if exists('g:global_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing global list
[?25l:  [?12l[?25h    unlet g:global_list
[?25l:  [?12l[?25h    echo 'g:global_list: 0'
[?25l:  [?12l[?25h    if !exists('g:global_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing global dictionary
[?25l:  [?12l[?25h    let g:global_dict = {"xcord":100, "ycord":2}
[?25l:  [?12l[?25h    echo 'g:global_dict: 1'
[?25l:  [?12l[?25h    if exists('g:global_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing global dictionary
[?25l:  [?12l[?25h    unlet g:global_dict
[?25l:  [?12l[?25h    echo 'g:global_dict: 0'
[?25l:  [?12l[?25h    if !exists('g:global_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing global curly-brace variable
[?25l:  [?12l[?25h    let str = "global"
[?25l:  [?12l[?25h    let g:curly_{str}_var = 1
[?25l:  [?12l[?25h    echo 'g:curly_' . str . '_var: 1'
[?25l:  [?12l[?25h    if exists('g:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing global curly-brace variable
[?25l:  [?12l[?25h    unlet g:curly_{str}_var
[?25l:  [?12l[?25h    echo 'g:curly_' . str . '_var: 0'
[?25l:  [?12l[?25h    if !exists('g:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing window variable
[?25l:  [?12l[?25h    echo 'w:window_var: 1'
[?25l:  [?12l[?25h    let w:window_var = 1
[?25l:  [?12l[?25h    if exists('w:window_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing window variable
[?25l:  [?12l[?25h    unlet w:window_var
[?25l:  [?12l[?25h    echo 'w:window_var: 0'
[?25l:  [?12l[?25h    if !exists('w:window_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing window list
[?25l:  [?12l[?25h    let w:window_list = ["blue", "orange"]
[?25l:  [?12l[?25h    echo 'w:window_list: 1'
[?25l:  [?12l[?25h    if exists('w:window_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing window list
[?25l:  [?12l[?25h    unlet w:window_list
[?25l:  [?12l[?25h    echo 'w:window_list: 0'
[?25l:  [?12l[?25h    if !exists('w:window_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing window dictionary
[?25l:  [?12l[?25h    let w:window_dict = {"xcord":100, "ycord":2}
[?25l:  [?12l[?25h    echo 'w:window_dict: 1'
[?25l:  [?12l[?25h    if exists('w:window_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing window dictionary
[?25l:  [?12l[?25h    unlet w:window_dict
[?25l:  [?12l[?25h    echo 'w:window_dict: 0'
[?25l:  [?12l[?25h    if !exists('w:window_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing window curly-brace variable
[?25l:  [?12l[?25h    let str = "window"
[?25l:  [?12l[?25h    let w:curly_{str}_var = 1
[?25l:  [?12l[?25h    echo 'w:curly_' . str . '_var: 1'
[?25l:  [?12l[?25h    if exists('w:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing window curly-brace variable
[?25l:  [?12l[?25h    unlet w:curly_{str}_var
[?25l:  [?12l[?25h    echo 'w:curly_' . str . '_var: 0'
[?25l:  [?12l[?25h    if !exists('w:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing buffer variable
[?25l:  [?12l[?25h    echo 'b:buffer_var: 1'
[?25l:  [?12l[?25h    let b:buffer_var = 1
[?25l:  [?12l[?25h    if exists('b:buffer_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing buffer variable
[?25l:  [?12l[?25h    unlet b:buffer_var
[?25l:  [?12l[?25h    echo 'b:buffer_var: 0'
[?25l:  [?12l[?25h    if !exists('b:buffer_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing buffer list
[?25l:  [?12l[?25h    let b:buffer_list = ["blue", "orange"]
[?25l:  [?12l[?25h    echo 'b:buffer_list: 1'
[?25l:  [?12l[?25h    if exists('b:buffer_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing buffer list
[?25l:  [?12l[?25h    unlet b:buffer_list
[?25l:  [?12l[?25h    echo 'b:buffer_list: 0'
[?25l:  [?12l[?25h    if !exists('b:buffer_list')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing buffer dictionary
[?25l:  [?12l[?25h    let b:buffer_dict = {"xcord":100, "ycord":2}
[?25l:  [?12l[?25h    echo 'b:buffer_dict: 1'
[?25l:  [?12l[?25h    if exists('b:buffer_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing buffer dictionary
[?25l:  [?12l[?25h    unlet b:buffer_dict
[?25l:  [?12l[?25h    echo 'b:buffer_dict: 0'
[?25l:  [?12l[?25h    if !exists('b:buffer_dict')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing buffer curly-brace variable
[?25l:  [?12l[?25h    let str = "buffer"
[?25l:  [?12l[?25h    let b:curly_{str}_var = 1
[?25l:  [?12l[?25h    echo 'b:curly_' . str . '_var: 1'
[?25l:  [?12l[?25h    if exists('b:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing buffer curly-brace variable
[?25l:  [?12l[?25h    unlet b:curly_{str}_var
[?25l:  [?12l[?25h    echo 'b:curly_' . str . '_var: 0'
[?25l:  [?12l[?25h    if !exists('b:curly_{str}_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Script-local tests
[?25l:  [?12l[?25h    source test60.vim
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Existing Vim internal variable
[?25l:  [?12l[?25h    echo 'v:version: 1'
[?25l:  [?12l[?25h    if exists('v:version')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Non-existing Vim internal variable
[?25l:  [?12l[?25h    echo 'v:non_exists_var: 0'
[?25l:  [?12l[?25h    if !exists('v:non_exists_var')
[?25l:    [?12l[?25h[34m^I[mecho "OK"
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h[34m^I[mecho "FAILED"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h    " Function arguments
[?25l:  [?12l[?25h    function TestFuncArg(func_arg, ...)
[?25l:    [?12l[?25h        echo 'a:func_arg: 1'
[?25l:    [?12l[?25h        if exists('a:func_arg')
[?25l:      [?12l[?25h            echo "OK"
[?25l:      [?12l[?25h        else
[?25l:      [?12l[?25h            echo "FAILED"
[?25l:      [?12l[?25h        endif
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h        echo 'a:non_exists_arg: 0'
[?25l:    [?12l[?25h        if !exists('a:non_exists_arg')
[?25l:      [?12l[?25h            echo "OK"
[?25l:      [?12l[?25h        else
[?25l:      [?12l[?25h            echo "FAILED"
[?25l:      [?12l[?25h        endif
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h        echo 'a:1: 1'
[?25l:    [?12l[?25h        if exists('a:1')
[?25l:      [?12l[?25h            echo "OK"
[?25l:      [?12l[?25h        else
[?25l:      [?12l[?25h            echo "FAILED"
[?25l:      [?12l[?25h        endif
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h        echo 'a:2: 0'
[?25l:    [?12l[?25h        if !exists('a:2')
[?25l:      [?12l[?25h            echo "OK"
[?25l:      [?12l[?25h        else
[?25l:      [?12l[?25h            echo "FAILED"
[?25l:      [?12l[?25h        endif
[?25l:    [?12l[?25h    endfunction
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h    call TestFuncArg("arg1", "arg2")
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h    echo ' g:footest#x =' g:footest#x
[?25l:    [?12l[?25h    echo '   footest#F()' footest#F()
[?25l:    [?12l[?25h    echo 'UndefFun()' UndefFun()
[?25l:    [?12l[?25h
[?25l:    [?12l[?25h    redir END
[?25l:    [?12l[?25hendfunction[27m[m[H[2J[?25l[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()
  redir >> test.out
  for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
    echo 'has patch ' . pl . ': ' . has('patch-' . pl)
  endfor
  redir END
endfunc
:call TestHas()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST
[?12l[?25h[?25l
:[?12l[?25hcall TestExists()[?25l#myagroup: 1[24;13H[K[24;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
*UndefFun: 0
OK
*footest#F: 0
OK
:edit: 2
OK
:edit/a: 0
OK
:q: 1
OK
:invalidcmd: 0
OK
:MyCmd: 2
OK
:My: 3
OK
:rightbelow: 2
OK
:MyCmd: 0
OK
:My: 0
OK
local_var: 1
OK
local_var%n: 0
OK
local_var: 0
OK
footest#x: 0
OK
local_list: 1
OK
local_list[1]: 1
OK
local_list[1]+5: 0
OK
local_list[2]: 0
OK
local_list: 0
OK
local_dict: 1
OK
local_dict: 0
OK
curly_local_var: 1
OK
curly_local_var: 0
OK
g:global_var: 1
OK
g:global_var-n: 1
OK
g:global_var: 0
OK
g:global_list: 1
OK
g:global_list: 0
OK
g:global_dict: 1
OK
g:global_dict: 0
OK
g:curly_global_var: 1
OK
g:curly_global_var: 0
OK
w:window_var: 1
OK
w:window_var: 0
OK
w:window_list: 1
OK
w:window_list: 0
OK
w:window_dict: 1
OK
w:window_dict: 0
OK
w:curly_window_var: 1
OK
w:curly_window_var: 0
OK
b:buffer_var: 1
OK
b:buffer_var: 0
OK
b:buffer_list: 1
OK
b:buffer_list: 0
OK
b:buffer_dict: 1
OK
b:buffer_dict: 0
OK
b:curly_buffer_var: 1
OK
b:curly_buffer_var: 0
OK
s:script_var: 1
OK
s:script_var: 0
OK
s:script_list: 1
OK
s:script_list: 0
OK
s:script_dict: 1
OK
s:script_dict: 0
OK
s:curly_script_var: 1
OK
s:curly_script_var: 0
OK
*s:my_script_func: 1
OK
*s:my_script_func: 0
OK
v:version: 1
OK
v:non_exists_var: 0
OK
a:func_arg: 1
OK
a:non_exists_arg: 0
OK
a:1: 1
OK
a:2: 0
OK
 g:footest#x = 1
   footest#F() 0
UndefFun() 0
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[27m[m[H[2J[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()
  redir >> test.out
  for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
    echo 'has patch ' . pl . ': ' . has('patch-' . pl)
  endfor
  redir END
endfunc
:call TestHas()
:"
:delfunc TestExists
:delfunc RunTest
:delfunc TestFuncArg
:edit! test.out
:set ff=unix
:w
:qa!
:while getchar(1) | call getchar() | endwhile
ENDTEST
[?12l[?25h[?25l
:[?12l[?25hfunction TestHas()[?25l
:  [?12l[?25h  redir >> test.out
[?25l:  [?12l[?25h  for pl in ['6.9.999', '7.1.999', '7.4.123', '9.1.0', '9.9.1']
[?25l:    [?12l[?25h    echo 'has patch ' . pl . ': ' . has('patch-' . pl)
[?25l:    [?12l[?25h  endfor
[?25l:  [?12l[?25h  redir END
[?25l:  [?12l[?25hendfunc[1;1H[6L[?25l[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()
  redir >> test.out[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hcall TestHas()[?25lhas patch 6.9.999: 1
has patch 7.1.999: 1
has patch 7.4.123: 1
has patch 9.1.0: 0
has patch 9.9.1: 0
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[5L[1;5Hredir END
endfunction
:call TestExists()
:"
:function TestHas()[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hdelfunc TestExists[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc RunTest[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunc TestFuncArg[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hedit! test.out[?25l"test.out" [24;12H[K[24;12H[Incomplete last line] 211 lines, 2041 characters[1;5H[K[2;1H#myagroup: 1
OK[3;3H[K[4;1H#myagroup+b: 0
OK[5;3H[K[6;1H#myagroup#BufEnter: 1
OK[7;3H[K[8;1H#myagroup#BufEnter#*.my: 1[8;28H[K[9;1HOK[9;3H[K[10;1H#BufEnter: 1
OK[11;3H[K[12;1H#BufEnter#*.my: 1
OK
#xyzagroup: 0[14;14H[K[15;1HOK[15;3H[K[16;1H#xyzagroup#BufEnter: 0
OK[17;3H[K[18;1H#myagroup#CmdwinEnter: 0
OK
#myagroup#xyzacmd: 0
OK[21;3H[K[22;1H#myagroup#BufEnter#xyzpat: 0
OK[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ff=unix[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" 211 lines, 2042 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test61.failed test.ok test.out X* viminfo
cp test61.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test61.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test61.in" 113 lines, 1774 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for undo tree.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 1 line, 25 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[8;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hecho undotree().entries[?25l[][24;3H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[10;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H97 lines, 1501 characters written[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[11;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set ul=100
ob[34m^[[m
:set ul=100
o1[34m^[[ma2[34m^R[m=setline('.','1234')

[34m^[[muu:"
oc[34m^[[m
:set ul=100
o1[34m^[[ma2[34m^R[m=setline('.','1234')

[34m^[[mu:"
od[34m^[[m
:set ul=100
o1[34m^[[ma2[34m^R[m=string(123)
[34m^[[mu:"
:%w >>test.out
:qa!
ENDTEST

1111 -----
2222 -----

123456789[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Delete three characters and undo[?25l[19;1H[?12l[?25h[23;1H[?25l23456789[23;9H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;1H[?12l[?25h[?25l3456789[23;8H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;1H[?12l[?25h[?25l456789[23;7H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 7 characters written[23;1H[?12l[?25h[?25l
1 change; before #3  1 seconds ago[24;35H[K[23;1H3456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 8 characters appended[23;1H[?12l[?25h[?25l
1 change; before #2  1 seconds ago[24;35H[K[23;1H23456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 9 characters appended[23;1H[?12l[?25h[?25l
1 change; before #1  1 seconds ago[24;35H[K[23;1H123456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;1H[?12l[?25h[?25l
Already at oldest change[24;25H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^111/w >>test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H1 line, 11 characters appended[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Delete three other characters and go back in time step by step[?25l[23;1H[?12l[?25h[8C[?25l[23;9H[K[23;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;8H[?12l[?25h[?25l[23;8H[K[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;7H[?12l[?25h[?25l[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsleep 1[?25l[23;6H[?12l[?25h[?25l
1 change; before #6  1 seconds ago[23;7H7[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 8 characters appended[23;7H[?12l[?25h[?25l
1 change; before #5  1 seconds ago[24;35H[K[23;8H8[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 9 characters appended[23;8H[?12l[?25h[?25l
4 changes; after #3  2 seconds ago[24;35H[K[23;1H456789[23;7H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;1H[?12l[?25h[?25l
1 change; before #3  2 seconds ago[24;35H[K[23;1H3456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 8 characters appended[23;1H[?12l[?25h[?25l
1 change; before #2  2 seconds ago[24;35H[K[23;1H23456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 9 characters appended[23;1H[?12l[?25h[?25l
1 change; before #1  2 seconds ago[24;35H[K[23;1H123456789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;1H[?12l[?25h[?25l
Already at oldest change[24;25H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;1H[?12l[?25h[?25l
Already at oldest change[24;25H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;1H[?12l[?25h[?25l
3 changes; after #6  1 seconds ago[24;35H[K[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^222/w >>test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H1 line, 11 characters appended[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Delay for three seconds and go some seconds forward and backward[?25l[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsleep 2[?25l[23;6H[?12l[?25h[?25l6a[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;7H[?12l[?25h[?25lab[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;8H[?12l[?25h[?25lbc[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hear 1s[?25l3 changes; before #7  0 seconds ago[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hear 3s[?25l3 changes; before #4  3 seconds ago[23;7H789[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlater 1s[?25l3 changes; after #6  3 seconds ago[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 7 characters appended[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlater 1h[?25l3 changes; after #9  0 seconds ago[23;7Habc[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 10 characters appended[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test undojoin[?25l[23;9H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Haaaa[24;1H[K[23;4H[?12l[?25h[?25l
:[?12l[?25hset ul=100[?25l[23;4H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hbbbb[24;1H[K[23;4H[?12l[?25h[?25l
1 line less; before #11  0 seconds ago[23;1H[1m[34m~                                                                               [22;4H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 5 characters appended[22;4H[?12l[?25h[?25l
bbbb[23;5H[K[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hundojoin[?25l[23;4H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hcccc[24;1H[K[23;4H[?12l[?25h[?25l
2 fewer lines; before #12  0 seconds ago[22;1H[1m[34m~                                                                               [23;1H~                                                                               [21;4H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1 line, 5 characters appended[21;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest[?25l"Xtest" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [1;1H[?12l[?25h[?25l[mone one one[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[1;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw![?25l"Xtest" [New File] 1 line, 12 characters written[1;11H[?12l[?25h[?25l
two[2;4H[K[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[2;3H[?12l[?25h[?25l
two[3;4H[K[3;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[3;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtest" 3 lines, 20 characters written[3;3H[?12l[?25h[?25l
three[4;6H[K[4;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hearlier 1f[?25l1 line less; before #4  0 seconds ago[4;1H[1m[34m~                                                                               [3;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" expect "one one one\ntwo\ntwo"[?25l[3;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%yank a[?25l3 lines yanked[3;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hearlier 1f[?25l2 fewer lines; before #2  0 seconds ago[2;1H[1m[34m~                                                                               [3;1H~                                                                               [1;11H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" expect "one one one"[?25l[1;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%yank b[?25l[1;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hearlier 1f[?25l1 line less; before #1  0 seconds ago[1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" expect empty line[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%yank c[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlater 1f[?25l1 more line; after #1  0 seconds ago[1;1Hone one one[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" expect "one one one"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%yank d[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlater 1f[?25l2 more lines; after #3  0 seconds ago[2;1Htwo[2;4H[K[3;1Htwo[3;4H[K[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" expect "one one one\ntwo\ntwo"[?25l[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%yank e[?25l3 lines yanked[2;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlater 1f[?25l1 more line; after #4  0 seconds ago[4;1Hthree[4;6H[K[3;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" expect "one one one\ntwo\ntwo\nthree"[?25l[3;3H[?12l[?25h[1;1H[?25l[1;23r[1;1H[L[1;24r[1;1H---[24;1H[K[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25h0put e[?25l3 more lines[1;23r[1;1H[3L[1;24r[1;1Hone one one
two
two[24;1H[K[24;1H3 more lines[3;1H[?12l[?25h[1;1H[?25l[1;23r[1;1H[L[1;24r[1;1H---[24;1H[K[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25h0put d[?25l[1;23r[1;1H[L[1;24r[1;1Hone one one[24;1H[K[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H---[?12l[?25h[?25l[24;1H:[?12l[?25h0put c[?25l[1;23r[1;1H[L[1;24r[24;1H[K[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H---[?12l[?25h[?25l[24;1H:[?12l[?25h0put b[?25l[1;23r[1;1H[L[1;24r[1;1Hone one one[24;1H[K[1;1H[?12l[?25h[?25l[1;23r[1;1H[L[1;24r[1;1H---[?12l[?25h[?25l[24;1H:[?12l[?25h0put a[?25l3 more lines[1;23r[1;1H[3L[1;24r[1;1Hone one one
two
two[24;1H[K[24;1H3 more lines[3;1H[?12l[?25h[1;1H[?25l[1;23r[1;1H[L[1;24r[1;1H---[24;1H[K[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H19 lines, 115 characters appended[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp viminfo+=nviminfo[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25henew![?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;1H[K[2;1Ha[2;2H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[2;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[3;1Hb[3;2H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[4;1H1[4;2H[K[4;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[24;1H=[?12l[?25hsetline('.','1234')[?25l[4;2H20
34[5;3H[K[24;1H[1m-- INSERT --[m[24;13H[K[5;1Hu[?12l[?25h3[24;1H[K[?25l[5;1H[?12l[?25h[?25l[24;1H1 line less; before #4  0 seconds ago[4;3H[K[5;1H[1m[34m~                                                                               [4;2H[?12l[?25h[?25l[m[24;22H3[4;1H[1m[34m~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[3;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[4;1Hc[4;2H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[4;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[5;1H1[5;2H[K[5;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[24;1H=[?12l[?25hsetline('.','1234')[?25l[5;2H20
34[6;3H[K[24;1H[1m-- INSERT --[m[24;13H[K[6;1Hu[?12l[?25h3[24;1H[K[?25l[6;1H[?12l[?25h[?25l[24;1H1 line less; before #7  0 seconds ago[5;3H[K[6;1H[1m[34m~                                                                               [5;2H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[5;2H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[6;1Hd[6;2H[K[6;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[6;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[7;1H1[7;2H[K[7;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[24;1H=[?12l[?25hstring(123)[?25l[24;1H[K[7;2H2123[?12l[?25h[?25l[24;1H1 line less; before #9  0 seconds ago[7;1H[1m[34m~                                                                               [6;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%w >>test.out[?25l"test.out" [24;12H[K[24;12H6L, 12C appended[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
flaky test ok first time
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test62.failed test.ok test.out X* viminfo
cp test62.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test62.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test62.in" 191 lines, 5514 characters[1;1HTests for tab pages

STARTTEST
:so small.vim
:lang C
:" Simple test for opening and closing a tab page
:tabnew
:let nr = tabpagenr()
:q
:call append(line('$'), 'tab page ' . nr)
:unlet nr
:"
:" Open three tab pages and use ":tabdo"
:0tabnew
:1tabnew
:888tabnew
:tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
:tabclose! 2
:tabrewind
:let line1 = getline('$')
:undo
:q
:tablast[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for tab pages[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 185 lines, 5465 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;9HC tabnext 1[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlang C[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Simple test for opening and closing a tab page[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m test62.in [m[1m [No Name] [m[7m                                                          [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet nr = tabpagenr()[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq[?25l[27m[m[H[2J[1;9HC tabnext 1[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall append(line('$'), 'tab page ' . nr)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet nr[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Open three tab pages and use ":tabdo"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h0tabnew[?25l[27m[m[H[2J[1;1H[1m [No Name] [m[4m[30m[47m + test62.in [m[7m                                                        [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h1tabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m [No Name] [m[1m [No Name] [m[4m[30m[47m + test62.in [m[7m                                             [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h888tabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m [No Name]  [No Name]  + test62.in [m[1m [No Name] [m[7m                                  [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabdo call append(line('$'), 'this is tab page ' . tabpagenr())[?25l[27m[m[H[2J[1;1H[4m[30m[47m + [No Name]  + [No Name]  + test62.in [m[1m + [No Name] [m[7m                            [m[1;80H[4m[30m[47mX[m[3;1Hthis is tab page 4
[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabclose! 2[?25l[1;17H[4m[30m[47mtest62.in[m[1C[1m + [No Name] [m[7m             [27C [m[1;80H[4m[30m[47mX[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25htabrewind[?25l[27m[m[H[2J[1;1H[1m + [No Name] [m[4m[30m[47m + test62.in  + [No Name] [m[7m                                         [m[1;80H[4m[30m[47mX[m[3;1Hthis is tab page 1
[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line1 = getline('$')[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hundo[?25l2 fewer lines; before #1  0 seconds ago[1;2H[1m[No Name]e ][m[4m[30m[47m [m[1m [m[4m[30m[47m+ test62.in  + [No Name] [m[7m  [40C [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hq[?25l[27m[m[H[2J[1;1H[1m + test62.in [m[4m[30m[47m + [No Name] [m[7m                                                      [m[1;80H[4m[30m[47mX[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25htablast[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test62.in [m[1m + [No Name] [m[7m                                                      [m[1;80H[4m[30m[47mX[m[3;1Hthis is tab page 4
[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line2 = getline('$')[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[27m[m[H[2J[1;9HC tabnext 1[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall append(line('$'), line1)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), line2)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet line1 line2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for settabvar() and gettabvar() functions. Open a new tab page and [?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" set 3 variables to a number, string and a list. Verify that the variables[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" are correctly set.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test62.in [m[1m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabfirst[?25l[27m[m[H[2J[1;1H[1m + test62.in [m[4m[30m[47m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall settabvar(2, 'val_num', 100)[?25l[27m[m[H[2J[1;1H[1m + test62.in [m[4m[30m[47m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall settabvar(2, 'val_str', 'SetTabVar test')[?25l[27m[m[H[2J[1;1H[1m + test62.in [m[4m[30m[47m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall settabvar(2, 'val_list', ['red', 'blue', 'green'])[?25l[27m[m[H[2J[1;1H[1m + test62.in [m[4m[30m[47m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet test_status = 'gettabvar: fail'[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar tes
[23;80Ht[24;1H' && gettabvar(2, 'val_list') == ['red', 'blue', 'green'][?25l[24;1H[K[24;1H:  [?12l[?25h:    let test_status = 'gettabvar: pass'
[?25l:  [?12l[?25h:endif[1;1H[2L[1;1H[1m + test62.in [m[4m[30m[47m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[?25l[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall append(line('$'), test_status)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabnext 2[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test62.in [m[1m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet test_status = 'settabvar: fail'[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif t:val_num == 100 && t:val_str == 'SetTabVar test'  && t:val_list == ['red',
'blue', 'green'][?25l[24;1H[K[24;1H:  [?12l[?25h:   let test_status = 'settabvar: pass'
[?25l:  [?12l[?25h:endif[1;1H[2L[1;1H[4m[30m[47m + test62.in [m[1m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[?25l[m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25htabclose[?25l[27m[m[H[2J[1;9HC tabnext 1[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25hcall append(line('$'), test_status)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has('gui') || has('clientserver')[?25l
:  [?12l[?25h:" Test for ":tab drop exist-file" to keep current window.
[?25l:  [?12l[?25h:sp test1
[?25l:  [?12l[?25h:tab drop test1
[?25l:  [?12l[?25h:let test_status = 'tab drop 1: fail'
[?25l:  [?12l[?25h:if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
[?25l:    [?12l[?25h:    let test_status = 'tab drop 1: pass'
[?25l:    [?12l[?25h:endif
[?25l:  [?12l[?25h:close
[?25l:  [?12l[?25h:call append(line('$'), test_status)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Test for ":tab drop new-file" to keep current window of tabpage 1.
[?25l:  [?12l[?25h:split
[?25l:  [?12l[?25h:tab drop newfile
[?25l:  [?12l[?25h:let test_status = 'tab drop 2: fail'
[?25l:  [?12l[?25h:if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1
[?25l:    [?12l[?25h:    let test_status = 'tab drop 2: pass'
[?25l:    [?12l[?25h:endif
[?25l:  [?12l[?25h:tabclose
[?25l:  [?12l[?25h:q
[?25l:  [?12l[?25h:call append(line('$'), test_status)
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:"
[?25l:  [?12l[?25h:" Test for ":tab drop multi-opend-file" to keep current tabpage and window.
[?25l:  [?12l[?25h:new test1
[?25l:  [?12l[?25h:tabnew
[?25l:  [?12l[?25h:new test1
[?25l:  [?12l[?25h:tab drop test1
[?25l:  [?12l[?25h:let test_status = 'tab drop 3: fail'
[?25l:  [?12l[?25h:if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1
[?25l:    [?12l[?25h:    let test_status = 'tab drop 3: pass'
[?25l:    [?12l[?25h:endif
[?25l:  [?12l[?25h:tabclose
[?25l:  [?12l[?25h:q
[?25l:  [?12l[?25h:call append(line('$'), test_status)
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:" :drop not supported
[?25l:  [?12l[?25h:call append(line('$'), 'tab drop 1: pass')
[?25l:  [?12l[?25h:call append(line('$'), 'tab drop 2: pass')
[?25l:  [?12l[?25h:call append(line('$'), 'tab drop 3: pass')
[?25l:  [?12l[?25h:endif[27m[m[H[2J[?25l[1;9HC tabnext 1[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor i in range(9) | tabnew | endfor[?25l[27m[m[H[2J[1;1H[4m[30m[47m + 2.in   Name]   Name]   Name]   Name]   Name]   Name]   Name]   Name] [m[1m  Name] [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[27m[m[H[2J[1;1H[1m + 2.in [m[4m[30m[47m  Name]   Name]   Name]   Name]   Name]   Name]   Name]   Name]   Name] [1;80HX[?25l[m[2;9Hautocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3[3;9HC tabnext 3[4;9Hlet g:r+=[tabpagenr().'/'.tabpagenr('$')]
    else[6;9Hlet g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnterr[7;1H","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","Wii[8;1HnLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===[9;1H=","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnexx[10;1Ht 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ==[11;1H==","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===",""[12;1H=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
    endif
endfunction
:call Test()
:$ put =g:r
:"
:"
:/^Results/,$w! test.out
:qa!
ENDTEST

Results:[22;1H[?12l[?25h
[?25l[2;23r[2;1H[11M[1;24r[13;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
[1m[34m~                                                                               [23;1H~                                                                               [21;1H[?12l[?25h[?25l


[m=[?12l[?25htabpagenr()[?25l[22;1H1[22;2H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabmove 5[?25l[1;1H[4m[30m[47m  Name][m[1m [m[4m[30m[47m [m[32C[1m + 2.in [m[31C[4m[30m[47m [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H6[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabmove -2[?25l[1;25H[1m + 2.in [m[8C[4m[30m[47m  Name][m[1m [m[4m[30m[47m [31C [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H4[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabmove +4[?25l[1;25H[4m[30m[47m  Name][m[1m [m[4m[30m[47m [m[24C[1m + 2.in [m[15C[4m[30m[47m [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H8[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabmove[?25l[1;57H[4m[30m[47m  Name][m[1m [m[4m[30m[47m [m[8C[1m + 2.in [m[1;80H[4m[30m[47mX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H10[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabmove -20[?25l[1;1H[1m + 2.in [m[64C[4m[30m[47m  Name]X[1;80H [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabmove +20[?25l[1;1H[4m[30m[47m  Name][m[1m [m[4m[30m[47m [m[64C[1m + 2.in [m[1;80H[4m[30m[47mX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H10[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h3tabmove[?25l[1;25H[1m + 2.in [m[40C[4m[30m[47m  Name]X[1;80H [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H4[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h7tabmove 5[?25l[1;25H[4m[30m[47m  Name][m[1m [m[4m[30m[47m [m[8C[1m + 2.in [m[31C[4m[30m[47m [1;80HX[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H=[?12l[?25htabpagenr()[?25l[2;23r[23;1H
[1;24r[22;1H6[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet a='No error caught.'[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:tabmove foo
[?25l:  [?12l[?25h:catch E474
[?25l:  [?12l[?25h:let a='E474 caught.'
[?25l:  [?12l[?25h:endtry[1;1H[4L[1;1H[4m[30m[47m  Name]   Name]   Name]   Name]   Name] [m[1m + 2.in [m[4m[30m[47m  Name]   Name]   Name]   Name] [1;80HX[?25l[m[2;1HENDTEST

Results:[24;1H[K[23;1H[?12l[?25h[?25l
=[?12l[?25ha[?25l[23;1HE474 caught.[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test autocommands[?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabonly![?25l[1;1H:qa![1;5H[K[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:r=[][?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcommand -nargs=1 -bar C :call add(g:r, '=== ' . <q-args> . ' ===')|<args>[?25l[23;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction Test()[?25l
:  [?12l[?25h    let hasau=has('autocmd')
[?25l:  [?12l[?25h    if hasau
[?25l:    [?12l[?25h        autocmd TabEnter * :call add(g:r, 'TabEnter')
[?25l:    [?12l[?25h        autocmd WinEnter * :call add(g:r, 'WinEnter')
[?25l:    [?12l[?25h        autocmd BufEnter * :call add(g:r, 'BufEnter')
[?25l:    [?12l[?25h        autocmd TabLeave * :call add(g:r, 'TabLeave')
[?25l:    [?12l[?25h        autocmd WinLeave * :call add(g:r, 'WinLeave')
[?25l:    [?12l[?25h        autocmd BufLeave * :call add(g:r, 'BufLeave')
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h    let t:a='a'
[?25l:  [?12l[?25h    C tab split
[?25l:  [?12l[?25h    if !hasau
[?25l:    [?12l[?25h        let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h    let t:a='b'
[?25l:  [?12l[?25h    C tabnew
[?25l:  [?12l[?25h    if !hasau
[?25l:    [?12l[?25h        let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeav
[23;80He[24;1H', 'BufEnter']
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h    let t:a='c'
[?25l:  [?12l[?25h    call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'
[23;80H)[24;1H))
[?25l:  [?12l[?25h    C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)')
[?25l:  [?12l[?25h    call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'
[23;80H)[24;1H))
[?25l:  [?12l[?25h    let w:a='a'
[?25l:  [?12l[?25h    C vsplit
[?25l:  [?12l[?25h    if !hasau
[?25l:    [?12l[?25h        let g:r+=['WinLeave', 'WinEnter']
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h    let w:a='a'
[?25l:  [?12l[?25h    let tabn=tabpagenr()
[?25l:  [?12l[?25h    let winr=range(1, winnr('$'))
[?25l:  [?12l[?25h    C tabnext 1
[?25l:  [?12l[?25h    if !hasau
[?25l:    [?12l[?25h        let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnte
[23;80Hr[24;1H', 'BufEnter']
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25h    call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')
[23;80H)[24;1H)
[?25l:  [?12l[?25h    C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
[?25l:  [?12l[?25h    call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')
[23;80H)[24;1H)
[?25l:  [?12l[?25h    if hasau
[?25l:    [?12l[?25h        augroup TabDestructive
[?25l:    [?12l[?25h            autocmd TabEnter * :C tabnext 2 | C tabclose 3
[?25l:    [?12l[?25h        augroup END
[?25l:    [?12l[?25h        C tabnext 3
[?25l:    [?12l[?25h        let g:r+=[tabpagenr().'/'.tabpagenr('$')]
[?25l:    [?12l[?25h        autocmd! TabDestructive TabEnter
[?25l:    [?12l[?25h        C tabnew
[?25l:    [?12l[?25h        C tabnext 1
[?25l:    [?12l[?25h        autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose
3
[?25l:    [?12l[?25h        C tabnext 3
[?25l:    [?12l[?25h        let g:r+=[tabpagenr().'/'.tabpagenr('$')]
[?25l:    [?12l[?25h    else
[?25l:    [?12l[?25h        let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","Wi
[23;80Hn[24;1HEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ==
[23;80H=[24;1H","WinLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnex
[23;80Ht[24;1H 1 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== 
[23;80Ht[24;1Habnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabne
[23;80Hx[24;1Ht 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 
[23;80H=[24;1H==","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",]
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25hendfunction[27m[m[H[2J[?25l[1;1H:qa!
ENDTEST

Results:
tab page 2
this is tab page 3
this is tab page 1
this is tab page 4
gettabvar: pass
settabvar: pass
tab drop 1: pass
tab drop 2: pass
tab drop 3: pass
1
6
4
8
10
1
10
4
6
E474 caught.[?12l[?25h[?25l
:[?12l[?25hcall Test()[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test62.in [m[1m + test62.in [m[7m                                                      [m[1;80H[4m[30m[47mX[m[2;1HENDTEST

Results:
tab page 2
this is tab page 3
this is tab page 1
this is tab page 4
gettabvar: pass
settabvar: pass
tab drop 1: pass
tab drop 2: pass
tab drop 3: pass
1
6
4
8
10
1
10
4
6
E474 caught.[?12l[?25h[?25l
:[?12l[?25h$ put =g:r[?25l68 more lines[2;1HWinLeave
TabLeave
WinEnter
TabEnter[5;10H[K[6;1HBufEnter[6;9H[K[7;1H=== tabnext 3 ===[7;18H[K[8;1HBufLeave[8;9H[K[9;1HWinLeave[9;9H[K[10;1HTabLeave[10;9H[K[11;1HWinEnter[11;10H[K[12;1HTabEnter[12;10H[K[13;1H=== tabnext 2 ===
BufLeave
WinLeave
TabLeave
WinEnter
TabEnter
=== tabnext 2 ===
=== tabclose 3 ===
BufEnter
=== tabclose 3 ===
2/2[23;4H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^Results/,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 88 lines, 1038 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test63.failed test.ok test.out X* viminfo
cp test63.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test63.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test63.in" 174 lines, 5281 characters[1;1HTest for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",
"matchadd()", "matchaddpos", "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']  [16;1H&& matcharg(3) == ['MyGroup3', 'XXX']
:  let @r .= "OK\n"
:else
:  let @r .= "FAILED\n"
:endif
:" --- Check that "matcharg()" returns an empty list if the argument is not 1,
:" --- 2 or 3 (only 0 and 4 are tested).
:let @r .= "*** Test 2: "[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for ":match", ":2match", ":3match", "clearmatches()", "getmatches()",[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 167 lines, 5087 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1
:redraw!
:let v1 = screenattr(1, 1)
:let v5 = screenattr(1, 5)
:let v6 = screenattr(1, 6)
:let v8 = screenattr(1, 8)
:let v10 = screenattr(1, 10)
:let v11 = screenattr(1, 11)
:let @r .= string(getmatches())."\n"
:if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1
:  let @r .= "OK\n"
:else
:  let @r .= "FAILED\n"
:endif
:call clearmatches()
G"rp
:/^Results/,$wq! test.out
ENDTEST

Results of test63:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "matcharg()" returns the correct group and pattern if a match[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- is defined.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r = "*** Test 1: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhighlight MyGroup1 ctermbg=red[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhighlight MyGroup2 ctermbg=green[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hhighlight MyGroup3 ctermbg=blue[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmatch MyGroup1 /TODO/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2match MyGroup2 /FIXME/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h3match MyGroup3 /XXX/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif matcharg(1) == ['MyGroup1', 'TODO'] && matcharg(2) == ['MyGroup2', 'FIXME']
&& matcharg(3) == ['MyGroup3', 'XXX'][?25l[24;1H[K[24;1H:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" --- Check that "matcharg()" returns an empty list if the argument is not 1,[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- 2 or 3 (only 0 and 4 are tested).[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 2: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif matcharg(0) == [] && matcharg(4) == [][?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" --- Check that "matcharg()" returns ['', ''] if a match is not defined.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 3: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmatch[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2match[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h3match[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif matcharg(1) == ['', ''] && matcharg(2) == ['', ''] && matcharg(3) == ['', '
[23;80H'[24;1H][?25l[24;1H[K[24;1H:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" --- Check that "matchadd()" and "getmatches()" agree on added matches and[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- that default values apply.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 4: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO")[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, '
[23;80Hi[24;1Hd': 4}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 42, 'id': 5}, {'g
[23;80Hr[24;1Houp': 'MyGroup3', 'pattern': 'XXX', 'priority': 60, 'id': 17}][?25l[23;1H[K[24;1H[K[23;1H:  [?12l[?25h:  let @r .= "OK\n"[?25l
:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" --- Check that "matchdelete()" deletes the matches defined in the previous[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- test correctly.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 5: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall matchdelete(m1)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall matchdelete(m2)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall matchdelete(m3)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m3[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif getmatches() == [][?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" --- Check that "matchdelete()" returns 0 if successful and otherwise -1.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 6: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m = matchadd("MyGroup1", "TODO")[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet r1 = matchdelete(m)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet r2 = matchdelete(42)[?25l[1m[37m[41mE803: ID not found: 42[m[24;23H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif r1 == 0 && r2 == -1[?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hunlet m[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet r1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet r2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "clearmatches()" clears all matches defined by ":match" and[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- "matchadd()".[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 7: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO")[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmatch MyGroup1 /COFFEE/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2match MyGroup2 /HUMPPA/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h3match MyGroup3 /VIM/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall clearmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif getmatches() == [][?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hunlet m1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m3[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "setmatches()" restores a list of matches saved by[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- "getmatches()" without changes. (Matches with equal priority must also[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- remain in the same order.)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 8: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m1 = matchadd("MyGroup1", "TODO")[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m2 = matchadd("MyGroup2", "FIXME", 42)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet m3 = matchadd("MyGroup3", "XXX", 60, 17)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmatch MyGroup1 /COFFEE/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2match MyGroup2 /HUMPPA/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h3match MyGroup3 /VIM/[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet ml = getmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall clearmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall setmatches(ml)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif getmatches() == ml[?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall clearmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet m3[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet ml[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "setmatches()" will not add two matches with the same ID. The[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- expected behaviour (for now) is to add the first match but not the[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- second and to return 0 (even though it is a matter of debate whether[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- this can be considered successful behaviour).[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 9: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet r1 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, 
[23;80H'[24;1Hid': 1}, {'group': 'MyGroup2', 'pattern': 'FIXME', 'priority': 10, 'id': 1}])[?25l[23;1H[1m[37m[41mE801: ID already taken: 1[m[23;26H[K[24;1H[K[24;1H[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hif getmatches() == [{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10, '
[23;80Hi[24;1Hd': 1}] && r1 == 0[?25l[24;1H[K[24;1H:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[5L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1
:redraw![24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall clearmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet r1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "setmatches()" returns 0 if successful and otherwise -1.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- (A range of valid and invalid input values are tried out to generate the[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- return values.)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 10: "[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet rs1 = setmatches([])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet rs2 = setmatches([{'group': 'MyGroup1', 'pattern': 'TODO', 'priority': 10,
'id': 1}])[?25l[1;1H[L[1;1H:set nolazyredraw[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall clearmatches()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet rf1 = setmatches(0)[?25l[1m[37m[41mE714: List required[m[24;20H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet rf2 = setmatches([0])[?25l[1m[37m[41mE474: Invalid argument[m[24;23H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet rf3 = setmatches([{'wrong key': 'wrong value'}])[?25l[1m[37m[41mE474: Invalid argument[m[24;23H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif rs1 == 0 && rs2 == 0 && rf1 == -1 && rf2 == -1 && rf3 == -1[?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hunlet rs1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet rs2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet rf1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet rf2[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet rf3[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" --- Check that "matchaddpos()" positions matches correctly[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= "*** Test 11:\n"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nolazyredraw[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall setline(1, 'abcdefghijklmnopq')[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1[?25l[27m[m[H[2J[1;1Habcd[41me[mfg[41mhij[mklmnopq
"matchadd()", "matchaddpos", "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']  [16;1H&& matcharg(3) == ['MyGroup3', 'XXX']
:  let @r .= "OK\n"
:else
:  let @r .= "FAILED\n"
:endif
:" --- Check that "matcharg()" returns an empty list if the argument is not 1,
:" --- 2 or 3 (only 0 and 4 are tested).
:let @r .= "*** Test 2: "[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hredraw![?25l[27m[m[H[2J[1;1Habcd[41me[mfg[41mhij[mklmnopq
"matchadd()", "matchaddpos", "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']  [16;1H&& matcharg(3) == ['MyGroup3', 'XXX']
:  let @r .= "OK\n"
:else
:  let @r .= "FAILED\n"
:endif
:" --- Check that "matcharg()" returns an empty list if the argument is not 1,
:" --- 2 or 3 (only 0 and 4 are tested).
:let @r .= "*** Test 2: "[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet v1 = screenattr(1, 1)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v5 = screenattr(1, 5)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v6 = screenattr(1, 6)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v8 = screenattr(1, 8)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v10 = screenattr(1, 10)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v11 = screenattr(1, 11)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @r .= string(getmatches())."\n"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1[?25l
:  [?12l[?25h:  let @r .= "OK\n"
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h:  let @r .= "FAILED\n"
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1Habcd[41me[mfg[41mhij[mklmnopq
"matchadd()", "matchaddpos", "matcharg()", "matchdelete()", and "setmatches()".

STARTTEST[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall clearmatches()[?25l[1;5Hefghij[?12l[?25h[?25l[27m[m[H[2J[1;1H:set nolazyredraw
:call setline(1, 'abcdefghijklmnopq')
:call matchaddpos("MyGroup1", [[1, 5], [1, 8, 3]], 10, 3)
:1
:redraw!
:let v1 = screenattr(1, 1)
:let v5 = screenattr(1, 5)
:let v6 = screenattr(1, 6)
:let v8 = screenattr(1, 8)
:let v10 = screenattr(1, 10)
:let v11 = screenattr(1, 11)
:let @r .= string(getmatches())."\n"
:if v1 != v5 && v6 == v1 && v8 == v5 && v10 == v5 && v11 == v1
:  let @r .= "OK\n"
:else
:  let @r .= "FAILED\n"
:endif
:call clearmatches()
G"rp
:/^Results/,$wq! test.out
ENDTEST

Results of test63:[?12l[?25h[?25l
13 more lines[1;23r[23;1H
[1;24r[23;1H*** Test 1: OK[24;1H[K[24;1H13 more lines[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H*** Test 2: OK[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 14 lines, 273 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test64.failed test.ok test.out X* viminfo
cp test64.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test64.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test64.in" 638 lines, 26459 characters[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'])[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for regexp patterns without multi-byte support.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[7;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 605 lines, 25984 characters written[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[8;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:" start and end of buffer
/\%^
yeGo[34m^[[mp:"
50%/\%^..
yeGo[34m^[[mpA END[34m^[[m:"
50%/\%$
"ayb20gg/..\%$
"bybGo[34m^[[m"apo[34m^[[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[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" tl is a List of Lists with:[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    regexp pattern[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    text to test the pattern on[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected match (optional)[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected submatch 1 (optional)[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected submatch 2 (optional)[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    etc.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"  When there is no match use only the first two items.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet tl = [][?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Previously written tests """"""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ab', 'aab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'b', 'abcdef', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc*', 'abbdef', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'c*', 'ccc', 'ccc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc*', 'abdef', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'c*', 'abdef', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\+', 'abdef']) "no match[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"operator \|[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'c\?', 'ccb', 'c'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\?', 'abd', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'bc\?', 'abccd', 'bc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{1}', 'ab', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'caad', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'aba'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'abaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}', 'aaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vb{1}', 'abca', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vba{2}', 'abaa', 'baa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vba{3}', 'aabaac'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){1}', 'acb'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2}', 'abac'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,3}){3}', 'daac'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,2}){2}', 'dac'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(abc){2}', 'abcabd', ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a*', 'cc', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a*)+', 'cc', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{0,2})+', 'cc', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a*)+', '', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((a*)+)+', '', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab)*)+', '', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{1,3}', 'aab', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2,3}', 'abaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{2}|b{2}', 'abab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va*a{2}', 'a', ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va*a{2}', 'aa', 'aa' ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va*a{2}', 'bbbabcc', ])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va*b*|a*c*', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"submatches[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a)', 'ab', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x', 'abcdef'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""" Simple tests """""""""""""""""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Search single groups[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ab', 'aab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ab', 'baced'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ab', '                    ab           ', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Search multi-modifiers[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x*', 'xcd', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" empty match is good[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x*', 'abcdoij', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" no match here[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\+', 'abcdoin'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\=', 'x sdfoij', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\?', 'x sdfoij', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" empty match is good[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\?', 'abc sfoij', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" same thing as 'a?'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" same thing as 'a\{0,1}'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{3,6}', 'aa siofuh'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{0}', 'asoiuj', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2}', 'aaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj na
[23;80Hs[24;1Hfvius afg aaaa sfiuhuhiushf', 'aa'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" same thing as 'a*'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{,5}', 'abcd', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" leading star as normal char when \{} follows[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^*\{4,}$', '***'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^*\{4,}$', '****', '****'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^*\{4,}$', '*****', '*****'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" same thing as 'a*'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" anti-greedy version of 'a?'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-3,6}', 'aa siofuh'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-0}', 'asoiuj', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-,5}', 'abcd', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" anti-greedy version of 'a*'[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test groups of characters and submatches[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', 
[23;80H'[24;1H'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupi
[23;80Hi[24;1Hiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obe
[23;80Hl[24;1Hix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', '
[23;80Hy[24;1Hyxxzz', 'yyxxzz', 'yyxxzz'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\p*', 'aÃ¡ [34m^I[m', 'aÃ¡ '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test greedy-ness and lazy-ness[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa
[23;80H'[24;1H,'xayzxayz'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzx
[23;80Ha[24;1Hyzxa',''])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test Character classes[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test collections and character range [][?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v[a]', 'abcd', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a[bcd]', 'abcd', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a[b-d]', 'acbd', 'ac'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijkl
[23;80Hm[24;1Hnopqrstuvwxyz'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '[[:alpha:]\+]', '6x8','x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^abc]\+','abcabcabc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-f]*','iiiiiiii',''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-f]*','abcdefgh','abcdef'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-f]\+','abcdefgh','gh'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[-a]', '-', '-'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-]', '-', '-'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" filename regexp[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" special chars[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" collation elem[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" middle of regexp[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_f', "  \na ", "\n"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_f\+', "  \na ", "\na"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Test start/end of line, start/end of file[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^a.', "a_\nb ", "a_"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^a.', "b a \na_"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.a$', " a\n "])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.a$', " a b\n_a", "_a"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%^a.', "a a\na", "a "])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%^a', " a \na "])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.a\%$', " a\n "])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.a\%$', " a\n_a", "_a"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Test recognition of character classes[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Tests for \z features[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" match ends at \ze[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'xx \ze test', 'xx '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" match starts at \zs[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'aa \zsax', ' ax'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if 
[23;80Hl[24;1Hast'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\>\zs.', 'aword. ', '.'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is   [a t', '  '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Tests for \@= and \& features[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc\@=', 'abc', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abc\@=', 'ababc', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" will never match, no matter the input text[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abcd\@=e', 'abcd'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" will never match[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'abcd\@=e', 'any text in here ... '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', '
[23;80HJ[24;1Hohn is Bobs friend'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep
[23;80H'[24;1H, 'test1'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@!...bar', 'foobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']
[23;80H)[24;1H[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 
[23;80H'[24;1Hs'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Combining different tests and features[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '', 'abcd', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(())', 'any possible text', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v%(ab(xyz)c)', '   abxyzc ', 'abxyzc', 'xyz'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" \%u and friends[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%d32', 'yes no', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%o40', 'yes no', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%x20', 'yes no', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%u0020', 'yes no', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%U00000020', 'yes no', ' '])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""" \%[abc][?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'fobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'barxx', 'barx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'bxx', 'bx'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\%[bar]x', 'xxx', 'x'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'
[23;80H][24;1H)[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Alternatives, must use first longest match[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'goo\|go', 'google', 'goo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\<goo\|\<go', 'google', 'goo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\<goo\|go', 'google', 'goo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Back references[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7
[23;80H\[24;1H8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e
[23;80H'[24;1H, 'f', 'g', 'h', 'i'])[?25l[1;1H[2L[1;1H:" start and end of buffer
/\%^[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo
[23;80H.[24;1Hcom', 'bat'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo
[23;80H.[24;1Hbat', 'bat', 'bat'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '$
[23;80H{[24;1H0}', '0'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Look-behind with limit[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<
[23;80H'[24;1H])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<
[23;80H<[24;1H'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" look-behind match in front of a zero-width item[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '19
[23;80H7[24;1H0'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@<=\>', 'foobar'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" complicated look-behind match[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""" \@>[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(a*\)\@>a', 'aaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\(.\{-}b\)\@>.', '  abcbd', '  abc', '  ab'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" TODO: BT engine does not restore submatch after failure[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" "\_" prepended negated collection matches EOL[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Requiring lots of states.[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', "
12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012",
"1234-"])[?25l[1;1H[2L[1;1H:" start and end of buffer
/\%^[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Skip adding state twice[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", 
[23;80H"[24;1H#if", ' FOO'])[?25l[1;1H[L[1;1H:" start and end of buffer[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Run the tests[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor t in tl[?25l
:  [?12l[?25h:  let re = t[0]
[?25l:  [?12l[?25h:  let pat = t[1]
[?25l:  [?12l[?25h:  let text = t[2]
[?25l:  [?12l[?25h:  let matchidx = 3
[?25l:  [?12l[?25h:  for engine in [0, 1, 2]
[?25l:    [?12l[?25h:    if engine == 2 && re == 0 || engine == 1 && re ==1
[?25l:      [?12l[?25h:      continue
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    let &regexpengine = engine
[?25l:    [?12l[?25h:    try
[?25l:      [?12l[?25h:      let l = matchlist(text, pat)
[?25l:      [?12l[?25h:    catch
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", caused an exception: \"' . v:exception . '\"'
[?25l:      [?12l[?25h:    endtry
[?25l:    [?12l[?25h:" check the match itself
[?25l:    [?12l[?25h:    if len(l) == 0 && len(t) > matchidx
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", did not match, expected: \"' . t[matchidx] . '\"'
[?25l:      [?12l[?25h:    elseif len(l) > 0 && len(t) == matchidx
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", match: \"' . l[0] . '\", expected no match'
[?25l:      [?12l[?25h:    elseif len(t) > matchidx && l[0] != t[matchidx]
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . tet . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
[?25l:      [?12l[?25h:    else
[?25l:      [?12l[?25h:      $put ='OK ' . engine . ' - ' . pat
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    if len(l) > 0
[?25l:      [?12l[?25h:"   check all the nine submatches
[?25l:      [?12l[?25h:      for i in range(1, 9)
[?25l:[8C[?12l[?25h:        if len(t) <= matchidx + i
[?25l:[10C[?12l[?25h:          let e = ''
[?25l:[10C[?12l[?25h:        else
[?25l:[10C[?12l[?25h:          let e = t[matchidx + i]
[?25l:[10C[?12l[?25h:        endif
[?25l:[8C[?12l[?25h:        if l[i] != e
[?25l:[10C[?12l[?25h:          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: "' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
[?25l:[10C[?12l[?25h:        endif
[?25l:[8C[?12l[?25h:      endfor
[?25l:      [?12l[?25h:      unlet i
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:  endfor
[?25l:  [?12l[?25h:endfor[27m[m[H[2J[?25l[1;1HOK 0 - \(a*\)\@>b
OK 1 - \(a*\)\@>b
OK 2 - \(a*\)\@>b
OK 0 - ^\(.\{-}b\)\@>.
OK 1 - ^\(.\{-}b\)\@>.
OK 2 - ^\(.\{-}b\)\@>.
OK 0 - \(.\{-}\)\(\)\@>$
OK 1 - \(.\{-}\)\(\)\@>$
OK 2 - \(.\{-}\)\(\)\@>$
OK 0 - \(a*\)\@>a\|a\+
OK 2 - \(a*\)\@>a\|a\+
OK 0 - \_[^8-9]\+
OK 1 - \_[^8-9]\+
OK 2 - \_[^8-9]\+
OK 0 - \_[^a]\+
OK 1 - \_[^a]\+
OK 2 - \_[^a]\+
OK 0 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 1 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 2 - [0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}
OK 0 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 1 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=
OK 2 - ^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=[?12l[?25h[?25l
:[?12l[?25hunlet t tl e l[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""""" multi-line tests """"""""""""""""""""[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet tl = [][?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" back references[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/D
[23;80Hi[24;1Hr2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt
[23;80H'[24;1H], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])[?25l[1;1H[2L[1;1HOK 0 - \(a*\)\@>b
OK 1 - \(a*\)\@>b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" line breaks[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def'
[23;80H,[24;1H 'XXjk', 'lmn']])[?25l[1;1H[L[1;1HOK 0 - \(a*\)\@>b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check that \_[0-9] matching EOL does not break a following \>[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)
[23;80H\[24;1H.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'loca
[23;80Hl[24;1Hnet/192.168.0.1', ''], ['', 'localnet/XX', '']])[?25l[1;1H[2L[1;1HOK 0 - \(a*\)\@>b
OK 1 - \(a*\)\@>b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check a pattern with a line break and ^ and $[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Run the multi-line tests[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='multi-line tests'[?25l[1;23r[23;1H
[1;24r[23;1Hmulti-line tests[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hfor t in tl[?25l
:  [?12l[?25h:  let re = t[0]
[?25l:  [?12l[?25h:  let pat = t[1]
[?25l:  [?12l[?25h:  let before = t[2]
[?25l:  [?12l[?25h:  let after = t[3]
[?25l:  [?12l[?25h:  for engine in [0, 1, 2]
[?25l:    [?12l[?25h:    if engine == 2 && re == 0 || engine == 1 && re ==1
[?25l:      [?12l[?25h:      continue
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    let &regexpengine = engine
[?25l:    [?12l[?25h:    new
[?25l:    [?12l[?25h:    call setline(1, before)
[?25l:    [?12l[?25h:    exe '%s/' . pat . '/XX/'
[?25l:    [?12l[?25h:    let result = getline(1, '$')
[?25l:    [?12l[?25h:    q!
[?25l:    [?12l[?25h:    if result != after
[?25l:      [?12l[?25h:      $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . 
[23;80H'[24;1H\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"'
[?25l:      [?12l[?25h:    else
[?25l:      [?12l[?25h:      $put ='OK ' . engine . ' - ' . pat
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:  endfor
[?25l:  [?12l[?25h:endfor[27m[m[H[2J[?25l[1;1HOK 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\}\(255[13;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[15;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[17;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1[?12l[?25h[?25l
:[?12l[?25hunlet t tl[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check that using a pattern on two lines doesn't get messed up by using[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" matchstr() with \ze in between.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset re=0[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Substitute here[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1HyeGo[34m^[[mp:"
50%/\%^..
yeGo[34m^[[mpA END[34m^[[m:"
50%/\%$
"ayb20gg/..\%$
"bybGo[34m^[[m"apo[34m^[[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

[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"'[?25l[13;5H5">Ta 5</Title>
<T="7">Ac 7</Title>[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Substitute here[?25l[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h.+1,.+2yank[?25l[12;1H[?12l[?25h[?25l[27m[m[H[2J[1;1HOK 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\}\(255[13;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[15;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[17;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H<T="5">Ta 5</Title>[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check a pattern with a look beind crossing a line boundary[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Behind:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H"ayb20gg/..\%$
"bybGo[34m^[[m"apo[34m^[[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
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h\(<\_[xy]\+\)\@3<=start[?25l[18;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.yank[?25l[18;3H[?12l[?25h[?25l[27m[m[H[2J[1;1HOK 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\}\(255[10;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[12;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[14;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hxxstart3[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check matching Visual area[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Visual:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H<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:
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[mthe[?25l[?12l[?25h[?25l[7mxe the the[?12l[?25h[?25l[m[24;1H[K[24;1H:'<,'>[?12l[?25hs/\%Ve/E/g[?25l3 substitutions on 1 line[13;4HxE thE thE[?12l[?25h
[?25la[7mndaxand andaxand [?12l[?25h[?25l[m[24;1H[K[24;1H:'<,'>[?12l[?25hs/\%Va/A/g[?25l6 substitutions on 1 line[14;1HAndAxAnd AndAxAnd[14;18H[K[14;1H[?12l[?25h
ooo[?25l[?12l[?25h[?25l[7mxofor foro[?12l[?25h[?25lx
[mooo[7mxofor foro[?12l[?25h[?25l[m[24;1H[K[24;1H:'<,'>[?12l[?25hs/\%Vo/O/g[?25l8 substitutions on 2 lines[15;4HxOfOr fOrOx
oooxOfOr fOrO[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^Visual/+1,/^Visual/+4yank[?25l[31msearch hit BOTTOM, continuing at TOP[m4 lines yanked[24;15H[K[16;1H[?12l[?25h[?25l[27m[m[H[2J[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\}\(255[8;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[10;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[12;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
4 more lines[1;23r[23;1H
[1;24r[23;1HthexE thE thExethe[24;1H[K[24;1H4 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check matching marks[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Marks:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1Hasdfasd<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
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h
[masdf[9C[?25l[24;1H[K[24;1H:[?12l[?25h.-4,.+6s/.\%>'s.*\%<'e../here/[?25l[13;5Hhereasdf[13;13H[K[13;1H[?12l[?25h
asdf
dfsadfsadf[?25l[24;1H[K[24;1H:[?12l[?25h.-4,.+6s/.\%>'s\_.*\%<'e../again/[?25l[14;23r[23;1H
[1;24r[14;1Hasdfagainasdf[23;1HOK 0 - bc*[24;1H[K[14;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^Marks:/+1,/^Marks:/+3yank[?25l[31msearch hit BOTTOM, continuing at TOP[m3 lines yanked[24;15H[K[14;1H[?12l[?25h[?25l[27m[m[H[2J[1;1HOK 2 - \S.*\nx
OK 0 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[3;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[5;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[7;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe
AndAxAnd AndAxAnd
oooxOfOr fOrOxooo
oooxOfOr fOrOxooo[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
3 more lines[1;23r[1;1H[2M[1;24r[22;1Hasdfhereasdf
asdfagainasdf[24;1H[K[24;1H3 more lines[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check patterns matching cursor position.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunc! Postest()[?25l
:  [?12l[?25h new
[?25l:  [?12l[?25h call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t
[23;80H\[24;1Ht\tfoo", 'abababababababfoo', 'bababababababafoo', '********_'])
[?25l:  [?12l[?25h call setpos('.', [0, 1, 0, 0])
[?25l:  [?12l[?25h s/\%>3c.//g
[?25l:  [?12l[?25h call setpos('.', [0, 2, 4, 0])
[?25l:  [?12l[?25h s/\%#.*$//g
[?25l:  [?12l[?25h call setpos('.', [0, 3, 0, 0])
[?25l:  [?12l[?25h s/\%<3c./_/g
[?25l:  [?12l[?25h %s/\%4l\%>5c./_/g
[?25l:  [?12l[?25h %s/\%6l\%>25v./_/g
[?25l:  [?12l[?25h %s/\%>6l\%3c./!/g
[?25l:  [?12l[?25h %s/\%>7l\%12c./?/g
[?25l:  [?12l[?25h %s/\%>7l\%<9l\%>5v\%<8v./#/g
[?25l:  [?12l[?25h 1,$yank
[?25l:  [?12l[?25h quit!
[?25l:  [?12l[?25hendfunc[1;1H[17L[?25l[1;1HOK 1 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[2;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 2 - \<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(255[4;1H\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>
OK 0 - a\n^b$\n^c
OK 1 - a\n^b$\n^c
OK 2 - a\n^b$\n^c
OK 0 - \(^.\+\n\)\1
OK 1 - \(^.\+\n\)\1
OK 2 - \(^.\+\n\)\1

<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3

thexE thE thExethe[24;1H[K[22;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H[1m[34m~                                                                               [22;1H[?12l[?25h[?25l[m
-0-[23;4H[K[23;3H[?12l[?25h[?25l
:[?12l[?25hset re=0[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall Postest()[?25l3 substitutions on 3 lines
9 lines yanked
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput[?25l9 more lines
[32mPress ENTER or type command to continue[?12l[?25h[m[1;1H[3L[?25l[1;1H<T="5">Ta 5</Title>
<T="7">Ac 7</Title>

xxstart3[4;9H[K[5;1H[K[6;1HthexE thE thExethe[6;19H[K[7;1HAndAxAnd AndAxAnd[7;18H[K[8;1HoooxOfOr fOrOxooo[8;18H[K[9;1HoooxOfOr fOrOxooo[10;1H[K[11;1Hasdfhereasdf[11;13H[K[12;1Hasdfagainasdf[13;1H[K[14;1H-0-
ffo[15;4H[K[16;1Hbob[16;4H[K[17;1H__ooooo[17;8H[K[18;1Hkoooo__[18;8H[K[19;1Hmoooooo
            [12Cf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H-1-[?12l[?25h[?25l
:[?12l[?25hset re=1[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall Postest()[?25l3 substitutions on 3 lines
9 lines yanked
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput[?25l9 more lines
[32mPress ENTER or type command to continue[?12l[?25h[m[1;1H[3L[?25l[1;1Hasdfhereasdf
asdfagainasdf

-0-
ffo[5;4H[K[6;1Hbob[6;4H[K[7;1H__ooooo[7;8H[K[8;1Hkoooo__[8;8H[K[9;1Hmoooooo
            [12Cf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob[16;4H[K[17;1H__ooooo
koooo__
moooooo[19;25H[K[20;1H                 [7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H-2-[?12l[?25h[?25l
:[?12l[?25hset re=2[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall Postest()[?25l3 substitutions on 3 lines
9 lines yanked
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput[?25l9 more lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[3L[1;1Hab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob[6;4H[K[7;1H__ooooo
koooo__
moooooo[9;25H[K[10;1H                 [7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob[16;4H[K[17;1H__ooooo
koooo__
moooooo[19;25H[K[20;1H                 [7Cf__
ab!bababababab
ba!ab##abab?bafoo
**!*****_[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" start and end of buffer[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\%^[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[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'])
[31msearch hit BOTTOM, continuing at TOP[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1Hab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
moooooo[10;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
moooooo[20;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lTest[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;4H[?12l[?25h[?25l[27m[m[H[2J[1;1HOK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}
OK 2 - \va{1,3}
OK 0 - \va{2,3}
OK 1 - \va{2,3}
OK 2 - \va{2,3}[12;1H[?12l[?25h[?25l[24;1H/[?12l[?25h\%^..[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[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'])
[31msearch hit BOTTOM, continuing at TOP[1;1H[?12l[?25h[?25l[27m[m[H[2J[1;1Hba!ab##abab?bafoo
**!*****_
-1-
ffo
bob
__ooooo
koooo__
moooooo[9;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
moooooo[19;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
Test[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lTest[?12l[?25h[?25lt END[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;8H[?12l[?25h[?25l[27m[m[H[2J[1;1HOK 2 - \v(((ab)+)+)+
OK 0 - \v(((ab)+)+)+
OK 1 - \v(((ab)+)+)+
OK 2 - \v(((ab)+)+)+
OK 0 - \v(a{0,2})+
OK 1 - \v(a{0,2})+
OK 2 - \v(a{0,2})+
OK 0 - \v(a*)+
OK 1 - \v(a*)+
OK 2 - \v(a*)+
OK 0 - \v((a*)+)+
OK 1 - \v((a*)+)+
OK 2 - \v((a*)+)+
OK 0 - \v((ab)*)+
OK 1 - \v((ab)*)+
OK 2 - \v((ab)*)+
OK 0 - \va{1,3}
OK 1 - \va{1,3}
OK 2 - \va{1,3}
OK 0 - \va{2,3}
OK 1 - \va{2,3}
OK 2 - \va{2,3}
OK 0 - \v((ab)+|c*)+[12;1H[?12l[?25h[?25l[24;1H/[?12l[?25h\%$[?25l[27m[m[H[2J[1;1H**!*****_
-1-
ffo
bob
__ooooo
koooo__
moooooo[8;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
moooooo[18;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
Test
Test END[?12l[?25h[?25l[27m[m[H[2J[1;1H:" 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', ''])[12;1H[?12l[?25h[?25l[24;1H/[?12l[?25h..\%$[?25l[27m[m[H[2J[1;1H**!*****_
-1-
ffo
bob
__ooooo
koooo__
moooooo[8;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
-2-
ffo
bob
__ooooo
koooo__
moooooo[18;25Hf__
ab!babababababfoo
ba!ab##abab?bafoo
**!*****_
Test
Test END[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lEN[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25lE[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h""""" Write the results """""""""""""[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/\%#=1^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 1099 lines, 20205 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test65.failed test.ok test.out X* viminfo
cp test65.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test65.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test65.in" 95 lines, 2153 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for floating point and logical operators.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 89 lines, 2067 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'
:$put =and(127, 127)
:$put =and(127, 16)
:$put =and(127, 128)
:$put ='OR'
:$put =or(16, 7)
:$put =or(8, 7)
:$put =or(0, 123)
:$put ='XOR'
:$put =xor(127, 127)
:$put =xor(127, 16)
:$put =xor(127, 128)
:$put ='invert'
:$put =and(invert(127), 65535)
:$put =and(invert(16), 65535)
:$put =and(invert(128), 65535)
:$put =invert(1.0)
:/^Results/,$wq! test.out
ENDTEST

Results of test65:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has("float")[?25l
:  [?12l[?25h:  e! test.ok
[?25l:  [?12l[?25h:  wq! test.out
[?25l:  [?12l[?25h:endif[1;1H[3L[?25l[1;1H:$put =float2nr(123.456)
:$put =float2nr(-123.456)
:$put ='AND'[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =printf('%f', 123.456)[?25l[1;23r[23;1H
[1;24r[23;1H123.456000[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%e', 123.456)[?25l[1;23r[23;1H
[1;24r[23;1H1.234560e+02[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', 123.456)[?25l[1;23r[23;1H
[1;24r[23;1H123.456[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" check we don't crash on division by zero[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hecho 1.0 / 0.0[?25linf[24;4H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='+='[?25l[1;23r[23;1H
[1;24r[23;1H+=[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet v = 1.234[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v += 6.543[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =printf('%g', v)[?25l[1;23r[23;1H
[1;24r[23;1H7.777[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet v = 1.234[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v += 5[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =printf('%g', v)[?25l[1;23r[23;1H
[1;24r[23;1H6.234[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet a = 5[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet a += 3.333[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(a)[?25l[1;23r[23;1H
[1;24r[23;1H8.333[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='=='[?25l[1;23r[23;1H
[1;24r[23;1H==[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet v = 1.234[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =v == 1.234[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =v == 1.2341[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='add-subtract'[?25l[1;23r[23;1H
[1;24r[23;1Hadd-subtract[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', 4 + 1.234)[?25l[1;23r[23;1H
[1;24r[23;1H5.234[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', 1.234 - 8)[?25l[1;23r[23;1H
[1;24r[23;1H-6.766[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='mult-div'[?25l[1;23r[23;1H
[1;24r[23;1Hmult-div[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', 4 * 1.234)[?25l[1;23r[23;1H
[1;24r[23;1H4.936[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', 4.0 / 1234)[?25l[1;23r[23;1H
[1;24r[23;1H0.003241[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='dict'[?25l[1;23r[23;1H
[1;24r[23;1Hdict[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string({'x': 1.234, 'y': -2.0e20})[?25l[1;23r[23;1H
[1;24r[23;1H{'x': 1.234, 'y': -2.0e20}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='list'[?25l[1;23r[23;1H
[1;24r[23;1Hlist[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string([-123.4, 2.0e-20])[?25l[1;23r[23;1H
[1;24r[23;1H[-123.4, 2.0e-20][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='abs'[?25l[1;23r[23;1H
[1;24r[23;1Habs[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%d', abs(1456))[?25l[1;23r[23;1H
[1;24r[23;1H1456[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%d', abs(-4))[?25l[1;23r[23;1H
[1;24r[23;1H4[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%d', abs([1, 2, 3]))[?25l[1m[37m[41mE745: Using a List as a Number[m[24;32H[K[1;23r[23;1H
[1;24r[23;1H-1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', abs(14.56))[?25l[1;23r[23;1H
[1;24r[23;1H14.56[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', abs(-54.32))[?25l[1;23r[23;1H
[1;24r[23;1H54.32[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='ceil'[?25l[1;23r[23;1H
[1;24r[23;1Hceil[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', ceil(1.456))[?25l[1;23r[23;1H
[1;24r[23;1H2.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', ceil(-5.456))[?25l[1;23r[23;1H
[1;24r[23;1H-5.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', ceil(-4.000))[?25l[1;23r[23;1H
[1;24r[23;1H-4.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='floor'[?25l[1;23r[23;1H
[1;24r[23;1Hfloor[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', floor(1.856))[?25l[1;23r[23;1H
[1;24r[23;1H1.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', floor(-5.456))[?25l[1;23r[23;1H
[1;24r[23;1H-6.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', floor(4.0))[?25l[1;23r[23;1H
[1;24r[23;1H4.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='log10'[?25l[1;23r[23;1H
[1;24r[23;1Hlog10[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', log10(1000))[?25l[1;23r[23;1H
[1;24r[23;1H3.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', log10(0.01000))[?25l[1;23r[23;1H
[1;24r[23;1H-2.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='pow'[?25l[1;23r[23;1H
[1;24r[23;1Hpow[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', pow(3, 3.0))[?25l[1;23r[23;1H
[1;24r[23;1H27.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', pow(2, 16))[?25l[1;23r[23;1H
[1;24r[23;1H65536.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='round'[?25l[1;23r[23;1H
[1;24r[23;1Hround[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', round(0.456))[?25l[1;23r[23;1H
[1;24r[23;1H0.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', round(4.5))[?25l[1;23r[23;1H
[1;24r[23;1H5.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', round(-4.50))[?25l[1;23r[23;1H
[1;24r[23;1H-5.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='sqrt'[?25l[1;23r[23;1H
[1;24r[23;1Hsqrt[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', sqrt(100))[?25l[1;23r[23;1H
[1;24r[23;1H10.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hecho sqrt(-4.01)[?25l-nan[24;5H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='str2float'[?25l[1;23r[23;1H
[1;24r[23;1Hstr2float[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', str2float('1e40'))[?25l[1;23r[23;1H
[1;24r[23;1H1.0e40[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='trunc'[?25l[1;23r[23;1H
[1;24r[23;1Htrunc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', trunc(1.456))[?25l[1;23r[23;1H
[1;24r[23;1H1.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', trunc(-5.456))[?25l[1;23r[23;1H
[1;24r[23;1H-5.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =printf('%g', trunc(4.000))[?25l[1;23r[23;1H
[1;24r[23;1H4.0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='float2nr'[?25l[1;23r[23;1H
[1;24r[23;1Hfloat2nr[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =float2nr(123.456)[?25l[1;23r[23;1H
[1;24r[23;1H123[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =float2nr(-123.456)[?25l[1;23r[23;1H
[1;24r[23;1H-123[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='AND'[?25l[1;23r[23;1H
[1;24r[23;1HAND[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(127, 127)[?25l[1;23r[23;1H
[1;24r[23;1H127[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(127, 16)[?25l[1;23r[23;1H
[1;24r[23;1H16[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(127, 128)[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='OR'[?25l[1;23r[23;1H
[1;24r[23;1HOR[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =or(16, 7)[?25l[1;23r[23;1H
[1;24r[23;1H23[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =or(8, 7)[?25l[1;23r[23;1H
[1;24r[23;1H15[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =or(0, 123)[?25l[1;23r[23;1H
[1;24r[23;1H123[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='XOR'[?25l[1;23r[23;1H
[1;24r[23;1HXOR[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =xor(127, 127)[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =xor(127, 16)[?25l[1;23r[23;1H
[1;24r[23;1H111[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =xor(127, 128)[?25l[1;23r[23;1H
[1;24r[23;1H255[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='invert'[?25l[1;23r[23;1H
[1;24r[23;1Hinvert[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(invert(127), 65535)[?25l[1;23r[23;1H
[1;24r[23;1H65408[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(invert(16), 65535)[?25l[1;23r[23;1H
[1;24r[23;1H65519[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =and(invert(128), 65535)[?25l[1;23r[23;1H
[1;24r[23;1H65407[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =invert(1.0)[?25l[1m[37m[41mE805: Using a Float as a Number[1;23r[m[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 73 lines, 430 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test66.failed test.ok test.out X* viminfo
cp test66.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test66.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test66.in" 33 lines, 509 characters[2;1HTest for visual block shift and tab characters.

STARTTEST
:so small.vim
/^one
fe[34m^V[m4jR[34m^[[mugvr1:'<,'>w! test.out
/^abcdefgh
[34m^V[m4jI    [34m^[[mj<<11|D
7|a[13C[34m^[[m
7|a[16C[34m^[[m
7|a[13C[34m^[[m4k13|[34m^V[m4j<
:$-5,$w >> test.out
:$-4,$s/\s\+//g
[34m^V[m4kI    [34m^[[mj<<
7|a[13C[34m^[[m
7|a[37C[34m^[[m
7|a[21C[34m^[[m4k13|[34m^V[m4j3<
:$-4,$w >> test.out
:qa!
ENDTEST

one two three[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 16 lines, 234 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^one[?25l[23;1H[?12l[?25hon[?25l[?12l[?25h[?25l[1;23r[1;1H[4M[1;24r[19;3H[7me[m
on[7me[m two three
on[7me[m two three
on[7me[m two three
one two three[24;1H[K[23;3H[?12l[?25h[?25l
4 fewer lines[19;1H[K[20;1H[K[21;1Habcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz[19;1H[?12l[?25h[?25l[24;3Hmore lines; before #1  0 seconds ago[19;1Hone two three
one two three
one two three[21;14H[K[22;1Hone two three[22;14H[K[23;1Hone two three[23;14H[K[20;1H[?12l[?25h[?25l[19;3H[7me
[mon[7me
[mon[7me
[mon[7me
[mon[?12l[?25h[?25l[19;3H1
on1
on1
on1
on1[19;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h'<,'>w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 5 lines, 70 characters written[19;3H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^abcdefgh[?25l[1;23r[1;1H[2M[1;24r[23;1Habcdefghijklmnopqrstuvwxyz[24;1H[K[23;1H[?12l[?25h[?25l[?12l[?25h[?25l[1;23r[1;1H[4M[1;24r[19;1H[7ma
a[mbcdefghijklmnopqrstuvwxyz
[7ma[mbcdefghijklmnopqrstuvwxyz
[7ma[mbcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz[?12l[?25h[?25l[19;1Ha
a
a
a[19;1H    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz[19;1H[?12l[?25h
[?25labcdefghijklmnopqrstuvwxyz[20;27H[K[20;1H[?12l[?25h[10C[?25l[20;11H[K[20;10H[?12l[?25h[21;10H[?25lc         defghijklmnopqrstuvwxyz[21;16H[?12l[?25h[22;16H[22;7H[?25lc            defghijklmnopqrstuvwxyz[22;19H[?12l[?25h[23;19H[23;7H[?25lc         defghijklmnopqrstuvwxyz[23;16H[?12l[?25h[19;16H[?25l[?12l[?25h[?25l[7mi[21;13H [22;13H [23;13H[?12l[?25h[?25l[m
5 lines <ed 1 time[19;13Hi[21;13Hdefghijklmnopqrstuvwxyz[21;36H[K[22;13Hdefghijklmnopqrstuvwxyz[22;36H[K[23;13Hdefghijklmnopqrstuvwxyz[23;36H[K[19;13H[?12l[?25h[20;10H[?25l[24;1H[K[24;1H:[?12l[?25h$-5,$w >> test.out[?25l"test.out"[24;12H[K[24;12H6 lines, 151 characters appended[20;10H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$-4,$s/\s\+//g[?25l7 substitutions on 4 lines[19;1Habcdefghijklmnopqrstuvwxyz[19;27H[K[21;1Habcdefghijklmnopqrstuvwxyz[21;27H[K[22;1Habcdefghijklmnopqrstuvwxyz[22;27H[K[23;1Habcdefghijklmnopqrstuvwxyz[23;27H[K[23;1H[?12l[?25h[?25l[?12l[?25h[?25l[20;1H[7ma
a
a
a[19;1H[?12l[?25h[?25l[m
a
a
a
a[19;1H    abcdefghijklmnopqrstuvwxyz
    abcdefghij
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz
    abcdefghijklmnopqrstuvwxyz[19;1H[?12l[?25h
[?25labcdefghij[20;11H[K[20;1H[?12l[?25h
    ab[?25lc         defghijklmnopqrstuvwxyz[21;16H[?12l[?25h[22;16H[22;7H[?25lc                       [10Cdefghijklmnopqrstuvwxyz[22;40H[?12l[?25h[23;30H[23;7H[?25lc                 defghijklmnopqrstuvwxyz[23;24H[?12l[?25h[19;24H[19;13H[?25l[?12l[?25h[?25l[7mi[21;13H [22;13H [23;13H[?12l[?25h[?25l[m
5 lines <ed 3 times[24;20H[K[19;13Hi[21;13Hdefghijklmnopqrstuvwxyz[21;36H[K[22;13H    defghijklmnopqrstuvwxyz[22;41H[K[23;13Hdefghijklmnopqrstuvwxyz[23;36H[K[19;13H[?12l[?25h[20;10H[?25l[24;1H[K[24;1H:[?12l[?25h$-4,$w >> test.out[?25l"test.out"[24;12H[K[24;12H5 lines, 147 characters appended[20;10H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test67.failed test.ok test.out X* viminfo
cp test67.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test67.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test67.in" 33 lines, 1109 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest that groups and patterns are tested correctly when calling exists() for[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 27 lines, 998 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[9M[1;24r[15;1H: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[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet results=[][?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25haugroup auexists[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25haugroup END[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "##BufEnter: " . exists("##BufEnter"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter: " . exists("#BufEnter"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufEnter * let g:entered=1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter: " . exists("#BufEnter"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25haugroup auexists[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufEnter * let g:entered=1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25haugroup END[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#auexists#BufEnter: " . exists("#auexists#BufEnter"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufEnter *.test let g:entered=1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter#*.test: " . exists("#BufEnter#*.test"))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hedit testfile.test[?25l"testfile.test" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hau BufEnter <buffer> let g:entered=1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hedit testfile2.test[?25l"testfile2.test" [New File][1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(results, "#BufEnter#<buffer>: " . exists("#BufEnter#<buffer>"))[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he test.out[?25l"test.out" [New File][1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(0, results)[?25l[1;23r[1;1H[10L[1;24r[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>: 0[24;1H[K[11;1H[?12l[?25h[?25l[24;1H:[?12l[?25h$d[?25l[11;1H[1m[34m~                                                                               [10;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" [New File] 10 lines, 190 characters written[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test68.failed test.ok test.out X* viminfo
cp test68.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test68.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test68.in" 131 lines, 1004 characters[1;1HTest for text formatting.

Results of test68:

STARTTEST
:so small.vim
/^{/+1
:set noai tw=2 fo=t
gRa b[34m^[[m
ENDTEST

{


}

STARTTEST
/^{/+1
:set ai tw=2 fo=tw
gqgqjjllab[34m^[[m
ENDTEST

{[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for text formatting.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 4 lines, 48 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[10;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noai tw=2 fo=t[?25l[13;1H[?12l[?25h[?25la
b[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[17;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 38 characters written[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[18;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[23;1H
[1;24r[23;1Ha  b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset ai tw=2 fo=tw[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;4H[K[23;1Hb[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Ha[?12l[?25ha [?25l[1;23r[23;1H
[1;24r[23;1Hb[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H4 lines, 34 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[4M[1;24r[20;1H:set tw=3 fo=t
gqgqo
a [34m^V^A^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
a [34m^A[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=3 fo=t[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3H[K[23;1H[34m^A[m[24;1H[K[23;1H[?12l[?25h[2C[?25l[1;23r[1;1H[3M[1;24r[22;1Ha
[34m^A[?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5 lines, 58 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H:set tw=2 fo=tcq1 comments=:#
gqgqjgqgqo
a b
#a b[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
a b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=2 fo=tcq1 comments=:#[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H#a b[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1Ha b
#a b[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 46 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw=5 fo=tcn comments=:#
A b[34m^[[mjA b[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
  1 a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=5 fo=tcn comments=:#[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hb[24;1H[K[23;5H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H# 1 a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H#   b[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+3[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 35 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw=5 fo=t2a si
i  [34m^[[mA_[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+3[?25l[1;23r[1;1H[4M[1;24r[20;1H{

  x a
  b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=5 fo=t2a si[?25l[23;1H[?12l[?25h[?25l    b[?12l[?25h[?25l b_[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;5Hc[24;1H[K[23;5H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[4M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 40 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw=5 fo=qn comments=:#
gwap
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
# 1 a b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=5 fo=qn comments=:#[?25l[23;1H[?12l[?25h[?25l[23;7H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H#   b[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 40 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw=5 fo=q2 comments=:#
gwap
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
# x[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=5 fo=q2 comments=:#[?25l[23;1H[?12l[?25h[?25l# x a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H#   b[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1H}

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+2[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 26 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw& fo=a
I^^[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+2[?25l[1;23r[1;1H[3M[1;24r[21;1H{
   1aa
   2bb[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw& fo=a[?25l[23;1H[?12l[?25h[?25l[21;3H1aa ^^2bb }[22;4H[K[23;1HSTARTTEST[21;8H[?12l[?25h
[?25l[24;1H[K[24;1H/^STARTTEST[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/mno pqr/[24;1H[K[23;1H[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 69 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:setl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/
A vwx yz[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hmno pqr/[?25l[24;9H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H/* abc def ghi jkl
 *    mno pqr stu[24;1H[K[23;7H[?12l[?25h[?25l
:[?12l[?25hsetl tw=20 fo=an12wcq comments=s1:/*,mb:*,ex:*/[?25l[23;7H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H*    vwx yz[24;1H[K[23;12H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;2H*/[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^#/[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 47 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:setl tw=12 fo=tqnc comments=:#
A foobar[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^#/[?25l[24;4H[K[24;1H[1;23r[23;1H
[1;24r[23;1H# 1 xxxxx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hsetl tw=12 fo=tqnc comments=:#[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H#   foobar[24;1H[K[23;10H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:g/^STARTTEST/.,/^ENDTEST/d[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2 lines, 56 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[23;19H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:1;/^Results/,$wq! test.out[24;1H[K[23;19H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d[?25l63 fewer lines[24;15H[K[1;1H# 1 a[1;6H[K[2;1H#   b[2;6H[K[3;1H}[3;2H[K[4;1H[K[5;1H[K[6;1H{
# x a[7;6H[K[8;1H#   b[8;7H[K[9;1H}[9;2H[K[10;2H[K[12;1H{ 1aa ^^2bb }[13;1H[K[14;1H[K[15;1H/* abc def ghi jkl
 *    mno pqr stu
 *    vwx yz
 */[18;5H[K[19;1H[K[21;1H# 1 xxxxx
#   foobar[22;11H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1;/^Results/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 77 lines, 281 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test69.failed test.ok test.out X* viminfo
cp test69.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test69.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test69.in" 192 lines, 2185 characters[1;1HTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º[34m^[[m
ENDTEST

{
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for multi-byte text formatting.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 2 lines, 34 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[9;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=utf-8[?25l[27m[m[H[2J[1;1HTest for multi-byte text formatting.
Also test, that 'mps' with multibyte chars works.
And test "ra" on multi-byte characters.
Also test byteidx() and byteidxcomp()

STARTTEST
:so mbyte.vim
:set encoding=utf-8
ENDTEST

Results of test69:

STARTTEST
/^{/+1
:set tw=2 fo=t
gqgqjgqgqo
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º[34m^[[m
ENDTEST

{
ï¼¸ï¼¹ï¼º
abc ï¼¸ï¼¹ï¼º[10;1H[?12l[?25h[?25l[24;1H/^STARTTEST[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5 lines, 58 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[14;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[19;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tw=2 fo=t[?25l[22;1H[?12l[?25h
[?25l[1;23r[23;1H
[1;24r[22;5H[K[23;1Hï¼¸ï¼¹ï¼º[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H[?12l[?25h[?25lï¼¸[?12l[?25h[?25lï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;5Hï¼º
abc [?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸[?12l[?25h[?25lï¼¹[?12l[?25h[?25lï¼º[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H8 lines, 80 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[8M[1;24r[16;1H:set tw=1 fo=tm
gqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
ï¼¸[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=1 fo=tm[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸a[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3H[K[23;1Ha[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;4H[K[23;1Ha[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3H[K[23;1Hï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ ï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;4H[K[23;1Hï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hï¼¸
[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1Hï¼¸
a
[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1Hï¼¸
a
[?12l[?25h[?25lï¼¸[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¹
[?12l[?25h[?25lï¼¸ [?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H13 lines, 140 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
aï¼¸
abï¼¸
abcï¼¸
abï¼¸ c
abï¼¸ï¼¹[34m^[[m
ENDTEST

{
ï¼¸
ï¼¸a
ï¼¸ a
ï¼¸ï¼¹
ï¼¸ ï¼¹
aï¼¸
abï¼¸
abcï¼¸
abï¼¸ c[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tw=2 fo=tm[?25l[15;1H[?12l[?25h
[?25l[17;23r[17;1H[L[1;24r[16;3H[K[17;1Ha[24;1H[K[17;1H[?12l[?25h
[?25l[19;23r[19;1H[L[1;24r[18;4H[K[19;1Ha[?12l[?25h
[?25l[21;23r[21;1H[L[1;24r[20;3H[K[21;1Hï¼¹[?12l[?25h
[?25l[22;4H[K[23;1Hï¼¹ [?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Haï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3H[K[23;1Hï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habcï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;4H[K[23;1Hï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habï¼¸ c[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;3H[K[22;1Hï¼¸
c[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Habï¼¸ï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;3H[K[22;1Hï¼¸
ï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hï¼¸
[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1Hï¼¸
a
[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[21;1Hï¼¸
a
[?12l[?25h[?25lï¼¸[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¹
[?12l[?25h[?25lï¼¸ [?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¹
a[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸
ab[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸
abc[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸
ab[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1Hï¼¸
c
ab[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5 lines, 47 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H:set ai tw=2 fo=tm
gqgqjgqgqo
ï¼¸
ï¼¸a[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
  ï¼¸[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset ai tw=2 fo=tm[?25l[23;1H[?12l[?25h  [?25l[1;23r[23;1H
[1;24r[23;3Hï¼¸a[24;1H[K[23;3H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;5H[K[23;3Ha[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;3H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸
  [?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸
  a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5 lines, 53 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H:set noai tw=2 fo=tm
gqgqjgqgqo
  ï¼¸
  ï¼¸a[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
  ï¼¸[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset noai tw=2 fo=tm[?25l[23;1H[?12l[?25h  [?25l[1;23r[23;1H
[1;24r[23;3Hï¼¸a[24;1H[K[23;3H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;5H[K[23;1Ha[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;3H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸
  [?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸
a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H13 lines, 169 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqjgqgqo
ï¼¸
ï¼¸a
ï¼¸aï¼¹
ï¼¸ï¼¹
ï¼¸ï¼¹ï¼º
ï¼¸ ï¼¹
ï¼¸ ï¼¹ï¼º
ï¼¸ï¼¸
ï¼¸ï¼¸a
ï¼¸ï¼¸ï¼¹[34m^[[m
ENDTEST

{
ï¼¸
ï¼¸a
ï¼¸aï¼¹
ï¼¸ï¼¹
ï¼¸ï¼¹ï¼º
ï¼¸ ï¼¹
ï¼¸ ï¼¹ï¼º
ï¼¸ï¼¸
ï¼¸ï¼¸a[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset tw=2 fo=cqm comments=n:ï¼¸[?25l[15;1H[?12l[?25h

[?25l[18;23r[18;1H[L[1;24r[17;4H[K[18;1Hï¼¸ï¼¹[24;1H[K[18;1H[?12l[?25h

[?25l[21;23r[21;1H[L[1;24r[20;5H[K[21;1Hï¼¸ï¼º[?12l[?25h

[?25l[1;23r[23;1H
[1;24r[22;6H[K[23;1Hï¼¸ ï¼º[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ï¼¸a[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï¼¸ï¼¸ï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hï¼¸
[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hï¼¸a
[?12l[?25h[?25lï¼¸a[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸ï¼¹
[?12l[?25h[?25lï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¹
[?12l[?25h[?25lï¼¸[?12l[?25h[?25lï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸ï¼º
[?12l[?25h[?25lï¼¸ [?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;4Hï¼¹
[?12l[?25h[?25lï¼¸ [?12l[?25h[?25lï¼¹[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1Hï¼¸ ï¼º
[?12l[?25h[?25lï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸
[?12l[?25h[?25lï¼¸[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;3Hï¼¸a
[?12l[?25h[?25lï¼¸[?12l[?25h[?25lï¼¸[?12l[?25h[?25lï¼¹[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 30 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set tw=2 fo=tm
Rï¼¸a[34m^[[m
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset tw=2 fo=tm[?25l[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[22;1Hï¼¸
a[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^{/+1[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 34 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1H:set mps+=[34m^V[mu2018:[34m^V[mu2019
d%
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^{/+1[?25l[1;23r[1;1H[2M[1;24r[22;1H{
â€˜ two three â€™ four[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset mps+=^â€˜:^â€™[?25l[23;1H[?12l[?25h[?25l four[23;7H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H}[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^ra test[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2 lines, 16 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1HjVjra
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^ra test[?25l[1;23r[23;1H
[1;24r[23;1Hra test[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hï½bbï½[?12l[?25h[?25l[2C[7mbbï½ [?12l[?25h[?25l[1;23r[m[23;1H
[1;24r[22;1H[7mï½[m
ï½[7mï½b [?12l[?25h[?25l[m[22;1Haaaa[22;5H[K[23;1Haaa[7m [m[23;4H[K[22;1H[?12l[?25h
[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set whichwrap+=h[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H4 lines, 43 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[4M[1;24r[20;1H/^x
dh
:set whichwrap-=h
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset whichwrap+=h[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^x[?25l[1;23r[1;1H[2M[1;24r[22;1HÃ¡
x[24;1H[K[23;1H[?12l[?25h[?25l[22;2Hx[23;1H[K[22;2H[?12l[?25h
[?25l
:[?12l[?25hset whichwrap-=h[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:let a = '.Ã©.' " one char of two bytes[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H9 lines, 548 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[13M[1;24r[11;1H:let b = '.eÌ.' " normal e with composing char
/^byteidx
:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidd[14;1Hx(a, 4)])
:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidd[16;1Hx(b, 4)])
/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoo[19;1Hmp(a, 3), byteidxcomp(a, 4)])
:let b = '.eÌ.'
:put =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoo[22;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet a = '.Ã©.' " one char of two bytes[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet b = '.eeÌ.' " normal e with composing char[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^byteidx[?25l[1;23r[23;1H
[1;24r[23;1Hbyteidx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), bytei
[23;80Hd[24;1Hx(a, 4)])[?25l[1;1H[L[1;1H:set whichwrap-=h
ENDTEST[2;8H[K[3;1H[K[4;1HÃ¡x[5;1H[K[6;1HSTARTTEST
:let a = '.Ã©.' " one char of two bytes[8;6Hb = '.eÌ.' " normal e with composing char
/^byteidx[9;10H[K[10;1H:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidd[11;1Hx(a, 4)])[11;10H[K[12;1H:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidd[13;1Hx(b, 4)])[13;10H[K[14;1H/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoo[16;1Hmp(a, 3), byteidxcomp(a, 4)])[16;30H[K[17;1H:let b = '.eÌ.'[17;15H[K[18;2Hput =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoo[19;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])[19;49H[K[20;1HENDTEST[20;8H[K[21;1H[K[22;1Hbyteidx
[0, 1, 3, 4, -1][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), bytei
[23;80Hd[24;1Hx(b, 4)])[?25l[1;1H[L[1;1HENDTEST[2;1H[K[3;1HÃ¡x[4;1H[K[5;1HSTARTTEST
:let a = '.Ã©.' " one char of two bytes[7;6Hb = '.eÌ.' " normal e with composing char
/^byteidx[8;10H[K[9;1H:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidd[10;1Hx(a, 4)])[10;10H[K[11;1H:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidd[12;1Hx(b, 4)])[12;10H[K[13;1H/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoo[15;1Hmp(a, 3), byteidxcomp(a, 4)])[15;30H[K[16;1H:let b = '.eÌ.'[16;15H[K[17;2Hput =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoo[18;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])[18;49H[K[19;1HENDTEST[19;8H[K[20;1H[K[21;1Hbyteidx
[0, 1, 3, 4, -1][23;8H4, 5[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^byteidxcomp[?25l[1;23r[23;1H
[1;24r[23;1Hbyteidxcomp[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxc
[23;80Ho[24;1Hmp(a, 3), byteidxcomp(a, 4)])[?25l[1;1H[L[1;1HÃ¡x[2;1H[K[3;1HSTARTTEST
:let a = '.Ã©.' " one char of two bytes[5;6Hb = '.eÌ.' " normal e with composing char
/^byteidx[6;10H[K[7;1H:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidd[8;1Hx(a, 4)])[8;10H[K[9;1H:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidd[10;1Hx(b, 4)])[10;10H[K[11;1H/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoo[13;1Hmp(a, 3), byteidxcomp(a, 4)])[13;30H[K[14;1H:let b = '.eÌ.'[14;15H[K[15;2Hput =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoo[16;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])[16;49H[K[17;1HENDTEST[17;8H[K[18;1H[K[19;1Hbyteidx
[0, 1, 3, 4, -1][21;8H4, 5
byteidxcomp[22;12H[K[23;1H[0, 1, 3, 4, -1][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet b = '.eeÌ.'[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hput =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxc
[23;80Ho[24;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])[?25l[1;1H[L[2;1HSTARTTEST
:let a = '.Ã©.' " one char of two bytes[4;6Hb = '.eÌ.' " normal e with composing char
/^byteidx[5;10H[K[6;1H:put =string([byteidx(a, 0), byteidx(a, 1), byteidx(a, 2), byteidx(a, 3), byteidd[7;1Hx(a, 4)])[7;10H[K[8;1H:put =string([byteidx(b, 0), byteidx(b, 1), byteidx(b, 2), byteidx(b, 3), byteidd[9;1Hx(b, 4)])[9;10H[K[10;1H/^byteidxcomp
:put =string([byteidxcomp(a, 0), byteidxcomp(a, 1), byteidxcomp(a, 2), byteidxcoo[12;1Hmp(a, 3), byteidxcomp(a, 4)])[12;30H[K[13;1H:let b = '.eÌ.'[13;15H[K[14;2Hput =string([byteidxcomp(b, 0), byteidxcomp(b, 1), byteidxcomp(b, 2), byteidxcoo[15;1Hmp(b, 3), byteidxcomp(b, 4), byteidxcomp(b, 5)])[15;49H[K[16;1HENDTEST[16;8H[K[17;1H[K[18;1Hbyteidx
[0, 1, 3, 4, -1][20;8H4, 5
byteidxcomp[21;12H[K[22;1H[0, 1, 3, 4, -1][23;8H2, 4, 5, -1][24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H/^substitute[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2 lines, 75 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1H:let y = substitute('ï¼‘ï¼’ï¼“', '\zs', 'a', 'g')    | put =y
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[23;1Hsubstitute[22;1H[?12l[?25h[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^substitute[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet y = substitute('ï¼‘ï¼’ï¼“', '\zs', 'a', 'g')    | put =y[?25l[1;23r[1;1H[2M[1;24r[22;1Haï¼‘aï¼’aï¼“a[24;1H[K[22;1H[?12l[?25h[?25l

/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[2M[1;24r[22;1H:g/^STARTTEST/.,/^ENDTEST/d
:1;/^Results/,$wq! test.out[22;1H[?12l[?25h[?25l

:set ff=unix cpo-=A[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H2 lines, 56 characters written[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[22;1H[?12l[?25h[?25l

/ENDTEST[24;10H[K[24;1H[22;19H[?12l[?25h[23;19H[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d[?25l104 fewer lines[24;16H[K[1;1H{[1;2H[K[2;1H four[2;6H[K[3;1H}[3;2H[K[4;1H[K[5;1Hra test
aaaa[6;5H[K[7;1Haaa[7;5H[K[8;1H[K[9;1H[K[10;1HÃ¡x[10;3H[K[11;1H[K[13;1Hbyteidx[13;8H[K[14;1H[0, 1, 3, 4, -1]
[0, 1, 4, 5, -1][15;17H[K[16;1Hbyteidxcomp
[0, 1, 3, 4, -1]
[0, 1, 2, 4, 5, -1][19;1H[K[21;1Hsubstitute
aï¼‘aï¼’aï¼“a[22;11H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1;/^Results/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 166 lines, 730 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test70.failed test.ok test.out X* viminfo
cp test70.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test70.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test70.in" 63 lines, 1501 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HSmoke test for MzScheme interface and mzeval() function[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 55 lines, 1398 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:if l2[2] == l2
:let res = "OK"
:else
:let res = "FAILED: " . l2[2]
:endif
:call setline(search("^3"), "circular test " . res)
:" funcrefs
:mz (define vim:max (vim-eval "function('max')"))
:mz (define m (vim:max '(1 100 8)))
:let m = mzeval('m')
:if m == 100
:let fref_res = "OK"
:else
:let fref_res = "FAILED: " . m
:end
:call append(line('$'), 'funcrefs '. fref_res)
:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3[19;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mzscheme.vim[?25l"test.ok" [24;11H[K[24;11H6 lines, 94 characters
"test.out" [New File] 6 lines, 94 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test71.failed test.ok test.out X* viminfo
cp test71.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test71.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test71.in" 67 lines, 1209 characters[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![1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for encryption.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 60 lines, 1082 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:bwipe!
:set nobin
:e Xtestfile
foofoo
:let cm0_read_bin = getline('.', '$')
:bwipe!
:set bin noeol key=
:call append(0, cm1_bytes)
:$d
:set fenc=latin1
:w! Xtestfile
:bwipe!
:set nobin
:e Xtestfile
barbar
:call append(0, cm0_read_bin)
:call append(0, cm1_read_back)
:call append(0, cm0_read_back)
:set key= fenc=latin1
:w! test.out
:qa!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=latin1[?25l[27m[m[H[2J[1;1H:bwipe!
:set nobin
:e Xtestfile
foofoo
:let cm0_read_bin = getline('.', '$')
:bwipe!
:set bin noeol key=
:call append(0, cm1_bytes)
:$d
:set fenc=latin1
:w! Xtestfile
:bwipe!
:set nobin
:e Xtestfile
barbar
:call append(0, cm0_read_bin)
:call append(0, cm1_read_back)
:call append(0, cm0_read_back)
:set key= fenc=latin1
:w! test.out
:qa!
ENDTEST
[?12l[?25h[?25l
:[?12l[?25hbwipe![?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hr test71a.in[?25l"test71a.in" 14 lines, 314 characters[2;1H[K[3;1Hstart of text[3;14H[K[4;1H01234567890123456789012345678901234567[4;39H[K[5;1Hline 2  foo bar blah[5;21H[K[6;1Hline 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[6;38H[K[7;1Hend of text[7;12H[K[8;1H[K[9;1Hstart of cm=zip bytes[9;22H[K[10;1HVimCrypt~01![34m^F^\[mlV'Þ}Mg[34m| [mê£V©ç[34m^G[mE#3[34m~N[m2Ué[34m~W[m[10;43H[K[11;1Hend of cm=zip bytes[11;20H[K[12;1H[K[13;1Hstart of cm=blowfish bytes[13;27H[K[14;1HVimCrypt~02!k)¾[34m^W~W[m#[34m^V[mÝS[34m~\[mõ=ºàÈ#¥M´[34m~F[mJÃAÍ¥M´[34m~F[m![34m~@^U~[[mõ[34m^O[máÒ[34m^Y~B^V~X[m÷[34m^M[mÚ[14;71H[K[15;1Hend of cm=blowfish bytes[15;25H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of text/+1[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet text_lines = getline('.', line('.') + 2)[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of cm=zip bytes/+1[?25l[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cm0_bytes = getline('.', '.')[?25l[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start of cm=blowfish bytes/+1[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cm1_bytes = getline('.', '.')[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(0, text_lines)[?25l[1;23r[1;1H[3L[1;24r[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25h$d[?25l[4;1H[1m[34m~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hX[?25l[24;1H[K[24;1HEnter encryption key: [?12l[?25h******
[?25lEnter same key again: [?12l[?25h******
[1;1H[2L[?25l[1;1H01234567890123456789012345678901234567
line 2  foo bar blah[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[New File][crypted] 3 lines, 98 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [crypted] 3 lines, 98 characters[1;1H[2L[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[3;38H[K[24;1H[K[24;1H"Xtestfile" [crypted] 3 lines, 98 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cm0_read_back = getline('.', '$')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset key=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cryptmethod=blowfish[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" If the blowfish test fails 'cryptmethod' will be 'zip' now.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%s/^/\=&cryptmethod == 'blowfish' ? "OK " : "blowfish test failed "/[?25l3 substitutions on 3 lines[24;27H[K[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 [27Cxxx[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hX[?25l[24;1H[K[24;1HEnter encryption key: [?12l[?25h******
[?25lEnter same key again: [?12l[?25h******
[1;1H[2L[?25l[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[blowfish] 3 lines, 107 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [blowfish] 3 lines, 107 characters[1;1H[2L[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[3;41H[K[24;1H[K[24;1H"Xtestfile" [blowfish] 3 lines, 107 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cm1_read_back = getline('.', '$')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset bin noeol key=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(0, cm0_bytes)[?25l[1;23r[1;1H[L[1;24r[1;1HVimCrypt~01![34m^F^\[mlV'Þ}Mg[34m| [mê£V©ç[34m^G[mE#3[34m~N[m2Ué[34m~W[m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25h$d[?25l[2;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset fenc=latin1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[Incomplete last line] 1 line, 36 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [crypted] 2 lines, 24 characters[1;1H[2L[1;1H1234567890
aábbccddeëff[24;1H[K[24;1H"Xtestfile" [crypted] 2 lines, 24 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cm0_read_bin = getline('.', '$')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[2;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset bin noeol key=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(0, cm1_bytes)[?25l[1;23r[1;1H[L[1;24r[1;1HVimCrypt~02!k)¾[34m^W~W[m#[34m^V[mÝS[34m~\[mõ=ºàÈ#¥M´[34m~F[mJÃAÍ¥M´[34m~F[m![34m~@^U~[[mõ[34m^O[máÒ[34m^Y~B^V~X[m÷[34m^M[mÚ[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25h$d[?25l[2;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset fenc=latin1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H[Incomplete last line] 1 line, 55 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l[1;1H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [blowfish] 2 lines, 27 characters[1;1H[2L[1;1Hasdfasdfasdf
0001112223333[24;1H[K[24;1H"Xtestfile" [blowfish] 2 lines, 27 characters[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(0, cm0_read_bin)[?25l[1;23r[1;1H[2L[1;24r[1;1H1234567890
aábbccddeëff[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall append(0, cm1_read_back)[?25l[1;23r[1;1H[3L[1;24r[1;1HOK 01234567890123456789012345678901234567
OK line 2  foo bar blah
OK line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[24;1H[K[6;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall append(0, cm0_read_back)[?25l[1;23r[1;1H[3L[1;24r[1;1H01234567890123456789012345678901234567
line 2  foo bar blah
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[24;1H[K[9;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset key= fenc=latin1[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 10 lines, 256 characters written[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test72.failed test.ok test.out X* viminfo
cp test72.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test72.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test72.in" 119 lines, 1780 characters[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 line[34m^[[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/[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for undo file.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 108 lines, 1583 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: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.
:if has("vms")
: call rename("_un_Xtestfile", "Xtestundo")
:else
: call rename(".Xtestfile.un~", "Xtestundo")
:endif
:qa!
ENDTEST

1111 -----
2222 -----

123456789[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test 'undofile': first a simple one-line change.[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo visualbell[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100 undofile nomore[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtestfile[?25l"Xtestfile" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1Hthis is one line[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[1;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/one/ONE/[?25l[1;9HONE[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset ul=100[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtestfile" [New] 1L, 17C written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l"test72.in" 119L, 1780C[1;1H:bwipe![1;9H[K[2;1H:e Xtestfile[2;13H[K[3;1Hfoobar[3;7H[K[4;1H:set key=[4;10H[K[5;1H/bar[5;5H[K[6;1H:.w >>test.out[6;15H[K[7;1Hu:.w >>test.out[7;16H[K[8;1Hu:.w >>test.out[8;16H[K[9;1Hu:.w >>test.out[9;16H[K[10;1H:"[10;3H[K[11;1H:" Rename the undo file so that it gets cleaned up.[11;52H[K[12;1H:if has("vms")[12;15H[K[13;1H: call rename("_un_Xtestfile", "Xtestundo")[13;44H[K[14;1H:else[14;6H[K[15;1H: call rename(".Xtestfile.un~", "Xtestundo")[15;45H[K[16;1H:endif[16;7H[K[17;1H:qa![17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1H1111 -----[20;11H[K[21;1H2222 -----[21;11H[K[22;1H[K[23;1H123456789[23;10H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" 1L, 17C[1;1Hthis is ONE line
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H1 change; before #2  0 seconds ago[1;9Hone[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 1L, 17C written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test 'undofile', change in original file fails check[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noundofile[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H1L, 17C[1;9HONE[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hs/line/Line/[?25l[1;13HL[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtestfile" 1L, 17C written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset undofile[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l"test72.in" 119L, 1780C[1;1H:bwipe![1;9H[K[2;1H:e Xtestfile[2;13H[K[3;1Hfoobar[3;7H[K[4;1H:set key=[4;10H[K[5;1H/bar[5;5H[K[6;1H:.w >>test.out[6;15H[K[7;1Hu:.w >>test.out[7;16H[K[8;1Hu:.w >>test.out[8;16H[K[9;1Hu:.w >>test.out[9;16H[K[10;1H:"[10;3H[K[11;1H:" Rename the undo file so that it gets cleaned up.[11;52H[K[12;1H:if has("vms")[12;15H[K[13;1H: call rename("_un_Xtestfile", "Xtestundo")[13;44H[K[14;1H:else[14;6H[K[15;1H: call rename(".Xtestfile.un~", "Xtestundo")[15;45H[K[16;1H:endif[16;7H[K[17;1H:qa![17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1H1111 -----[20;11H[K[21;1H2222 -----[21;11H[K[22;1H[K[23;1H123456789[23;10H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" 1L, 17C[1;1Hthis is ONE Line
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" TODO: this beeps[?25l[1;1H[?12l[?25h[?5h[?5l[?25l[24;1HAlready at oldest change[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 17C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test 'undofile', add 10 lines, delete 6 lines, undo 3[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset undofile[?25l[1;1H[?12l[?25h[?25l[1;1H[K[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1Hone
two[2;4H[K[3;1Hthree[3;6H[K[4;1Hfour[4;5H[K[5;1Hfive[5;5H[K[6;1Hsix[6;4H[K[7;1Hseven[7;6H[K[8;1Height[8;6H[K[9;1Hnine[9;5H[K[10;1Hten[10;4H[K[10;3H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[10;3H[?12l[?25h[3;1H[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"Xtestfile" 4L, 17C written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l"test72.in" 119L, 1780C[1;1H:bwipe!
:e Xtestfile
foobar
:set key=
/bar[5;5H[K[6;1H:.w >>test.out[6;15H[K[7;1Hu:.w >>test.out[7;16H[K[8;1Hu:.w >>test.out[8;16H[K[9;1Hu:.w >>test.out[9;16H[K[10;1H:"[10;3H[K[11;1H:" Rename the undo file so that it gets cleaned up.[11;52H[K[12;1H:if has("vms")[12;15H[K[13;1H: call rename("_un_Xtestfile", "Xtestundo")[13;44H[K[14;1H:else[14;6H[K[15;1H: call rename(".Xtestfile.un~", "Xtestundo")[15;45H[K[16;1H:endif[16;7H[K[17;1H:qa![17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1H1111 -----[20;11H[K[21;1H2222 -----[21;11H[K[22;1H[K[23;1H123456789[23;10H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" 4L, 17C[1;1Hone[1;4H[K[2;1Htwo[2;4H[K[3;1Hnine[3;5H[K[4;1Hten[4;4H[K[5;1H[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H1 more line; before #7  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Height[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #6  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hseven[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #5  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hsix[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H7L, 33C appended[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test that reading the undofiles when setting undofile works[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noundofile ul=0[?25l[3;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[4;23r[4;1H[L[1;24r[3;1H[K[4;1Hsixu[?12l[?25hs[24;1H[K[?25l[4;1H[?12l[?25h[?25l[24;1H1 line less; before #8  0 seconds ago[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25he! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H4L, 17C[3;1Hnine
ten[4;4H[K[5;1H[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset undofile ul=100[?25l[3;1H[?12l[?25h[?25l[24;1H1 more line; before #7  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Height[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #6  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hseven[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #5  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hsix[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #4  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hfive[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #3  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hfour[24;1H[K[3;1H[?12l[?25h[?25l[24;1H1 more line; before #2  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hthree[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H10L, 49C appended[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" And now with encryption, cryptmethod=zip[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtestfile[?25l"Xtestfile" [24;13H[K[24;13H4L, 17C[3;1Hnin[3;5H[K[4;1Hten[4;4H[K[5;1H[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset undofile cm=zip[?25l[3;1H[?12l[?25h[1;1H[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1Hmonday
tuesday[2;8H[K[3;1Hwednesday[3;10H[K[4;1Hthursday[4;9H[K[5;1Hfriday[5;7H[K[5;6H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[5;6H[?12l[?25h[4;6H[3;6H[2;6H[?25l[2;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[2;1H[?12l[?25h[?25l[2;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[2;1H[?12l[?25h[?25l[2;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hX[?25l[24;1H[K[24;1HEnter encryption key: [?12l[?25h******
[?25lEnter same key again: [?12l[?25h******
[1;1H[2L[?25l[1;1Hmonday
friday[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw![?25l"Xtestfile" [crypted] 2L, 14C written[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l"test72.in" 119L, 1780C[1;1H:bwipe!
:e Xtestfile
foobar[3;7H[K[4;1H:set key=[4;10H[K[5;1H/bar[5;5H[K[6;1H:.w >>test.out[6;15H[K[7;1Hu:.w >>test.out[7;16H[K[8;1Hu:.w >>test.out[8;16H[K[9;1Hu:.w >>test.out[9;16H[K[10;1H:"[10;3H[K[11;1H:" Rename the undo file so that it gets cleaned up.[11;52H[K[12;1H:if has("vms")[12;15H[K[13;1H: call rename("_un_Xtestfile", "Xtestundo")[13;44H[K[14;1H:else[14;6H[K[15;1H: call rename(".Xtestfile.un~", "Xtestundo")[15;45H[K[16;1H:endif[16;7H[K[17;1H:qa![17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1H1111 -----[20;11H[K[21;1H2222 -----[21;11H[K[22;1H[K[23;1H123456789[23;10H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [crypted] 2L, 14C[1;1H[2L[1;1Hmonday
friday
[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[24;1H"Xtestfile" [crypted] 2L, 14C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset key=[?25l[1;1H[?12l[?25h[?25l[24;1H1 more line; before #11  0 seconds ago[2;23r[2;1H[L[1;24r[2;1Hthursday[24;1H[K[2;1H[?12l[?25h[?25l[24;1H1 more line; before #10  0 seconds ago[2;23r[2;1H[L[1;24r[2;1Hwednesday[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw >>test.out[?25l"test.out" [24;12H[K[24;12H4L, 33C appended[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" With encryption, cryptmethod=blowfish[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtestfile[?25l"Xtestfile" [24;13H[K[24;1HNeed encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h*************************
[?25l"Xtestfile" [noeol][crypted] 1L, 14C[1;1H[2L[1;1H;[34m~H[mÙ6à[34m^][mQÖ[34m^C[m4[34m~][m¤[34m~E[mû
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [m[24;1H[K[24;1H"Xtestfile" [noeol][crypted] 1L, 14C[1;1H[?12l[?25h[?25l[1;1H[K[24;1H--No lines in buffer--[24;23H[K[1;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1Hjan
feb[2;4H[K[3;1Hmar[3;4H[K[4;1Hapr[4;4H[K[5;1Hjun[5;4H[K[5;3H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[5;3H[?12l[?25h[4;3H[3;3H[?25l[24;1H[1m-- INSERT --[m[24;1H[K[3;1Hfoo mar[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;4H[?12l[?25h[?25l[3;23r[23;1H
[1;24r[23;1H[1m[34m~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;1H[?12l[?25h[?25l[24;1H[1m-- INSERT --[m[24;1H[K[3;1Hbar apr[?12l[?25h[?25l[24;1H:[?12l[?25hset ul=100[?25l[3;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hX[?25l[24;1H[K[24;1HEnter encryption key: [?12l[?25h******
[?25lEnter same key again: [?12l[?25h******
[1;1H[2L[?25l[1;1Hjan
feb[24;1H[K[3;4H[?12l[?25h[?25l[24;1H:[?12l[?25hw![?25l"Xtestfile" [crypted] 4L, 20C written[3;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipe![?25l"test72.in" 119L, 1780C[1;1H:bwipe!
:e Xtestfile
foobar[3;7H[K[4;1H:set key=
/bar[5;5H[K[6;1H:.w >>test.out[6;15H[K[7;1Hu:.w >>test.out[7;16H[K[8;1Hu:.w >>test.out[8;16H[K[9;1Hu:.w >>test.out[9;16H[K[10;1H:"[10;3H[K[11;1H:" Rename the undo file so that it gets cleaned up.[11;52H[K[12;1H:if has("vms")[12;15H[K[13;1H: call rename("_un_Xtestfile", "Xtestundo")[13;44H[K[14;1H:else[14;6H[K[15;1H: call rename(".Xtestfile.un~", "Xtestundo")[15;45H[K[16;1H:endif[16;7H[K[17;1H:qa![17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1H1111 -----[20;11H[K[21;1H2222 -----[21;11H[K[22;1H[K[23;1H123456789[23;10H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he Xtestfile[?25l"Xtestfile" Need encryption key for "Xtestfile"
Enter encryption key: [?12l[?25h******
[?25l"Xtestfile" [crypted] 4L, 20C[1;1H[2L[1;1Hjan
feb
bar apr
jun[4;4H[K[5;1H[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[24;1H"Xtestfile" [crypted] 4L, 20C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset key=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hbar[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 8C appended[3;1H[?12l[?25h[?25l[24;1H1 change; before #15  0 seconds ago[3;1Hap[3;5H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 4C appended[3;1H[?12l[?25h[?25l[24;1H1 more line; before #14  0 seconds ago[3;23r[3;1H[L[1;24r[3;1Hfoo mar[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 8C appended[3;1H[?12l[?25h[?25l[24;1H1 change; before #13  0 seconds ago[3;1Hmar[3;5H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w >>test.out[?25l"test.out" [24;12H[K[24;12H1L, 4C appended[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Rename the undo file so that it gets cleaned up.[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif has("vms")[?25l
:  [?12l[?25h: call rename("_un_Xtestfile", "Xtestundo")
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: call rename(".Xtestfile.un~", "Xtestundo")
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1Hjan
feb
mar
apr[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test73.failed test.ok test.out X* viminfo
cp test73.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test73.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test73.in" 176 lines, 3863 characters[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""[14;1H)
:  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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for find completion.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 171 lines, 3816 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path
:" Open the file where Jimmy Hoffa is found
:e in/file.txt
:" Find the file containing 'E.T.' in the Xfind/in/path directory
:find file
:exec "w >>" . test_out
:"
:" Test that completion works when path=.,,
:"
:set path=.,,
:" Open Jimmy Hoffa file
:e in/file.txt
:exec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu
:exec "w >>" . test_out
:q
:exec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Do all test in a separate window to avoid E211 when we recursively[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" delete the Xfind directory during cleanup[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" This will cause a few errors, do it silently.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset visualbell[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp viminfo+=nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! DeleteDirectory(dir)[?25l
:  [?12l[?25h: if has("win16") || has("win32") || has("win64") || has("dos16") || has("do
[23;80Hs[24;1H32")
[?25l:    [?12l[?25h:  exec "silent !rmdir /Q /S " . a:dir
[?25l:    [?12l[?25h: else
[?25l:    [?12l[?25h:  exec "silent !rm -rf " . a:dir
[?25l:    [?12l[?25h: endif
[?25l:  [?12l[?25h:endfun[1;1H[7L[?25l[1;1H: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[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" On windows a stale "Xfind" directory may exist, remove it so that[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" we start from a clean state.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DeleteDirectory("Xfind")[?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[23;1H[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [15;17H[K[16;2Hexec "w >>" . test_out
:q[17;3H[K[18;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7mtest73.in                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet cwd=getcwd()[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet test_out = cwd . '/test.out'[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('Xfind')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd Xfind[?25l/sources/vim74/src/testdir/Xfind[23;1H[7m/sources/vim74/src/testdir/test73.in[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind ...[?25l[24;7H[K[24;7H[?5h[?5l[?12l[?25h[?25l[1m[37m[41mE345: Can't find file "" in path[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w! " . test_out[?25l"/sources/vim74/src/testdir/test.out" [New] 0L, 0C written[12;1H[1m[7m/sources/vim74/src/testdir/test.out[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path[2;17H[K[3;1H:" Open the file where Jimmy Hoffa is found[3;44H[K[4;1H:e in/file.txt[4;15H[K[5;1H:" Find the file containing 'E.T.' in the Xfind/in/path directory[5;66H[K[6;1H:find file      [6;17H[K[7;1H:exec "w >>" . test_out[7;24H[K[8;1H:"[8;3H[K[9;1H:" Test that completion works when path=.,,[9;44H[K[10;1H:"[10;3H[K[11;1H:set path=.,,[11;14H[K[12;1H:" Open Jimmy Hoffa file[12;25H[K[13;3H in/file.txt[13;16H[K[14;2Hexec "w >>" . test_out[14;24H[K[15;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [16;17H[K[17;2Hexec "w >>" . test_out
:q[18;3H[K[19;2Hexec "cd " . cwd[19;18H[K[20;2Hcall DeleteDirectory("Xfind")
:qa![21;5H[K[22;1HENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [15;17H[K[16;2Hexec "w >>" . test_out
:q[17;3H[K[18;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7m/sources/vim74/src/testdir/test73.in                                            [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind ...[?25l[24;7H[K[24;7H[?5h[?5l[?12l[?25h[?25l[1m[37m[41mE32: No file name[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path[2;17H[K[3;1H:" Open the file where Jimmy Hoffa is found[3;44H[K[4;1H:e in/file.txt[4;15H[K[5;1H:" Find the file containing 'E.T.' in the Xfind/in/path directory[5;66H[K[6;1H:find file      [6;17H[K[7;1H:exec "w >>" . test_out[7;24H[K[8;1H:"[8;3H[K[9;1H:" Test that completion works when path=.,,[9;44H[K[10;1H:"[10;3H[K[11;1H:set path=.,,[11;14H[K[12;1H:" Open Jimmy Hoffa file[12;25H[K[13;3H in/file.txt[13;16H[K[14;2Hexec "w >>" . test_out[14;24H[K[15;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [16;17H[K[17;2Hexec "w >>" . test_out
:q[18;3H[K[19;2Hexec "cd " . cwd[19;18H[K[20;2Hcall DeleteDirectory("Xfind")
:qa![21;5H[K[22;1HENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [15;17H[K[16;2Hexec "w >>" . test_out
:q[17;3H[K[18;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7m/sources/vim74/src/testdir/test73.in                                            [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=.,,[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind ...[?25l[24;7H[K[24;7H[?5h[?5l[?12l[?25h[?25l[1m[37m[41mE32: No file name[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path[2;17H[K[3;1H:" Open the file where Jimmy Hoffa is found[3;44H[K[4;1H:e in/file.txt[4;15H[K[5;1H:" Find the file containing 'E.T.' in the Xfind/in/path directory[5;66H[K[6;1H:find file      [6;17H[K[7;1H:exec "w >>" . test_out[7;24H[K[8;1H:"[8;3H[K[9;1H:" Test that completion works when path=.,,[9;44H[K[10;1H:"[10;3H[K[11;1H:set path=.,,[11;14H[K[12;1H:" Open Jimmy Hoffa file[12;25H[K[13;3H in/file.txt[13;16H[K[14;2Hexec "w >>" . test_out[14;24H[K[15;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [16;17H[K[17;2Hexec "w >>" . test_out
:q[18;3H[K[19;2Hexec "cd " . cwd[19;18H[K[20;2Hcall DeleteDirectory("Xfind")
:qa![21;5H[K[22;1HENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [15;17H[K[16;2Hexec "w >>" . test_out
:q[17;3H[K[18;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7m/sources/vim74/src/testdir/test73.in                                            [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=./**[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind ...[?25l[24;7H[K[24;7H[?5h[?5l[?12l[?25h[?25l[1m[37m[41mE32: No file name[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 0L, 0C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path[2;17H[K[3;1H:" Open the file where Jimmy Hoffa is found[3;44H[K[4;1H:e in/file.txt[4;15H[K[5;1H:" Find the file containing 'E.T.' in the Xfind/in/path directory[5;66H[K[6;1H:find file      [6;17H[K[7;1H:exec "w >>" . test_out[7;24H[K[8;1H:"[8;3H[K[9;1H:" Test that completion works when path=.,,[9;44H[K[10;1H:"[10;3H[K[11;1H:set path=.,,[11;14H[K[12;1H:" Open Jimmy Hoffa file[12;25H[K[13;3H in/file.txt[13;16H[K[14;2Hexec "w >>" . test_out[14;24H[K[15;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [16;17H[K[17;2Hexec "w >>" . test_out
:q[18;3H[K[19;2Hexec "cd " . cwd[19;18H[K[20;2Hcall DeleteDirectory("Xfind")
:qa![21;5H[K[22;1HENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;3Hxec "w >>" . test_out
:" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [15;17H[K[16;2Hexec "w >>" . test_out
:q[17;3H[K[18;2Hexec "cd " . cwd
:call DeleteDirectory("Xfind")
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7m/sources/vim74/src/testdir/test73.in                                            [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" We shouldn't find any file at this point, test.out must be empty.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('in')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd in[?25l/sources/vim74/src/testdir/Xfind/in[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('path')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "cd " . cwd[?25l/sources/vim74/src/testdir[23;1H[7mtest73.in                           [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xfind/file.txt[?25l"Xfind/file.txt" [New File][12;1H[1m[7mXfind/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HHoly Grail[12;16H[1m[7m[+][1;10H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"Xfind/file.txt" [New] 1L, 11C written[12;16H[1m[7m    [1;10H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xfind/in/file.txt[?25l"Xfind/in/file.txt" [New File][1;1H[K[12;7H[1m[7min/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HJimmy Hoffa[12;19H[1m[7m[+][1;11H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"Xfind/in/file.txt" [New] 1L, 12C written[12;19H[1m[7m    [1;11H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xfind/in/stuff.txt[?25l"Xfind/in/stuff.txt" [New File][1;1H[K[12;10H[1m[7mstuff.txt[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HAnother Holy Grail[12;20H[1m[7m[+][1;18H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"Xfind/in/stuff.txt" [New] 1L, 19C written[12;20H[1m[7m    [1;18H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he Xfind/in/path/file.txt[?25l"Xfind/in/path/file.txt" [New File][1;1H[K[12;10H[1m[7mpath/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HE.T.[12;24H[1m[7m[+][1;4H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"Xfind/in/path/file.txt" [New] 1L, 5C written[12;24H[1m[7m    [1;4H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=Xfind/**[?25l[1;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h[?25l"Xfind/file.txt" [24;18H[K[24;18H1L, 11C[1;1HHoly Grail[12;7H[1m[7mfile.txtf         [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h[?25l"Xfind/in/file.txt" 1L, 12C[1;1HJimmy Hoffa[12;7H[1m[7min/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h...[?25l[24;7Hpath/file.txt[24;20H[K[24;20H[?12l[?25h[?25l"Xfind/in/path/file.txt" 1L, 5C[1;1HE.T.[1;5H[K[12;10H[1m[7mpath/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Rerun the previous three find completions, using fullpath in 'path'[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "set path=" . cwd . "/Xfind/**"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h[?25l"Xfind/file.txt" [24;18H[K[24;18H1L, 11C[1;1HHoly Grail[12;7H[1m[7mfile.txtf         [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" .  test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h[?25l"Xfind/in/file.txt" 1L, 12C[1;1HJimmy Hoffa[12;7H[1m[7min/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h...[?25l[24;7Hpath/file.txt[24;20H[K[24;20H[?12l[?25h[?25l"Xfind/in/path/file.txt" 1L, 5C[1;1HE.T.[1;5H[K[12;10H[1m[7mpath/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Same steps again, using relative and fullpath items that point to the same[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" recursive location.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" This is to test that there are no duplicates in the completion list.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "set path+=Xfind/**"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h[?25l"Xfind/file.txt" [24;18H[K[24;18H1L, 11C[1;1HHoly Grail[12;7H[1m[7mfile.txtf         [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" .  test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h[?25l"Xfind/in/file.txt" 1L, 12C[1;1HJimmy Hoffa[12;7H[1m[7min/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h...[?25l[24;7Hpath/file.txt[24;20H[K[24;20H[?12l[?25h[?25l"Xfind/in/path/file.txt" 1L, 5C[1;1HE.T.[1;5H[K[12;10H[1m[7mpath/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./Xfind/file.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hin/file.txt[24;18H[K[24;18H[?12l[?25h[?25l"Xfind/in/file.txt" 1L, 12C[1;1HJimmy Hoffa[12;10H[1m[7mfile.txte      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" Test find completion for directory of current buffer, which at this point[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" is Xfind/in/file.txt.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset path=.[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind st...[?25luff.txt[?12l[?25h[?25l"Xfind/in/stuff.txt" 1L, 19C[1;1HAnother Holy Grail[12;10H[1m[7mstuff.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" .  test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test find completion for empty path item ",," which is the current directory[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd Xfind[?25l/sources/vim74/src/testdir/Xfind[12;1H[1m[7min/stuff.txtf       [m[23;1H[7m/sources/vim74/src/testdir/test73.in[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=,,[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind f...[?25lile.txt[?12l[?25h...[?25l[24;15H[K[24;15H[?12l[?25h[?25l"file.txt" [24;12H[K[24;12H1L, 11C[1;1HHoly Grail[1;11H[K[12;1H[1m[7mfile.txt.     [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 11C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test shortening of[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    foo/x/bar/voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    foo/y/bar/voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" When current directory is above foo/ they should be shortened to (in order[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" of appearance):[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    x/bar/voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    y/bar/voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('foo')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd foo[?25l/sources/vim74/src/testdir/Xfind/foo[12;1H[1m[7m/sources/vim74/src/testdir/Xfind/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall mkdir('x')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('y')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd x[?25l/sources/vim74/src/testdir/Xfind/foo/x[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('bar')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir/Xfind/foo[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd y[?25l/sources/vim74/src/testdir/Xfind/foo/y[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall mkdir('bar')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir/Xfind/foo[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir/Xfind[12;1H[1m[7mfile.txt/                                  [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h" We should now be in the Xfind directory[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he foo/x/bar/voyager.txt[?25l"foo/x/bar/voyager.txt" [New File][1;1H[K[12;2H[1m[7moo/x/bar/voyager.txt[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HVoyager 1[12;23H[1m[7m[+][1;9H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"foo/x/bar/voyager.txt" [New] 1L, 10C written[12;23H[1m[7m    [1;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he foo/y/bar/voyager.txt[?25l"foo/y/bar/voyager.txt" [New File][1;1H[K[12;5H[1m[7my/[1;1H[?12l[?25h[?25l[m[24;1H[1m-- INSERT --[m[24;13H[K[24;1H[K[1;1HVoyager 2[12;23H[1m[7m[+][1;9H[?12l[?25h[?25l[24;1H[m:[?12l[?25hw[?25l"foo/y/bar/voyager.txt" [New] 1L, 10C written[12;23H[1m[7m    [1;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "set path=" . cwd . "/Xfind/**"[?25l[1;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7Hx/bar/voyager.txt[?5h[?5l[?12l[?25h[?25l"foo/x/bar/voyager.txt" 1L, 10C[1;9H1[12;5H[1m[7mx/[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7Hx/bar/voyager.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hy[24;24H[K[24;24H[?12l[?25h[?25l"foo/y/bar/voyager.txt" 1L, 10C[1;9H2[12;5H[1m[7my/[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" When current directory is .../foo/y/bar they should be shortened to (in[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" order of appearance):[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    ./voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    x/bar/voyager.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd foo[?25l/sources/vim74/src/testdir/Xfind/foo[12;1H[1m[7my/bar/voyager.txt.     [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcd y[?25l/sources/vim74/src/testdir/Xfind/foo/y[12;1H[1m[7mbar/voyager.txt   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcd bar[?25l/sources/vim74/src/testdir/Xfind/foo/y/bar[12;1H[1m[7mvoyager.txt.     [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7H./voyager.txt[?5h[?5l[?12l[?25h[?25l"voyager.txt" [24;15H[K[24;15H1L, 10C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "w >> " . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7H./voyager.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hx/bar/voyager.txt[?12l[?25h[?25l"/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txt" 1L, 10C[1;9H1[12;1H[1m[7m/sources/vim74/src/testdir/Xfind/foo/x/bar/voyager.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >> " . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check the opposite too:[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir/Xfind/foo/y[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src/testdir/Xfind/foo[12;1H[1m[7mx/bar/voyager.txtc                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcd x[?25l/sources/vim74/src/testdir/Xfind/foo/x[12;1H[1m[7mbar/voyager.txt   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcd bar[?25l/sources/vim74/src/testdir/Xfind/foo/x/bar[12;1H[1m[7mvoyager.txt.     [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7H./voyager.txt[?5h[?5l[?12l[?25h[?25l"voyager.txt" [24;15H[K[24;15H1L, 10C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "w >> " . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind voyager...[?25l[24;7H./voyager.txt[?5h[?5l[?12l[?25h...[?25l[24;7Hy/bar/voyager.txt[?12l[?25h[?25l"/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txt" 1L, 10C[1;9H2[12;1H[1m[7m/sources/vim74/src/testdir/Xfind/foo/y/bar/voyager.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >> " . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 10C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Check for correct handling of shorten_fname()'s behavior on windows[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "cd " . cwd . "/Xfind/in"[?25l/sources/vim74/src/testdir/Xfind/in[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25l[24;7H./file.txt[?5h[?5l[?12l[?25h[?25l"file.txt" [24;12H[K[24;12H1L, 12C[1;1HJimmy Hoffa[12;1H[1m[7mfile.txt/                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for relative to current buffer 'path' item[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "cd " . cwd . "/Xfind/"[?25l/sources/vim74/src/testdir/Xfind[12;1H[1m[7min/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset path=./path[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Open the file where Jimmy Hoffa is found[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he in/file.txt[?25l"in/file.txt" 1L, 12C[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Find the file containing 'E.T.' in the Xfind/in/path directory[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind file...[?25ltxt[?12l[?25h[?25l"in/path/file.txt" 1L, 5C[1;1HE.T.[1;5H[K[12;4H[1m[7mpath/file.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 5C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test that completion works when path=.,,[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset path=.,,[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Open Jimmy Hoffa file[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he in/file.txt[?25l"in/file.txt" 1L, 12C[1;1HJimmy Hoffa[12;4H[1m[7mfile.txte      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 12C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Search for the file containing Holy Grail in same directory as in/path.txt[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfind stu...[?25lff.txt[?12l[?25h[?25l"in/stuff.txt" 1L, 19C[1;1HAnother Holy Grail[12;4H[1m[7mstuff.txt[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hexec "w >>" . test_out[?25l"/sources/vim74/src/testdir/test.out" 1L, 19C appended[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq[?25l[1;1H:exec "cd " . cwd . "/Xfind/"
:set path=./path[2;17H[K[3;1H:" Open the file where Jimmy Hoffa is found[3;44H[K[4;1H:e in/file.txt[4;15H[K[5;1H:" Find the file containing 'E.T.' in the Xfind/in/path directory[5;66H[K[6;1H:find file      [6;17H[K[7;1H:exec "w >>" . test_out[7;24H[K[8;1H:"[8;3H[K[9;1H:" Test that completion works when path=.,,[9;44H[K[10;1H:"[10;3H[K[11;1H:set path=.,,[11;14H[K[12;1H:" Open Jimmy Hoffa file[12;25H[K[13;3H in/file.txt[13;16H[K[14;2Hexec "w >>" . test_out[14;24H[K[15;2H" Search for the file containing Holy Grail in same directory as in/path.txt
:find stu       [16;17H[K[17;2Hexec "w >>" . test_out
:q[18;3H[K[19;2Hexec "cd " . cwd[19;18H[K[20;2Hcall DeleteDirectory("Xfind")
:qa![21;5H[K[22;1HENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexec "cd " . cwd[?25l/sources/vim74/src/testdir[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DeleteDirectory("Xfind")[?25l[?1l>[?12l[?25h[?1049l[?1049h[?1h=[23;1H[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test74.failed test.ok test.out X* viminfo
cp test74.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test74.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test74.in" 36 lines, 822 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1H" Tests for storing global variables in the .viminfo file vim: set ft=vim:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 30 lines, 723 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[11M[1;24r[13;1H: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[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Do all test in a separate window to avoid E211 when we recursively[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" delete the Xfind directory during cleanup[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" This will cause a few errors, do it silently.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset visualbell[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp viminfo+=!,nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet MY_GLOBAL_DICT={'foo': 1, 'bar': 0, 'longvarible': 1000}[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" store a really long list, so line wrapping will occur in viminfo file[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet MY_GLOBAL_LIST=range(1,100)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwv! Xviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet MY_GLOBAL_DICT[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hunlet MY_GLOBAL_LIST[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hrv! Xviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall delete('Xviminfo')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif exists("MY_GLOBAL_DICT")[?25l
:  [?12l[?25h:redir >> test.out
[?25l:  [?12l[?25h:echo MY_GLOBAL_DICT
[?25l{'foo': 1, 'longvarible': 1000, 'bar': 0}
:  [?12l[?25h:redir end
[?25l:  [?12l[?25h:endif[1;1H[5L[?25l[1;1H:let MY_GLOBAL_LIST=range(1,100)
:wv! Xviminfo
:unlet MY_GLOBAL_DICT
:unlet MY_GLOBAL_LIST
:rv! Xviminfo[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hif exists("MY_GLOBAL_LIST")[?25l
:  [?12l[?25h:redir >> test.out
[?25l:  [?12l[?25h:echo MY_GLOBAL_LIST
[?25l[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
:  [?12l[?25h:redir end
[?25l:  [?12l[?25h:endif[1;1H[9L[?25l[1;1H: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[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hredir >> test.out[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hecho "foobar"[?25lfoobar[24;7H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir end[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hendif[?25l[1m[37m[41mE580: :endif without :if[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test75.failed test.ok test.out X* viminfo
cp test75.ok test.ok
# Sleep a moment to avoid that the xterm title is messed up.
# 200 msec is sufficient, but only modern sleep supports a fraction of
# a second, fall back to a second if it fails.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test75.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test75.in" 41 lines, 1000 characters[1;1HTests for maparg().
Also test utf8 map with a 0x80 byte.

STARTTEST
:so small.vim
:so mbyte.vim
:set cpo-=<
:set encoding=utf8
:" Test maparg() with a string result
:map foo<C-V> is<F4>foo
:vnoremap <script> <buffer> <expr> <silent> bar isbar
:call append('$', maparg('foo<C-V>'))
:call append('$', string(maparg('foo<C-V>', '', 0, 1)))
:call append('$', string(maparg('bar', '', 0, 1)))
:map <buffer> <nowait> foo bar
:call append('$', string(maparg('foo', '', 0, 1)))
:"
:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go[34m^[[m:"[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for maparg().[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 34 lines, 919 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[16M[1;24r[8;1H:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:call feedkeys("a\u1040\<Esc>")
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:call feedkeys("a\u103f\<Esc>")
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:call feedkeys("a\uf03f\<Esc>")
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:call feedkeys("a\uf040\<Esc>")
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo-=<[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=utf8[?25l[27m[m[H[2J[1;1H:map abc x<char-114>x
:call append('$', maparg('abc'))
:map abc y<S-char-114>y
:call append('$', maparg('abc'))
:"
Go[34m^[[m:"
:" Outside of the range, minimum
:inoremap <Char-0x1040> a
:call feedkeys("a\u1040\<Esc>")
:" Inside of the range, minimum
:inoremap <Char-0x103f> b
:call feedkeys("a\u103f\<Esc>")
:" Inside of the range, maximum
:inoremap <Char-0xf03f> c
:call feedkeys("a\uf03f\<Esc>")
:" Outside of the range, maximum
:inoremap <Char-0xf040> d
:call feedkeys("a\uf040\<Esc>")
:"
:/^eof/+1,$w! test.out
:qa!
ENDTEST
[?12l[?25h[?25l
:[?12l[?25h" Test maparg() with a string result[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap foo<C-V> is<F4>foo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hvnoremap <script> <buffer> <expr> <silent> bar isbar[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', maparg('foo<C-V>'))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', string(maparg('foo<C-V>', '', 0, 1)))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', string(maparg('bar', '', 0, 1)))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap <buffer> <nowait> foo bar[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', string(maparg('foo', '', 0, 1)))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap abc x<char-114>x[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', maparg('abc'))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap abc y<S-char-114>y[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append('$', maparg('abc'))[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[10M[1;24r[14;1Heof
is<F4>foo
{'silent': 0, 'noremap': 0, 'lhs': 'foo<C-V>', 'mode': ' ', 'nowait': 0, 'expr'::[17;1H 0, 'sid': 0, 'rhs': 'is<F4>foo', 'buffer': 0}
{'silent': 1, 'noremap': 1, 'lhs': 'bar', 'mode': 'v', 'nowait': 0, 'expr': 1, ''[19;1Hsid': 0, 'rhs': 'isbar', 'buffer': 1}
{'silent': 0, 'noremap': 0, 'lhs': 'foo', 'mode': ' ', 'nowait': 1, 'expr': 0, ''[21;1Hsid': 0, 'rhs': 'bar', 'buffer': 1}
xrx
yRy[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Outside of the range, minimum[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <Char-0x1040> a[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys("a\u1040\<Esc>")[?25l[23;1H[?12l[?25h[?25la[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Inside of the range, minimum[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <Char-0x103f> b[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys("a\u103f\<Esc>")[?25l[23;1H[?12l[?25h[?25lab[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Inside of the range, maximum[?25l[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <Char-0xf03f> c[?25l[23;2H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys("a\uf03f\<Esc>")[?25l[23;2H[?12l[?25h[?25lbc[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Outside of the range, maximum[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hinoremap <Char-0xf040> d[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys("a\uf040\<Esc>")[?25l[23;3H[?12l[?25h[?25lcd[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^eof/+1,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 7 lines, 384 characters written[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test76.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test76.in" 46 lines, 899 characters[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
A[34m^X^U^N^[[m:q!
:function! DummyCompleteTwo(findstart, base)
:  if a:findstart
:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF'][1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for completefunc/omnifunc. vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 37 lines, 810 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[18M[1;24r[6;1H:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A[34m^X^U^N^[[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
A[34m^X^U^N^[[m:/^+++/,/^three/w! test.out
:qa!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"Test that nothing happens if the 'completefunc' opens[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"a new window (no completion, no crash)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! DummyCompleteOne(findstart, base)[?25l
:  [?12l[?25h:  if a:findstart
[?25l:    [?12l[?25h:    return 0
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    wincmd n
[?25l:    [?12l[?25h:    return ['onedef', 'oneDEF']
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfunction[1;1H[7L[?25l[1;1H:    wincmd n
:    return 0
:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hsetlocal completefunc=DummyCompleteOne[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^one[?25l[1;23r[1;1H[2M[1;24r[22;1H+++
one[24;1H[K[23;1H[?12l[?25h[?25l
[1m[37m[41mE839: Completion function changed window[m
[1m[37m[41mPattern not found[m
[32mPress ENTER or type command to continue[?12l[?25h[1;4H[?25l[m[24;1H[K[24;1H[32mPress ENTER or type command to continue[?12l[?25h[1;4H[m[23;1H[K[24;1H[K[1;1H[2L[?25l[1;1Hone
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name] [+]                                                                   [m[13;4Hendif[13;9H[K[14;2Hendfunction
:setlocal completefunc=DummyCompleteThree
/^three[16;8H[K[17;1HA[34m^X^U^N^[[m:/^+++/,/^three/w! test.out
:qa![18;5H[K[19;1HENDTEST[20;1H[K[21;1H+++[22;1H[K[23;1H[7mtest76.in [+]                                                                   [m[24;1H[K[1;3H[?12l[?25h[?25l[24;1H:[?12l[?25hq![?25l[1;1H:  else
:    return ['twodef', 'twoDEF'][2;33H[K[3;1H:  endif[3;9H[K[4;1H:endfunction[4;13H[K[5;1H:setlocal completefunc=DummyCompleteTwo[5;40H[K[6;1H/^two[6;6H[K[7;1HA[34m^X^U^N^[[m:q![7;13H[K[8;1H:"Test that 'completefunc' works when it's OK.[8;47H[K[9;1H:function! DummyCompleteThree(findstart, base)[9;47H[K[10;1H:  if a:findstart[10;18H[K[11;1H:    return 0[11;14H[K[12;1H:  else[12;8H[K[13;4H  return ['threedef', 'threeDEF']
:  endif[14;9H[K[15;2Hendfunction[15;13H[K[16;1H:setlocal completefunc=DummyCompleteThree
/^three[17;8H[K[18;1HA[34m^X^U^N^[[m:/^+++/,/^three/w! test.out
:qa![19;5H[K[20;1HENDTEST[21;1H[K[22;1H+++[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! DummyCompleteTwo(findstart, base)[?25l
:  [?12l[?25h:  if a:findstart
[?25l:    [?12l[?25h:    wincmd n
[?25l:    [?12l[?25h:    return 0
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    return ['twodef', 'twoDEF']
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfunction[1;1H[7L[?25l[1;1H:  else
:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A[34m^X^U^N^[[m:q![24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hsetlocal completefunc=DummyCompleteTwo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^two[?25l[1;23r[23;1H
[1;24r[23;1Htwo[24;1H[K[23;1H[?12l[?25h[?25l
[1m[37m[41mE839: Completion function changed window[m
[1m[37m[41mE764: Option 'completefunc' is not set[m
[32mPress ENTER or type command to continue[?12l[?25h[m[23;1H[K[24;1H[K[1;1H[2L[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;2Hendfunction
:setlocal completefunc=DummyCompleteThree
/^three[15;8H[K[16;1HA[34m^X^U^N^[[m:/^+++/,/^three/w! test.out
:qa![17;5H[K[18;1HENDTEST[19;1H[K[20;1H+++[21;1H[K[22;1Htwo
[7mtest76.in [+]                                                                   [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hq![?25l[1;1H:    return ['twodef', 'twoDEF']
:  endif[2;9H[K[3;1H:endfunction[3;13H[K[4;1H:setlocal completefunc=DummyCompleteTwo[4;40H[K[5;1H/^two[5;6H[K[6;1HA[34m^X^U^N^[[m:q![6;13H[K[7;1H:"Test that 'completefunc' works when it's OK.[7;47H[K[8;1H:function! DummyCompleteThree(findstart, base)[8;47H[K[9;1H:  if a:findstart[9;18H[K[10;1H:    return 0[10;14H[K[11;1H:  else[11;8H[K[12;1H:    return ['threedef', 'threeDEF'][12;37H[K[13;2H  endif[13;9H[K[14;2Hendfunction[14;13H[K[15;1H:setlocal completefunc=DummyCompleteThree
/^three[16;8H[K[17;1HA[34m^X^U^N^[[m:/^+++/,/^three/w! test.out
:qa![18;5H[K[19;1HENDTEST[20;1H[K[21;1H+++[22;1H[K[23;1Htwo[23;4H[K[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"Test that 'completefunc' works when it's OK.[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! DummyCompleteThree(findstart, base)[?25l
:  [?12l[?25h:  if a:findstart
[?25l:    [?12l[?25h:    return 0
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    return ['threedef', 'threeDEF']
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfunction[1;1H[6L[?25l[1;1H:    return ['twodef', 'twoDEF']
:  endif
:endfunction
:setlocal completefunc=DummyCompleteTwo
/^two
A[34m^X^U^N^[[m:q![24;1H[K[23;3H[?12l[?25h[?25l
:[?12l[?25hsetlocal completefunc=DummyCompleteThree[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^three[?25l[1;23r[23;1H
[1;24r[23;1Hthree[24;1H[K[23;1H[?12l[?25h[?25l
[32mmatch 1 of 2[23;9H[mdef[21;1H[30m[47mthreedef       [m
[30m[45mthreeDEF       [23;9H[m[21;1H[K[22;1Htwo[22;4H[K[23;6HDEF[21;1H[30m[47mthreedef       [m
[30m[45mthreeDEF       [m[24;7H[32m2[23;9H[m[21;1H[30m[45mthreedef       [m
[30m[47mthreeDEF       [23;9H[m[24;1H[K[21;1H[K[22;1Htwo[22;4H[K[23;8H[?12l[?25h[?25l
:[?12l[?25h/^+++/,/^three/w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 4 lines, 18 characters written[23;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test77.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test77.in" 30 lines, 719 characters[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[22;1Hggdd
:w! Xtest[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HInserts 2 million lines with consecutive integers starting from 1[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 288 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[12;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[6M[1;24r[18;1H:r !cksum Xtest
:s/\s/ /g
:set fileformat&
:.w! test.out
:qa!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !executable("cksum")[?25l
:  [?12l[?25h: e! test.ok
[?25l:  [?12l[?25h: w! test.out
[?25l:  [?12l[?25h: qa!
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1Hcksum is part of POSIX and so should be available on most Unixes.
If it isn't available then the test will be skipped.

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset fileformat=unix undolevels=-1[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[7L[1;24r[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.[24;1H[K[1;1H[?12l[?25h[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet i = 1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwhile i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhil
[23;80He[24;1H[?25l[1;1H[L[2;1H1[2;2H[K[3;1H2[3;2H[K[4;1H3[4;2H[K[5;1H4[5;2H[K[6;1H5[6;2H[K[7;1H6[7;2H[K[8;1H7[8;2H[K[9;1H8[9;2H[K[10;1H9[10;2H[K[11;1H10[11;3H[K[12;1H11[12;3H[K[13;1H12[13;3H[K[14;1H13[14;3H[K[15;1H14[15;3H[K[16;1H15[16;3H[K[17;1H16[17;3H[K[18;1H17[18;3H[K[19;1H18[19;3H[K[20;1H19[20;3H[K[21;1H20[21;3H[K[22;1H21[22;3H[K[23;1H22[23;3H[K[24;1H[K[1;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H23[1;1H[?12l[?25h
[?25l[24;1H:[?12l[?25hw! Xtest[?25l"Xtest" [24;9H[K[24;9H[New File] 2000000 lines, 14888896 characters written[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hr !cksum Xtest[?25l[?12l[?25h[27m[m[H[2J[?25l[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[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25hs/\s/ /g[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformat&[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h.w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 26 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test78.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test78.in" 46 lines, 1464 characters[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 = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0122[13;1H3456789abcdefghijklmnoparstuvwxyz0123456789"
: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:][::[23;1Hcntrl:]]*$', '\1', '')[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HInserts 10000 lines with text to fill the swap file with two levels of pointer[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[7;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 37 lines, 1208 characters written[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[8;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: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 ""[13;1H . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let linn[14;1Hecount = linedollar | endif
:let i = 1
:while i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appendd[17;1H(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile
:q!
:call append(line('$'), 'recovery end')
:w! test.out
:qa!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp fileformat=unix undolevels=-1 viminfo+=nviminfo[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! Xtest[?25l"Xtest" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet text = "\tabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01
[23;80H2[24;1H3456789abcdefghijklmnoparstuvwxyz0123456789"[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet i = 1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet linecount = 10000[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwhile i <= linecount | call append(i - 1, i . text) | let i += 1 | endwhile[?25l[1;1H9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[2;1Habcdefghijklmnoparstuvwxyz0123456789[2;37H[K[3;1H9991    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[4;1Habcdefghijklmnoparstuvwxyz0123456789[4;37H[K[5;1H9992    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[6;1Habcdefghijklmnoparstuvwxyz0123456789[6;37H[K[7;1H9993    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[8;1Habcdefghijklmnoparstuvwxyz0123456789[8;37H[K[9;1H9994    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[10;1Habcdefghijklmnoparstuvwxyz0123456789[10;37H[K[11;1H9995    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[12;1Habcdefghijklmnoparstuvwxyz0123456789[12;37H[K[13;1H9996    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[14;1Habcdefghijklmnoparstuvwxyz0123456789[14;37H[K[15;1H9997    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[16;1Habcdefghijklmnoparstuvwxyz0123456789[16;37H[K[17;1H9998    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[18;1Habcdefghijklmnoparstuvwxyz0123456789[18;37H[K[19;1H9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[20;1Habcdefghijklmnoparstuvwxyz0123456789[20;37H[K[21;1H10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[22;1Habcdefghijklmnoparstuvwxyz0123456789[22;37H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hpreserve[?25lFile preserved[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" get the name of the swap file[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir => swapname[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hswapname[?25l.Xtest.swp[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir END[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet swapname = substitute(swapname, '[[:blank:][:cntrl:]]*\(.\{-}\)[[:blank:][
[23;80H:[24;1Hcntrl:]]*$', '\1', '')[?25l[1;1H[L[1;1H9990    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[2;1Ha[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h" make a copy of the swap file in Xswap[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset bin[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe 'sp ' . swapname[?25l".Xtest.swp"[24;14H[K[24;14H[noeol] 609L, 1228800C[1;1Hb0VIM 7.4[34m^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@[m [34m^[^@^@[mroot[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[2;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[mclfs[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[3;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[m/sources/vim74/src/testdir/Xtest[34m^@^@^@^@^@@[4;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[5;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[6;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[7;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[8;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[9;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[10;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[11;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[m[12;1H[1m[7m.Xtest.swp                                                                      [m[13;4H7[75C99[14;1Ha
9998[75C99[16;1Ha
9999[75C99[18;1Ha
10000[74C99[20;1Ha[21;1H[K[22;1H[1m[34m~                                                                               [m[23;1H[7mXtest [+]                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! Xswap[?25l"Xswap" [24;9H[K[24;9H[New][noeol] 609L, 1228800C written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hecho swapname[?25l.Xtest.sw[24;11H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nobin[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[8;1H[1m[7m[No Name]                                                                       [m[9;1Hb0VIM 7.4[34m^@^@^@^@^P^@^@^@^@^@^@^@^@^@^@[m [34m^[^@^@[mroot[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[10;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[mclfs[34m^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[11;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[m/sources/vim74/src/testdir/Xtest[34m^@^@^@^@^@@[12;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[13;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[14;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@[15;1H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@[m[16;1H[7m.Xtest.swp                                                                      [m[17;1H9999    abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[18;1Habcdefghijklmnoparstuvwxyz0123456789
10000   abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[20;1Habcdefghijklmnoparstuvwxyz0123456789

[1m[34m~                                                                               [m[23;1H[7mXtest [+]                                                                       [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25honly![?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hbwipe! Xtest[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall rename('Xswap', swapname)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hrecover Xtest[?25lUsing swap file ".Xtest.swp"
Original file "/sources/vim74/src/testdir/Xtest"
[23;1H"/sources/vim74/src/testdir/Xtest" [New File][23;46H[K[24;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.


[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall delete(swapname)[?25l[1;1H[8L[1;1H1[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[2;1Habcdefghijklmnoparstuvwxyz0123456789
2[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[4;1Habcdefghijklmnoparstuvwxyz0123456789
3[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[6;1Habcdefghijklmnoparstuvwxyz0123456789
4[7Cabcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[8;1Habcdefghijklmnoparstuvwxyz0123456789
5       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[10;1Habcdefghijklmnoparstuvwxyz0123456789[10;37H[K[11;1H6       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[12;1Habcdefghijklmnoparstuvwxyz0123456789[12;37H[K[13;1H7       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[14;1Habcdefghijklmnoparstuvwxyz0123456789[14;37H[K[15;1H8       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[16;1Habcdefghijklmnoparstuvwxyz0123456789[16;37H[K[17;1H9       abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[18;1Habcdefghijklmnoparstuvwxyz0123456789[18;37H[K[19;1H10      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[20;1Habcdefghijklmnoparstuvwxyz0123456789[20;37H[K[21;1H11      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567899[22;1Habcdefghijklmnoparstuvwxyz0123456789[22;37H[K[23;1H12      abcdefghijklmnoparstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789[23;1H[1m[34m@                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1H1[78C99[14;1Ha
2[78C99[16;1Ha
3[78C99[18;1Ha
4 [77C99[20;1Ha
5 [77C99[22;1Ha
[7mXtest [+]                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(0, 'recovery start')[?25l[1;11r[1;1H[L[1;24r[1;1Hrecovery start[12;11H[1m[7m[+][m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25hwincmd w[?25l[12;1H[7m[No Name] [+][m[1m[7m [m[7m                                                                   [m[23;1H[1m[7mXtest [+]                                                                       [13;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet linedollar = line('$')[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif linedollar < linecount | exe 'wincmd w' | call append(line('$'), "expected 
[23;80H"[24;1H . linecount . " lines but found only " . linedollar) | exe 'wincmd w' | let li
[23;80Hn[24;1Hecount = linedollar | endif[?25l[1;1H[2L[1;1Hrecovery start[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet i = 1[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwhile i <= linecount | if getline(i) != i . text | exe 'wincmd w' | call appen
[23;80Hd[24;1H(line('$'), i . ' differs') | exe 'wincmd w' | endif | let i += 1 | endwhile[?25l[1;1H[L[1;1Hrecovery start[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hq![?25l[12;1H[1m[34m~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), 'recovery end')[?25l[3;1Hrecovery end[3;13H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New] 3L, 29C written[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test79.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test79.in" 255 lines, 3381 characters[1;1HTest for *sub-replace-special* and *sub-replace-expression* on :substitute.
Test for submatch() on :substitue.
Test for *:s%* on :substitute.
Test for :s replacing \n with  line break.

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/[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for *sub-replace-special* and *sub-replace-expression* on :substitute.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 1 line, 14 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[8;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H25 lines, 347 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj:s/L/[34m^V^M[m/
j:s/M/\r/
j:s/N/\[34m^V^M[m/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/[34m^V^@[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[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/A/&&/[?25l[15;2HA[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/B/\&/[?25l[16;1H&[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/[?25l[17;11H987654321[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/D/d/[?25l[18;1Hd[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/E/~/[?25l[19;1Hd[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/F/\~/[?25l[20;1H~[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/G/\ugg/[?25l[21;2Hg[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/H/\Uh\Eh/[?25l[22;2Hh[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/I/\lII/[?25l[23;1HiI[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HJ[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/J/\LJ\EJ/[?25l[23;1HjJ[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HK[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/K/\Uk\ek/[?25l[23;2Hk[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HlLl[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/L/^[34m^M[m/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hl[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HmMm[?12l[?25h[?25l
:[?12l[?25hs/M/\r/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hm[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HnNn[?12l[?25h[?25l
:[?12l[?25hs/N/\^[34m^M[m/[?25l[23;2H[34m^M[mn[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HoOo[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/O/\n/[?25l[23;2H[34m^@[mo[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HpPp[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/P/\b/[?25l[23;2H[34m^H[mp[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HqQq[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/Q/\t/[?25l[23;2H       q[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HrRr[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/R/\\/[?25l[23;2H\[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HsSs[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/S/\c/[?25l[23;2Hc[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HtTt[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/T/^[34m^@[m/[?25l[23;2H[34m^@[mt[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HU[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/U/\L\uuUu\l\EU/[?25l[23;2HuuU[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HV[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/V/\U\lVvV\u\Ev/[?25l[23;1HvVVv[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set nomagic[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H25 lines, 351 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj:s/L/[34m^V^M[m/
j:s/M/\r/
j:s/N/\[34m^V^M[m/
j:s/O/\n/
j:s/P/\b/
j:s/Q/\t/
j:s/R/\\/
j:s/S/\c/
j:s/T/[34m^V^@[m/
j:s/U/\L\uuUu\l\EU/
j:s/V/\U\lVvV\u\Ev/
ENDTEST

TEST_2:
A
B
C123456789
D
E
F
G
H
I[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nomagic[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/A/&&/[?25l[15;1H&&[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/B/\&/[?25l[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/\mC\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\0\9\8\7\6\5\4\3\2\1/[?25l[17;11H987654321[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/D/d/[?25l[18;1Hd[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/E/~/[?25l[19;1H~[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/F/\~/[?25l[20;1H~[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/G/\ugg/[?25l[21;2Hg[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/H/\Uh\Eh/[?25l[22;2Hh[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/I/\lII/[?25l[23;1HiI[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HJ[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/J/\LJ\EJ/[?25l[23;1HjJ[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HK[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/K/\Uk\ek/[?25l[23;2Hk[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HlLl[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/L/^[34m^M[m/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hl[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HmMm[?12l[?25h[?25l
:[?12l[?25hs/M/\r/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hm[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HnNn[?12l[?25h[?25l
:[?12l[?25hs/N/\^[34m^M[m/[?25l[23;2H[34m^M[mn[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HoOo[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/O/\n/[?25l[23;2H[34m^@[mo[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HpPp[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/P/\b/[?25l[23;2H[34m^H[mp[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HqQq[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/Q/\t/[?25l[23;2H       q[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HrRr[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/R/\\/[?25l[23;2H\[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HsSs[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/S/\c/[?25l[23;2Hc[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HtTt[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/T/^[34m^@[m/[?25l[23;2H[34m^@[mt[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HU[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/U/\L\uuUu\l\EU/[?25l[23;2HuuU[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HV[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/V/\U\lVvV\u\Ev/[?25l[23;1HvVVv[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set magic&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H15 lines, 203 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj:s/B/\='\\'/
j:s/C/\='[34m^V^M[m'/
j:s/D/\='\[34m^V^M[m'/
j:s/E/\='\\[34m^V^M[m'/
j:s/F/\='\r'/
j:s/G/\='[34m^V^@[m'/
j:s/H/\='\[34m^V^@[m'/
j:s/I/\='\\[34m^V^@[m'/
j:s/J/\='\n'/
j:s/K/\="\r"/
j:s/L/\="\n"/
ENDTEST

TEST_3:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/A/\='\'/[?25l[15;2H\[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/B/\='\\'/[?25l[16;2H\\b[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/C/\='^[34m^M[m'/[?25l[18;23r[18;1H[L[1;24r[17;2H[K[18;1Hc[24;1H[K[18;1H[?12l[?25h
[?25l[24;1H:[?12l[?25hs/D/\='\^[34m^M[m'/[?25l[20;23r[20;1H[L[1;24r[19;2H\[19;3H[K[20;1Hd[24;1H[K[20;1H[?12l[?25h
[?25l


:[?12l[?25hs/E/\='\\^[34m^M[m'/[?25l[21;2H\\
e[22;2H[K[23;1HfFf[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/F/\='\r'/[?25l[23;2H\rf[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HgGg[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/G/\='^[34m^@[m'/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hg[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HhHh[?12l[?25h[?25l
:[?12l[?25hs/H/\='\^[34m^@[m'/[?25l[1;23r[23;1H
[1;24r[22;2H\[22;3H[K[23;1Hh[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HiIi[?12l[?25h[?25l
:[?12l[?25hs/I/\='\\^[34m^@[m'/[?25l[1;23r[23;1H
[1;24r[22;2H\\
i[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HjJj[?12l[?25h[?25l
:[?12l[?25hs/J/\='\n'/[?25l[23;2H\nj[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HkKk[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/K/\="\r"/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hk[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HlLl[?12l[?25h[?25l
:[?12l[?25hs/L/\="\n"/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hl[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set magic&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H15 lines, 611 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj:s/B/\=substitute(submatch(0), '.', '\\', '')/
j:s/C/\=substitute(submatch(0), '.', '[34m^V^M[m', '')/
j:s/D/\=substitute(submatch(0), '.', '\[34m^V^M[m', '')/
j:s/E/\=substitute(submatch(0), '.', '\\[34m^V^M[m', '')/
j:s/F/\=substitute(submatch(0), '.', '\r', '')/
j:s/G/\=substitute(submatch(0), '.', '[34m^V^@[m', '')/
j:s/H/\=substitute(submatch(0), '.', '\[34m^V^@[m', '')/
j:s/I/\=substitute(submatch(0), '.', '\\[34m^V^@[m', '')/
j:s/J/\=substitute(submatch(0), '.', '\n', '')/
j:s/K/\=substitute(submatch(0), '.', "\r", '')/
j:s/L/\=substitute(submatch(0), '.', "\n", '')/
ENDTEST

TEST_4:
aAa
bBb
cCc
dDd
eEe
fFf
gGg
hHh
iIi[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/A/\=substitute(submatch(0), '.', '\', '')/[?25l[15;2H\[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/B/\=substitute(submatch(0), '.', '\\', '')/[?25l[16;2H\[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/C/\=substitute(submatch(0), '.', '^[34m^M[m', '')/[?25l[18;23r[18;1H[L[1;24r[17;2H[K[18;1Hc[24;1H[K[18;1H[?12l[?25h
[?25l[24;1H:[?12l[?25hs/D/\=substitute(submatch(0), '.', '\^[34m^M[m', '')/[?25l[20;23r[20;1H[L[1;24r[19;2H[K[20;1Hd[24;1H[K[20;1H[?12l[?25h
[?25l


:[?12l[?25hs/E/\=substitute(submatch(0), '.', '\\^[34m^M[m', '')/[?25l[21;2H\[21;3H[K[22;1He[22;2H[K[23;1HfFf[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/F/\=substitute(submatch(0), '.', '\r', '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hf[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HgGg[?12l[?25h[?25l
:[?12l[?25hs/G/\=substitute(submatch(0), '.', '^[34m^@[m', '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hg[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HhHh[?12l[?25h[?25l
:[?12l[?25hs/H/\=substitute(submatch(0), '.', '\^[34m^@[m', '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hh[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HiIi[?12l[?25h[?25l
:[?12l[?25hs/I/\=substitute(submatch(0), '.', '\\^[34m^@[m', '')/[?25l[1;23r[23;1H
[1;24r[22;2H\[22;3H[K[23;1Hi[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HjJj[?12l[?25h[?25l
:[?12l[?25hs/J/\=substitute(submatch(0), '.', '\n', '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hj[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HkKk[?12l[?25h[?25l
:[?12l[?25hs/K/\=substitute(submatch(0), '.', "\r", '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hk[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HlLl[?12l[?25h[?25l
:[?12l[?25hs/L/\=substitute(submatch(0), '.', "\n", '')/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1Hl[24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set magic&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H5 lines, 445 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[9M[1;24r[15;1H:set cpo&
/^TEST/
j:s/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) ..[18;1H submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(([19;1H3) . submatch(2) . submatch(1)/
j:s/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), subb[21;1Hmatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), subb[22;1Hmatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[1;23r[23;1H
[1;24r[23;1HTEST_5:[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HA123456789[?12l[?25h[?25l
:[?12l[?25hs/A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=submatch(0) . submatch(9) .
submatch(8) . submatch(7) . submatch(6) . submatch(5) . submatch(4) . submatch(
[23;80H3[24;1H) . submatch(2) . submatch(1)/[?25l[1;1H[2L[1;1Hi\
i[23;11H987654321[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HB123456789[?12l[?25h[?25l
:[?12l[?25hs/B\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\=string([submatch(0, 1), sub
[23;80Hm[24;1Hatch(9, 1), submatch(8, 1), submatch(7, 1), submatch(6, 1), submatch(5, 1), sub
[23;80Hm[24;1Hatch(4, 1), submatch(3, 1), submatch(2, 1), submatch(1, 1)])/[?25l[1;1H[2L[1;1Hi
j[23;1H[['B123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']][24;1H[K[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[1;1H[2M[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set magic&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H8 lines, 80 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[8M[1;24r[16;1H/^TEST/
:set cpo+=/
j:s/A/a/
j:s/B/%/
:set cpo-=/
j:s/C/c/
j:s/D/%/
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST/[?25l[24;7H[K[24;1H[1;23r[1;1H[3M[1;24r[21;1HTEST_6:
A
B[24;1H[K[21;1H[?12l[?25h[?25l


:[?12l[?25hset cpo+=/[?25l[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/A/a/[?25l[22;1Ha[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/B/%/[?25l[23;1Ha[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo-=/[?25l[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[21;1HC
D[24;1H[K[21;1H[?12l[?25h[?25l


:[?12l[?25hs/C/c/[?25l[21;1Hc[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hs/D/%/[?25l[22;1H%[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:set magic&[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H11 lines, 303 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[11M[1;24r[13;1H:set cpo&
/^TEST_7/
j:s/A./\=submatch(0)/
j:s/B./\=submatch(0)/
j:s/C./\=strtrans(string(submatch(0, 1)))/
j:s/D.\nD/\=strtrans(string(submatch(0, 1)))/
j:s/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/
/^Q$
:s/Q[^\n]Q/\=submatch(0)."foobar"/
:" Avoid :s error breaks dotest map on Windows.
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^TEST_7/[?25l[24;9H[K[24;1H[1;23r[23;1H
[1;24r[23;1HTEST_7:[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HA[34m^M[mA[?12l[?25h[?25l
:[?12l[?25hs/A./\=submatch(0)/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1HA[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HB[34m^@[mB[?12l[?25h[?25l
:[?12l[?25hs/B./\=submatch(0)/[?25l[1;23r[23;1H
[1;24r[22;2H[K[23;1HB[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HC[34m^@[mC[?12l[?25h[?25l
:[?12l[?25hs/C./\=strtrans(string(submatch(0, 1)))/[?25l[23;1H['C^@']C[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HD[34m^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/D.\nD/\=strtrans(string(submatch(0, 1)))/[?25l[23;1H['D^@', 'D'][?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1HE[34m^@[m[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/E\_.\{-}E/\=strtrans(string(submatch(0, 1)))/[?25l[23;1H['E^@', '^@', '^@', '^@', '^@E'][?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Q$[?25l[1;23r[23;1H
[1;24r[23;1HQ[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/Q[^\n]Q/\=submatch(0)."foobar"/[?25l[1m[37m[41mE486: Pattern not found: Q[^\n]Q[m[24;33H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Avoid :s error breaks dotest map on Windows.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[1;23r[1;1H[3M[1;24r[21;1HQ

STARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:function! TitleString()[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H8 lines, 177 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[8M[1;24r[16;3Hlet check = 'foo' =~ 'bar'
  return ""
endfunction
:set titlestring=%{TitleString()}
:/^test_one/s/.*/\="foo\nbar"/
:/^test_two/s/.*/\="foo\nbar"/c
y
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! TitleString()[?25l
:  [?12l[?25h  let check = 'foo' =~ 'bar'
[?25l:  [?12l[?25h  return ""
[?25l:  [?12l[?25hendfunction[1;1H[3L[?25l[2;1HTEST_7:
A[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset titlestring=%{TitleString()}[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^test_one/s/.*/\="foo\nbar"/[?25l[1;23r[1;1H[2M[1;24r[22;1Hfoo
bar[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^test_two/s/.*/\="foo\nbar"/c[?25l[1;23r[23;1H
[1;24r[23;1H[7mtest_two[m[24;1H[K[24;1H[32mreplace with \="foo\nbar" (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[1;23r[23;1H
[1;24r[22;1Hfoo[22;4H[K[23;1Hbar[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
/^STARTTEST[1;23r[23;1H
[1;24r[23;1HSTARTTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:g/^STARTTEST/.,/^ENDTEST/d[?12l[?25h[?25l
:set ff=unix cpo-=A[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H3 lines, 72 characters written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[23;1H[?12l[?25h[?25l
/ENDTEST[24;10H[K[24;1H[23;19H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H:1;/^Results/,$wq! test.out[24;1H[K[23;19H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hg/^STARTTEST/.,/^ENDTEST/d[?25l136 fewer lines[24;16H[K[1;1Ha[1;2H[K[2;1Ha
c
%[5;1H[K[6;1H[K[7;1HTEST_7:[7;8H[K[8;1HA[8;3H[K[9;1HA[9;2H[K[10;1HB[10;2H[K[11;1HB[11;2H[K[12;1H['C^@']C[12;9H[K[13;1H['D^@', 'D']
['E^@', '^@', '^@', '^@', '^@E']
Q
Q[16;2H[K[17;1H[K[18;1H[K[19;1Hfoo
bar
foo[21;4H[K[22;1Hbar[22;4H[K[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1;/^Results/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 134 lines, 574 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test80.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test80.in" 201 lines, 6296 characters[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\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[18;1H, '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
:$put =substitute('F', 'F', '\~', '')
:$put =substitute('G', 'G', '\ugg', '')
:$put =substitute('H', 'H', '\Uh\Eh', '')[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for *sub-replace-special* and *sub-replace-expression* on substitue().[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 1 line, 14 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[7;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[8;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H29 lines, 1142 characters written[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[12;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$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\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[23;1H, '\0\9\8\7\6\5\4\3\2\1', '')[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_1:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1H:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')[12C| $put =y
:let y = substitute('123', '\ze', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')[12C| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')[10C| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('A', 'A', '&&', '')[?25l[1;23r[23;1H
[1;24r[23;1HAA[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('B', 'B', '\&', '')[?25l[1;23r[23;1H
[1;24r[23;1H&[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)
[23;80H'[24;1H, '\0\9\8\7\6\5\4\3\2\1', '')[?25l[1;1H[L[1;1H:let y = substitute('123', '\zs.', 'a', 'g')[12C| $put =y[2;29H.\zs[3;29H\ze', 'a', 'g') [4;32H.', 'a', 'g')[5;29H.\ze[6;29H1\|\ze', 'a', 'g')[7;31Hzs\|[23]', 'a', 'g')
/^TEST_11[8;10H[K[9;1HENDTEST[9;8H[K[10;1H[K[11;1HTEST_11:[12;1H[K[13;1HSTARTTEST
:/^Results/,$wq! test.out
ENDTEST[15;8H[K[16;1H[K[17;1HResults of test72:[18;1H[K[20;1HTEST_1:
AA[21;3H[K[22;1H&[22;2H[K[23;1HC123456789987654321[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('D', 'D', 'd', '')[?25l[1;23r[23;1H
[1;24r[23;1Hd[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('E', 'E', '~', '')[?25l[1;23r[23;1H
[1;24r[23;1H~[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('F', 'F', '\~', '')[?25l[1;23r[23;1H
[1;24r[23;1H~[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('G', 'G', '\ugg', '')[?25l[1;23r[23;1H
[1;24r[23;1HGg[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('H', 'H', '\Uh\Eh', '')[?25l[1;23r[23;1H
[1;24r[23;1HHh[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('I', 'I', '\lII', '')[?25l[1;23r[23;1H
[1;24r[23;1HiI[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('J', 'J', '\LJ\EJ', '')[?25l[1;23r[23;1H
[1;24r[23;1HjJ[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('K', 'K', '\Uk\ek', '')[?25l[1;23r[23;1H
[1;24r[23;1HKk[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('lLl', 'L', '^[34m^M[m', '')[?25l[1;23r[23;1H
[1;24r[23;1Hl[34m^M[ml[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('mMm', 'M', '\r', '')[?25l[1;23r[23;1H
[1;24r[23;1Hm[34m^M[mm[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('nNn', 'N', '\^[34m^M[m', '')[?25l[1;23r[23;1H
[1;24r[23;1Hn[34m^M[mn[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('oOo', 'O', '\n', '')[?25l[1;23r[1;1H[2M[1;24r[22;1Ho
o[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('pPp', 'P', '\b', '')[?25l[1;23r[23;1H
[1;24r[23;1Hp[34m^H[mp[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('qQq', 'Q', '\t', '')[?25l[1;23r[23;1H
[1;24r[23;1Hq[7Cq[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('rRr', 'R', '\\', '')[?25l[1;23r[23;1H
[1;24r[23;1Hr\r[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('sSs', 'S', '\c', '')[?25l[1;23r[23;1H
[1;24r[23;1Hscs[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('uUu', 'U', \"\n\", '')[?25l[1;23r[1;1H[2M[1;24r[22;1Hu
u[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('vVv', 'V', \"\b\", '')[?25l[1;23r[23;1H
[1;24r[23;1Hv[34m^H[mv[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('wWw', 'W', \"\\\", '')[?25l[1;23r[23;1H
[1;24r[23;1Hw\w[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('xXx', 'X', \"\r\", '')[?25l[1;23r[23;1H
[1;24r[23;1Hx[34m^M[mx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('Y', 'Y', '\L\uyYy\l\EY', '')[?25l[1;23r[23;1H
[1;24r[23;1HYyyY[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('Z', 'Z', '\U\lZzZ\u\Ez', '')[?25l[1;23r[23;1H
[1;24r[23;1HzZZz[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_2[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:$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\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[21;1H, '\0\9\8\7\6\5\4\3\2\1', '')
:$put =substitute('D', 'D', 'd', '')
:$put =substitute('E', 'E', '~', '')
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H29 lines, 1144 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$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', '\="\\"', '')[11C| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')[9C| $put =y
:let y = substitute('cCc', 'C', '\="[34m^V^M[m"', '')[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\[34m^V^M[m"', '')[7C| $put =y[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nomagic[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_2:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1HHh
iI
jJ
Kk
l[34m^M[ml
m[34m^M[mm
n[34m^M[mn
o
o
p[34m^H[mp
q[7Cq
r\r
scs
u
u
v[34m^H[mv
w\w
x[34m^M[mx
YyyY
zZZz


TEST_2:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('A', 'A', '&&', '')[?25l[1;23r[23;1H
[1;24r[23;1HAA[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('B', 'B', '\&', '')[?25l[1;23r[23;1H
[1;24r[23;1H&[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('C123456789', 'C\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)
[23;80H'[24;1H, '\0\9\8\7\6\5\4\3\2\1', '')[?25l[1;1H[L[1;1HKk
l[34m^M[ml
m[2Cm
n[2Cn
o[5;2H[K[7;1Hp[34m^H[mp
q       q
r\r[9;9H[K[10;1Hscs
u[11;2H[K[13;1Hv[34m^H[mv
w\w[14;4H[K[15;1Hx[34m^M[mx
YyyY
zZZz[18;1H[K[20;1HTEST_2:
AA[21;3H[K[22;1H&[22;2H[K[23;1HC123456789987654321[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('D', 'D', 'd', '')[?25l[1;23r[23;1H
[1;24r[23;1Hd[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('E', 'E', '~', '')[?25l[1;23r[23;1H
[1;24r[23;1H~[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('F', 'F', '\~', '')[?25l[1;23r[23;1H
[1;24r[23;1H~[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('G', 'G', '\ugg', '')[?25l[1;23r[23;1H
[1;24r[23;1HGg[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('H', 'H', '\Uh\Eh', '')[?25l[1;23r[23;1H
[1;24r[23;1HHh[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('I', 'I', '\lII', '')[?25l[1;23r[23;1H
[1;24r[23;1HiI[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('J', 'J', '\LJ\EJ', '')[?25l[1;23r[23;1H
[1;24r[23;1HjJ[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('K', 'K', '\Uk\ek', '')[?25l[1;23r[23;1H
[1;24r[23;1HKk[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('lLl', 'L', '^[34m^M[m', '')[?25l[1;23r[23;1H
[1;24r[23;1Hl[34m^M[ml[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('mMm', 'M', '\r', '')[?25l[1;23r[23;1H
[1;24r[23;1Hm[34m^M[mm[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('nNn', 'N', '\^[34m^M[m', '')[?25l[1;23r[23;1H
[1;24r[23;1Hn[34m^M[mn[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('oOo', 'O', '\n', '')[?25l[1;23r[1;1H[2M[1;24r[22;1Ho
o[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('pPp', 'P', '\b', '')[?25l[1;23r[23;1H
[1;24r[23;1Hp[34m^H[mp[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('qQq', 'Q', '\t', '')[?25l[1;23r[23;1H
[1;24r[23;1Hq[7Cq[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('rRr', 'R', '\\', '')[?25l[1;23r[23;1H
[1;24r[23;1Hr\r[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('sSs', 'S', '\c', '')[?25l[1;23r[23;1H
[1;24r[23;1Hscs[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('tTt', 'T', \"\r\", '')[?25l[1;23r[23;1H
[1;24r[23;1Ht[34m^M[mt[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('uUu', 'U', \"\n\", '')[?25l[1;23r[1;1H[2M[1;24r[22;1Hu
u[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('vVv', 'V', \"\b\", '')[?25l[1;23r[23;1H
[1;24r[23;1Hv[34m^H[mv[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('wWw', 'W', \"\\\", '')[?25l[1;23r[23;1H
[1;24r[23;1Hw\w[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('X', 'X', '\L\uxXx\l\EX', '')[?25l[1;23r[23;1H
[1;24r[23;1HXxxX[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('Y', 'Y', '\U\lYyY\u\Ey', '')[?25l[1;23r[23;1H
[1;24r[23;1HyYYy[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_3[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[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', '\="\\"', '')[11C| $put =y
:let y = substitute('bBb', 'B', '\="\\\\"', '')[9C| $put =y
:let y = substitute('cCc', 'C', '\="[34m^V^M[m"', '')[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\[34m^V^M[m"', '')[7C| $put =y
:let y = substitute('eEe', 'E', '\="\\\\[34m^V^M[m"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')[10C| $put =y
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H13 lines, 642 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[5M[1;24r[19;1H:let y = substitute('jJj', 'J', '\="\\n"', '')[10C| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')[11C| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')[11C| $put =y
/^TEST_4
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_3:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1HHh
iI
jJ
Kk
l[34m^M[ml
m[34m^M[mm
n[34m^M[mn
o
o
p[34m^H[mp
q[7Cq
r\r
scs
t[34m^M[mt
u
u
v[34m^H[mv
w\w
XxxX
yYYy


TEST_3:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet y = substitute('aAa', 'A', '\="\\"', '')           | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Ha\a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('bBb', 'B', '\="\\\\"', '')         | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hb\\b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('cCc', 'C', '\="^[34m^M[m"', '')         | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hc[34m^M[mc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('dDd', 'D', '\="\\^[34m^M[m"', '')       | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hd\[34m^M[md[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('eEe', 'E', '\="\\\\^[34m^M[m"', '')     | $put =y[?25l[1;23r[23;1H
[1;24r[23;1He\\[34m^M[me[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('fFf', 'F', '\="\\r"', '')          | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hf\rf[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('jJj', 'J', '\="\\n"', '')          | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hj\nj[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('kKk', 'K', '\="\r"', '')           | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Hk[34m^M[mk[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('lLl', 'L', '\="\n"', '')           | $put =y[?25l[1;23r[1;1H[2M[1;24r[22;1Hl
l[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_4[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:let y = substitute('bBb', 'B', '\="\\\\"', '')[9C| $put =y
:let y = substitute('cCc', 'C', '\="[34m^V^M[m"', '')[9C| $put =y
:let y = substitute('dDd', 'D', '\="\\[34m^V^M[m"', '')[7C| $put =y
:let y = substitute('eEe', 'E', '\="\\\\[34m^V^M[m"', '')     | $put =y
:let y = substitute('fFf', 'F', '\="\\r"', '')[10C| $put =y
:let y = substitute('jJj', 'J', '\="\\n"', '')[10C| $put =y
:let y = substitute('kKk', 'K', '\="\r"', '')[11C| $put =y
:let y = substitute('lLl', 'L', '\="\n"', '')[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), ".", "\\", "")', '')  [19;1H      | $put =y
:let y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '''[21;1H)     | $put =y
:let y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "[34m^V^M[m", "")', '''[23;1H)     | $put =y
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H13 lines, 912 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[14M[1;24r[10;1H:let y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\[34m^V^M[m", "")',  [11;1H'')   | $put =y
:let y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\[34m^V^M[m", "")''[13;1H, '') | $put =y
:let y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''))[15;1H      | $put =y
:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))[17;1H      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')  [19;1H      | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')  [21;1H      | $put =y
/^TEST_5
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_4:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1Ht[34m^M[mt
u
u
v[34m^H[mv
w\w
XxxX
yYYy


TEST_3:
a\a
b\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf
j\nj
k[34m^M[mk
l
l


TEST_4:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet y = substitute('aAa', 'A', '\=substitute(submatch(0), ".", "\\", "")', '')
      | $put =y[?25l[1;1H[L[1;1Hu

v[34m^H[mv
w\w[4;4H[K[5;1HXxxX
yYYy[7;1H[K[9;1HTEST_3:
a\a[10;4H[K[11;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[15;5H[K[16;1Hj\nj
k[34m^M[mk
l[18;2H[K[20;1H[K[22;1HTEST_4:
a\a[23;4H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('bBb', 'B', '\=substitute(submatch(0), ".", "\\\\", "")', '
[23;80H'[24;1H)     | $put =y[?25l[1;1H[L[1;1Hu
v[34m^H[mv
w\w[3;4H[K[4;1HXxxX
yYYy[6;1H[K[8;1HTEST_3:
a\a[9;4H[K[10;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[14;5H[K[15;1Hj\nj
k[34m^M[mk
l[17;2H[K[19;1H[K[21;1HTEST_4:
a\a[22;4H[K[23;1Hb\b[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('cCc', 'C', '\=substitute(submatch(0), ".", "^[34m^M[m", "")', '')
    | $put =y[?25l[1;1H[L[1;1Hv[34m^H[mv
w\w[2;4H[K[3;1HXxxX
yYYy[5;1H[K[7;1HTEST_3:
a\a[8;4H[K[9;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[13;5H[K[14;1Hj\nj
k[34m^M[mk
l[16;2H[K[18;1H[K[20;1HTEST_4:
a\a[21;4H[K[22;1Hb\b
c[34m^M[mc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('dDd', 'D', '\=substitute(submatch(0), ".", "\\^[34m^M[m", "")', '
[23;80H'[24;1H)   | $put =y[?25l[1;1H[L[1;1Hw\w
XxxX
yYYy[4;1H[K[6;1HTEST_3:
a\a[7;4H[K[8;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[12;5H[K[13;1Hj\nj
k[34m^M[mk
l[15;2H[K[17;1H[K[19;1HTEST_4:
a\a[20;4H[K[21;1Hb\b
c[34m^M[mc
d[2Cd[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('eEe', 'E', '\=substitute(submatch(0), ".", "\\\\^[34m^M[m", "")',
'') | $put =y[?25l[1;1H[L[1;1HXxxX
yYYy[3;1H[K[5;1HTEST_3:
a\a[6;4H[K[7;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[11;5H[K[12;1Hj\nj
k[34m^M[mk
l[14;2H[K[16;1H[K[18;1HTEST_4:
a\a[19;4H[K[20;1Hb\b
c[34m^M[mc
d[2Cd
e\[34m^M[me[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('fFf', 'F', '\=substitute(submatch(0), ".", "\\r", "")', ''
[23;80H)[24;1H      | $put =y[?25l[1;1H[L[1;1HyYYy[2;1H[K[4;1HTEST_3:
a\a[5;4H[K[6;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[10;5H[K[11;1Hj\nj
k[34m^M[mk
l[13;2H[K[15;1H[K[17;1HTEST_4:
a\a[18;4H[K[19;1Hb\b
c[34m^M[mc
d[2Cd
e\[34m^M[me
f[34m^M[mf[23;5H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''
[23;80H)[24;1H      | $put =y[?25l[1;1H[L[2;1HTEST_3:
a\a
b\\b[4;5H[K[5;1Hc[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[8;5H[K[9;1Hj\nj[9;5H[K[10;1Hk[34m^M[mk
l[11;2H[K[12;1Hl[12;2H[K[13;1H[K[14;1H[K[15;1HTEST_4:
a\a
b\b[17;4H[K[18;1Hc[34m^M[mc
d[34m^M[md
e\[34m^M[me
f[2Cf
j[22;2H[K[23;1Hj[23;2H[K[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')
      | $put =y[?25l[1;1H[L[1;1HTEST_3:
a\a[2;4H[K[3;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[7;5H[K[8;1Hj\nj
k[34m^M[mk
l[10;2H[K[12;1H[K[14;1HTEST_4:
a\a[15;4H[K[16;1Hb\b
c[34m^M[mc
d[2Cd
e\[34m^M[me
f[34m^M[mf[20;5H[K[21;1Hj[21;2H[K[23;1Hk[34m^M[mk[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')
      | $put =y[?25l[1;1H[L[1;1Hb\\b
c[34m^M[mc
d\[34m^M[md
e\\[34m^M[me
f\rf[5;5H[K[6;1Hj\nj[6;5H[K[7;1Hk[34m^M[mk
l[8;2H[K[9;1Hl[9;2H[K[10;1H[K[11;1H[K[12;1HTEST_4:
a\a
b\b[14;4H[K[15;1Hc[34m^M[mc
d[34m^M[md
e\[34m^M[me
f[2Cf
j[19;2H[K[20;1Hj[20;2H[K[21;1Hk[34m^M[mk
l
l[23;2H[K[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_5[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:let y = substitute('jJj', 'J', '\=substitute(submatch(0), ".", "\\n", "")', ''))[2;1H      | $put =y
:let y = substitute('kKk', 'K', '\=substitute(submatch(0), ".", "\r", "")', '')  [4;1H      | $put =y
:let y = substitute('lLl', 'L', '\=substitute(submatch(0), ".", "\n", "")', '')  [6;1H      | $put =y
/^TEST_5
ENDTEST

TEST_5:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[17;1H, '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaa[18;1Htch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[20;1H, '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subb[21;1Hmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subb[22;1Hmatch(1, 1)])', '')
/^TEST_6
[31msearch hit BOTTOM, continuing at TOP[10;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H6 lines, 543 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1HENDTEST[24;1H[K[22;1H[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_5:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1He\\[34m^M[me
f\rf
j\nj
k[34m^M[mk
l
l


TEST_4:
a\a
b\b
c[34m^M[mc
d[34m^M[md
e\[34m^M[me
f[34m^M[mf
j
j
k[34m^M[mk
l
l


TEST_5:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)
[23;80H'[24;1H, '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . subm
[23;80Ha[24;1Htch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')[?25l[1;1H[2L[1;1Hf\rf
j\nj
k[34m^M[mk
l[4;2H[K[6;1H[K[8;1HTEST_4:
a\a[9;4H[K[10;1Hb\b
c[34m^M[mc
d[2Cd
e\[34m^M[me
f[34m^M[mf[14;5H[K[15;1Hj[15;2H[K[17;1Hk[34m^M[mk
l[18;2H[K[20;1H[K[22;1HTEST_5:
A123456789987654321[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)
[23;80H'[24;1H, '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), su
[23;80Hb[24;1Hmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), su
[23;80Hb[24;1Hmatch(1, 1)])', '')[?25l[1;1H[3L[1;1Hj\nj
k[34m^M[mk
l[5;1H[K[7;1HTEST_4:
a\a[8;4H[K[9;1Hb\b
c[34m^M[mc
d[2Cd
e\[34m^M[me
f[34m^M[mf[13;5H[K[14;1Hj[14;2H[K[16;1Hk[34m^M[mk
l[17;2H[K[19;1H[K[21;1HTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']][24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_6[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:$put =\"\n\nTEST_5:\"
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[3;1H, '\=submatch(0) . submatch(9) . submatch(8) . submatch(7) . submatch(6) . submaa[4;1Htch(5) . submatch(4) . submatch(3) . submatch(2) . submatch(1)', '')
:$put =substitute('A123456789', 'A\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)''[6;1H, '\=string([submatch(0, 1), submatch(9, 1), submatch(8, 1), submatch(7, 1), subb[7;1Hmatch(6, 1), submatch(5, 1), submatch(4, 1), submatch(3, 1), submatch(2, 1), subb[8;1Hmatch(1, 1)])', '')
/^TEST_6
ENDTEST

TEST_6:

STARTTEST
:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H9 lines, 216 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[23;1H
[1;24r[23;1HENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[1;1H[3M[1;24r[22;1HTEST_7:[21;1H[?12l[?25h[?25l


:so! Xdotest[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_6:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1Hl


TEST_4:
a\a
b\b
c[34m^M[mc
d[34m^M[md
e\[34m^M[me
f[34m^M[mf
j
j
k[34m^M[mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo+=/[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('A', 'A', 'a', '')[?25l[1;23r[23;1H
[1;24r[23;1Ha[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('B', 'B', '%', '')[?25l[1;23r[23;1H
[1;24r[23;1H%[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset cpo-=/[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('C', 'C', 'c', '')[?25l[1;23r[23;1H
[1;24r[23;1Hc[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('D', 'D', '%', '')[?25l[1;23r[23;1H
[1;24r[23;1H%[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_7[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:set magic&
:$put =\"\n\nTEST_6:\"
:set cpo+=/
:$put =substitute('A', 'A', 'a', '')
:$put =substitute('B', 'B', '%', '')
:set cpo-=/
:$put =substitute('C', 'C', 'c', '')
:$put =substitute('D', 'D', '%', '')
/^TEST_7
ENDTEST

TEST_7:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A[34m^V^M[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H9 lines, 313 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[23;1H
[1;24r[23;1HENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_7:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1Hd[34m^M[md
e\[34m^M[me
f[34m^M[mf
j
j
k[34m^M[mk
l
l


TEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =substitute('A^[34m^M[mA', 'A.', '\=submatch(0)', '')[?25l[1;23r[23;1H
[1;24r[23;1HA[34m^M[mA[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')[?25l[1;23r[1;1H[2M[1;24r[22;1HB
B[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')[?25l[1;23r[1;1H[2M[1;24r[22;1H['B
']B[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('-bb', '\zeb', 'a', 'g')[?25l[1;23r[23;1H
[1;24r[23;1H-abab[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =substitute('-bb', '\ze', 'c', 'g')[?25l[1;23r[23;1H
[1;24r[23;1Hc-cbcbc[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_8[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:set magic&
:set cpo&
:$put =\"\n\nTEST_7:\"
:$put =substitute('A[34m^V^M[mA', 'A.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=submatch(0)', '')
:$put =substitute(\"B\nB\", 'B.', '\=string(submatch(0, 1))', '')
:$put =substitute('-bb', '\zeb', 'a', 'g')
:$put =substitute('-bb', '\ze', 'c', 'g')
/^TEST_8
ENDTEST

TEST_8:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_8:\"
:$put =',,X'
:s/\(^\|,\)\ze\(,\|X\)/\1N/g
:$put =',,Y'
:s/\(^\|,\)\ze\(,\|Y\)/\1N/gc
a:$put =',,Z'
:s/\(^\|,\)\ze\(,\|Z\)/\1N/gc
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H10 lines, 186 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[2M[1;24r[22;1Hyy/^TEST_9:
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_8:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1HTEST_5:
A123456789987654321
[['A123456789'], ['9'], ['8'], ['7'], ['6'], ['5'], ['4'], ['3'], ['2'], ['1']]


TEST_6:
a
%
c
%


TEST_7:
A[34m^M[mA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =',,X'[?25l[1;23r[23;1H
[1;24r[23;1H,,X[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(^\|,\)\ze\(,\|X\)/\1N/g[?25l[23;1HN,,NX[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =',,Y'[?25l[1;23r[23;1H
[1;24r[23;1H,,Y[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(^\|,\)\ze\(,\|Y\)/\1N/gc[?25l[23;1H[7m,[m
[32mreplace with \1N (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;1HN,,NY[?12l[?25h[?25l
:[?12l[?25h$put =',,Z'[?25l[1;23r[23;1H
[1;24r[23;1H,,Z[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/\(^\|,\)\ze\(,\|Z\)/\1N/gc[?25l[23;1H[7m,[m
[32mreplace with \1N (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;1HN,[7m,[mZ
[32mreplace with \1N (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;3H,NZ[?12l[?25h[?25l
/[?12l[?25h^TEST_9:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H: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:
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H6 lines, 82 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_9:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[1;1Ha
%
c
%


TEST_7:
A[34m^M[mA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='xxx'[?25l[1;23r[23;1H
[1;24r[23;1Hxxx[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hs/x/X/gc[?25l[23;1H[7mx[m
[32mreplace with X (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;1HX[7mx[m
[32mreplace with X (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;2HX[7mx[m
[32mreplace with X (y/n/a/q/l/^E/^Y)?[?12l[?25h[?25l[m[24;1H[K[24;1H[23;3Hx[?12l[?25h[?25l
/[?12l[?25h^TEST_10:[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1HTEST_9:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_9:\"
:$put ='xxx'
:s/x/X/gc
yyq/^TEST_10:
ENDTEST

TEST_10:

STARTTEST
:set magic&
:set cpo&
:$put =\"\n\nTEST_10:\"
:let y = substitute('123', '\zs', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')[12C| $put =y
:let y = substitute('123', '\ze', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')[12C| $put =y
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H12 lines, 584 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[4M[1;24r[20;1H:let y = substitute('123', '1\|\ze', 'a', 'g')[10C| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo&[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =\"\n\nTEST_10:\"[?25l3 more lines[24;13H[K[27m[m[H[2J[3;1HTEST_7:
A[34m^M[mA
B
B
['B
']B
-abab
c-cbcbc


TEST_8:
N,,NX
N,,NY
N,,NZ


TEST_9:
XXx


TEST_10:
3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet y = substitute('123', '\zs', 'a', 'g')             | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Ha1a2a3a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '\zs.', 'a', 'g')            | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Haaa[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '.\zs', 'a', 'g')            | $put =y[?25l[1;23r[23;1H
[1;24r[23;1H1a2a3a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '\ze', 'a', 'g')             | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Ha1a2a3a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '\ze.', 'a', 'g')            | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Ha1a2a3[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '.\ze', 'a', 'g')            | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Haaa[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '1\|\ze', 'a', 'g')          | $put =y[?25l[1;23r[23;1H
[1;24r[23;1Haa2a3a[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y[?25l[1;23r[23;1H
[1;24r[23;1H1aaa[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^TEST_11[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:let y = substitute('123', '\zs', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\zs.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\zs', 'a', 'g')[12C| $put =y
:let y = substitute('123', '\ze', 'a', 'g')[13C| $put =y
:let y = substitute('123', '\ze.', 'a', 'g')[12C| $put =y
:let y = substitute('123', '.\ze', 'a', 'g')[12C| $put =y
:let y = substitute('123', '1\|\ze', 'a', 'g')[10C| $put =y
:let y = substitute('123', '1\zs\|[23]', 'a', 'g')      | $put =y
/^TEST_11
ENDTEST

TEST_11:

STARTTEST
:/^Results/,$wq! test.out
ENDTEST

Results of test72:


TEST_1:
AA
&
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H1 line, 26 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[16;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^Results/,$wq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 131 lines, 617 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test81.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test81.in" 22 lines, 308 characters[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
[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for t movement command and 'cpo-;' setting[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 10 lines, 143 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo-=;[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hfirstline/[?25l[24;11H[K[24;1H[16;1H[?12l[?25h
aaa two[?25l[17;9H[K[17;7H[?12l[?25h[18;7H    z[?25l[18;6H[K[18;5H[?12l[?25h
yyy  [?25l[19;2H[K[19;1H[?12l[?25h
[15C[?25l[20;6H[K[20;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo+=;[?25l[20;5H[?12l[?25h
ccc ccc[?25l[21;5H[K[21;3H[?12l[?25h
dd[13C[?25l[22;10H[K[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h?firstline?+1,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 6L, 36C written[22;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test82.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test82.in" 103 lines, 3165 characters[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, aa[17;1H:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for case-insensitive UTF-8 comparisons (utf_strnicmp() in mbyte.c)[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 97 lines, 3054 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: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%.22[4;1HX', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ[6;1H\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ[8;1H\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg[34m^[[mgg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

[1m[34m~                                                                               [23;1H~                                                                               [20;1H[?12l[?25h
[?25l


[m:so! Xdotest[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has("multi_byte")[?25l
:  [?12l[?25h: e! test.ok
[?25l:  [?12l[?25h: w! test.out
[?25l:  [?12l[?25h: qa!
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H: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%.22[4;1HX', n)) | endfor[24;1H[K[21;1H[?12l[?25h[?25l


:[?12l[?25hset enc=utf8[?25l[27m[m[H[2J[1;1H: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%.22[4;1HX', n)) | endfor
:for n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ[6;1H\xc2\x%.2XuVw', n)) | endfor
:for n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('XyZZ[8;1H\xc2\x%.2XuVw', n)) | endfor
:call append(0, printf('%d checks passed', b:passed))
:"
:" test that g~ap changes one paragraph only.
:new
iabcd

defg[34m^[[mgg0g~ap:let lns = getline(1,3)
:q!
:call append(line('$'), lns)
:"
:wq! test.out
ENDTEST

[1m[34m~                                                                               [23;1H~                                                                               [21;1H[?12l[?25h[?25l[27m[m[H[2J[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, aa[17;1H:b, a:expected))
:  else
:    let b:passed += 1
:  endif
:endfunction
:
:function! Chk(a, b, result)[1;1H[?12l[?25h[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! Ch(a, op, b, expected)[?25l
:  [?12l[?25h:  if eval(printf('"%s" %s "%s"', a:a, a:op, a:b)) != a:expected
[?25l:    [?12l[?25h:    call append(line('$'), printf('"%s" %s "%s" should return %d', a:a, a
[23;80H:[24;1Hop, a:b, a:expected))
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    let b:passed += 1
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfunction[1;1H[7L[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! Chk(a, b, result)[?25l
:  [?12l[?25h:  if a:result == 0
[?25l:    [?12l[?25h:    call Ch(a:a, '==?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '!=?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '<=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '>=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '<?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '>?', a:b, 0)
[?25l:    [?12l[?25h:  elseif a:result > 0
[?25l:    [?12l[?25h:    call Ch(a:a, '==?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '!=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '<=?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '>=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '<?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '>?', a:b, 1)
[?25l:    [?12l[?25h:  else
[?25l:    [?12l[?25h:    call Ch(a:a, '==?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '!=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '<=?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '>=?', a:b, 0)
[?25l:    [?12l[?25h:    call Ch(a:a, '<?', a:b, 1)
[?25l:    [?12l[?25h:    call Ch(a:a, '>?', a:b, 0)
[?25l:    [?12l[?25h:  endif
[?25l:  [?12l[?25h:endfunction[27m[m[H[2J[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! Check(a, b, result)[?25l
:  [?12l[?25h:  call Chk(a:a, a:b, a:result)
[?25l:  [?12l[?25h:  call Chk(a:b, a:a, -a:result)
[?25l:  [?12l[?25h:endfunction[1;1H[3L[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! LT(a, b)[?25l
:  [?12l[?25h:  call Check(a:a, a:b, -1)
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[2;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! GT(a, b)[?25l
:  [?12l[?25h:  call Check(a:a, a:b, 1)
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[2;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! EQ(a, b)[?25l
:  [?12l[?25h:  call Check(a:a, a:b, 0)
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[2;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet b:passed=0[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('', '')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('', 'a')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('abc', 'abc')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('Abc', 'abC')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('ab', 'abc')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('AB', 'abc')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('ab', 'aBc')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xb9\xd0\xa6\
[23;80Hx[24;1Hd0\xa3\xd0\xba\xd0\x95\xd0\xbd')[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall LT('\xd0\xb9\xd1\x86\xd1\x83\xd0\xba\xd0\xb5\xd0\xbd', '\xd0\xaf\xd1\x86\
[23;80Hx[24;1Hd1\x83\xd0\xba\xd0\xb5\xd0\xbd')[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall EQ('\xe2\x84\xaa', 'k')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('\xe2\x84\xaa', 'kkkkkk')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa', 'kkk')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('kk', '\xe2\x84\xaa\xe2\x84\xaa\xe2\x84\xaa')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('\xe2\x84\xaa\xe2\x84\xa6k\xe2\x84\xaak\xcf\x89', 'k\xcf\x89\xe2\x84\x
[23;80Ha[24;1Hakk\xe2\x84\xa6')[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall EQ('Abc\x80', 'AbC\x80')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('Abc\x80', 'AbC\x81')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('Abc', 'AbC\x80')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall LT('abc\x80DEF', 'abc\x80def')  " case folding stops at the first bad cha
[23;80Hr[24;1Hacter[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall LT('\xc3XYZ', '\xc3xyz')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('\xef\xbc\xba', '\xef\xbd\x9a')  " FF3A (upper), FF5A (lower)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall GT('\xef\xbc\xba', '\xef\xbc\xff')  " first string is ok and equals \xef\
[23;80Hx[24;1Hbd\x9a after folding, second string is illegal and was left unchanged, then the
strings were bytewise compared[?25l[1;1H[2L[2;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall LT('\xc3', '\xc3\x83')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall EQ('\xc3\xa3xYz', '\xc3\x83XyZ')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor n in range(0x60, 0xFF) | call LT(printf('xYz\x%.2X', n-1), printf('XyZ\x%.
[23;80H2[24;1HX', n)) | endfor[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfor n in range(0x80, 0xBF) | call EQ(printf('xYz\xc2\x%.2XUvW', n), printf('Xy
[23;80HZ[24;1H\xc2\x%.2XuVw', n)) | endfor[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfor n in range(0xC0, 0xFF) | call LT(printf('xYz\xc2\x%.2XUvW', n), printf('Xy
[23;80HZ[24;1H\xc2\x%.2XuVw', n)) | endfor[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall append(0, printf('%d checks passed', b:passed))[?25l[1;23r[1;1H[L[1;24r[1;1H3732 checks passed[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test that g~ap changes one paragraph only.[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1H3732 checks passed[13;19H[K[14;1H[K[23;1H[7mtest82.in [+]                                                                   [1;1H[?12l[?25h[?25l[mabcd[2;1H[K[3;1Hdefg[3;5H[K[12;11H[1m[7m[+][3;4H[?12l[?25h[1;1H[?25l[mABCD[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet lns = getline(1,3)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[1;1H3732 checks passed

[1m[34m~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), lns)[?25l[3;1HABCD[3;5H[K[4;1H[K[5;1Hdefg[5;5H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 5 lines, 31 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test83.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test83.in" 76 lines, 1265 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for tag search with !_TAG_FILE_ENCODING.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 58 lines, 1013 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case3: failed'
:else
: close
: put ='case3: ok'
:endif
:close

:wq! test.out
ENDTEST

text for tags1
abcdefghijklmnopqrs

text for tags2
ï¼¡ï¼¢ï¼£

text for tags3
ï¼¡ï¼¢ï¼£

tags1[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset enc=utf8[?25l[27m[m[H[2J[1;1H:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case3: failed'
:else
: close
: put ='case3: ok'
:endif
:close

:wq! test.out
ENDTEST

text for tags1
abcdefghijklmnopqrs

text for tags2
ï¼¡ï¼¢ï¼£

text for tags3
ï¼¡ï¼¢ï¼£

tags1[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hif !has('iconv') || iconv("\x82\x60", "cp932", "utf-8") != "\uff21"[?25l
:  [?12l[?25h: e! test.ok
[?25l:  [?12l[?25h: w! test.out
[?25l:  [?12l[?25h: qa!
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:tag abc50
:if v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'
: close
: put ='case3: failed'[24;1H[K[13;1H[?12l[?25h
[?25l[24;1H:[?12l[?25h/^text for tags1$/,/^text for tags1$/+1w! Xtags1.txt[?25l[31msearch hit BOTTOM, continuing at TOP[m[24;37H[K[24;1H"Xtags1.txt" [24;14H[K[24;14H[New File] 2 lines, 35 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^text for tags2$/,/^text for tags2$/+1w! Xtags2.txt[?25l"Xtags2.txt" [24;14H[K[24;14H[New File] 2 lines, 25 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^text for tags3$/,/^text for tags3$/+1w! Xtags3.txt[?25l"Xtags3.txt" [24;14H[K[24;14H[New File] 2 lines, 25 characters written[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^tags1$/+1,/^tags1-end$/-1w! Xtags1[?25l"Xtags1" [24;10H[K[24;10H[New File] 2 lines, 81 characters written[14;1H[?12l[?25h
[?25l[27m[m[H[2J[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[1;1H[?12l[?25h[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall setline('.', 'Results of test83')[?25l[1;1HResults of test83[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" case1:[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[12;1H[1m[7m[No Name]                                                                       [m[13;1HResults of test83[13;18H[K[23;1H[7mtest83.in [+]                                                                   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset tags=Xtags1[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:errmsg = ''[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htag abcdefghijklmnopqrs[?25l"Xtags1.txt" [24;14H[K[24;14H2 lines, 35 characters[1;1Htext for tags1
abcdefghijklmnopqrs[2;20H[K[12;1H[1m[7mXtags1.txt[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hif v:errmsg =~ 'E426:' || getline('.') != 'abcdefghijklmnopqrs'[?25l
:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case1: failed'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case1: ok'
[?25l:  [?12l[?25h:endif[1;1H[6L[?25l[1;1HResults of test83
case1: ok
[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[2;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" case2:[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1HResults of test83[13;18H[K[14;1Hcase1: ok[14;10H[K[23;1H[7mtest83.in [+]                                                                   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset tags=test83-tags2[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:errmsg = ''[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htag /.ï¼¢ï¼£[?25l"Xtags2.txt" 2 lines, 25 characters[1;1Htext for tags2
ï¼¡ï¼¢ï¼£[2;7H[K[12;1H[1m[7mXtags2.txt[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hif v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'[?25l
:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case2: failed'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case2: ok'
[?25l:  [?12l[?25h:endif[1;1H[6L[?25l[1;1HResults of test83
case1: ok
case2: ok
[1m[34m~                                                                               [5;1H~                                                                               [6;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[3;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" case3:[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;1Hcase1: ok[13;10H[K[14;1Hcase2: ok[14;10H[K[23;1H[7mtest83.in [+]                                                                   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset tags=test83-tags3[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:errmsg = ''[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htag abc50[?25l"Xtags3.txt" 2 lines, 25 characters[1;1Htext for tags3
ï¼¡ï¼¢ï¼£[2;7H[K[12;1H[1m[7mXtags3.txt[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hif v:errmsg =~ 'E426:' || getline('.') != 'ï¼¡ï¼¢ï¼£'[?25l
:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case3: failed'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: close
[?25l:  [?12l[?25h: put ='case3: ok'
[?25l:  [?12l[?25h:endif[1;1H[6L[?25l[1;1HResults of test83
case1: ok
case2: ok
case3: ok
[1m[34m~                                                                               [6;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25hclose[?25l[1m[37m[41mE37: No write since last change (add ! to override)[4;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwq! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 4 lines, 48 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test84.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test84.in" 35 lines, 786 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for curswant not changing when setting an option[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 25 lines, 637 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[6M[1;24r[18;1H:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _
:write test.out
:
:qall!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start target options$/+1,/^end target options$/-1 yank[?25l3 lines yanked[24;15H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet target_option_names = split(@0)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction TestCurswant(option_name)[?25l
:  [?12l[?25h:  normal! ggf8j
[?25l:  [?12l[?25h:  let curswant_before = winsaveview().curswant
[?25l:  [?12l[?25h:  execute 'let' '&'.a:option_name '=' '&'.a:option_name
[?25l:  [?12l[?25h:  let curswant_after = winsaveview().curswant
[?25l:  [?12l[?25h:  return [a:option_name, curswant_before, curswant_after]
[?25l:  [?12l[?25h:endfunction[1;1H[6L[?25l[1;1H:  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[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;2Hendfor[13;9H[K[14;2H[K[15;2Hnew
:put =map(copy(result), 'join(v:val, '' '')')
:1 delete _[17;12H[K[18;2Hwrite test.out[19;2H[K[20;2Hqall!
ENDTEST[22;1H[K[23;1H[7mtest84.in                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput =['1234567890', '12345'][?25l[2;1H1234567890[2;11H[K[3;1H12345[3;6H[K[12;11H[1m[7m[+][3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1 delete _[?25l[1;11r[11;1H
[1;24r[11;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet result = [][?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor option_name in target_option_names[?25l
:  [?12l[?25h:  call add(result, TestCurswant(option_name))
[?25l:  [?12l[?25h:endfor[1;1H[2L[?25l[1;1H1234567890
12345[24;1H[K[2;5H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[8;1H[1m[7m[No Name]                                                                       [m[9;1H1234567890
12345
[1m[34m~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [m[16;1H[7m[No Name] [+]                                                                   [m[17;1H:1 delete _
:write test.out
:
:qall!
ENDTEST

[7mtest84.in                                                                       [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hput =map(copy(result), 'join(v:val, '' '')')[?25l3 more lines[24;13H[K[2;1Htabstop 7 4[2;12H[K[3;1Htimeoutlen 7 7[3;15H[K[4;1Httimeoutlen 7 7[4;16H[K[8;11H[1m[7m[+][4;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1 delete _[?25l[1;7r[7;1H
[1;24r[7;1H[1m[34m~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hwrite test.out[?25l"test.out" [24;12H[K[24;12H[New File] 3 lines, 43 characters written[8;1H[1m[7mtest.out]      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqall![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test85.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test85.in" 85 lines, 1868 characters[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)[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for Lua interface and luaeval() function[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 77 lines, 1775 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:lua d = vim.eval("d")
:lua d[0] = 123
:lua d[1] = "abc"
:lua d[2] = vim.eval("[1, 2, 3]")
:lua d[3] = vim.eval("{'a':1, 'b':2, 'c':3}")
:lua d[4] = d[0]
:lua d[5] = d[1]
:lua d[6] = d[2]
:lua d[7] = d[3]
:lua d[3] = nil
:lua d[2] = nil
:lua d[1] = nil
:lua d[0] = nil
:lua d = nil
:$put =string(d)

:?^1?,$w! test.out
:qa!
ENDTEST

1 line 1
2 line 2
3 line 3[19;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso lua.vim[?25l"test.ok" [24;11H[K[24;11H7 lines, 206 characters
"test.out" [New File] 7 lines, 206 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test86.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test86.in" 1430 lines, 37971 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for various python features.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[8;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 1419 lines, 37678 characters written[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[9;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:   endif
:   call Test()
:   if i == 0
:[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:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=latin1[?25l[27m[m[H[2J[1;1H:   endif
:   call Test()
:   if i == 0
:[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:[22;1H[?12l[?25h[?25l

:[?12l[?25hset noswapfile[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('python') | e! test.ok | wq! test.out | endif[?25l"test.ok" [24;11H[K[24;11H1266 lines, 58913 characters
"test.out" [New File] 1266 lines, 58913 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test87.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test87.in" 1407 lines, 37468 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for various python features.     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 1401 lines, 37384 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:   endif
:   call Test()
:   if i == 0
:[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:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noswapfile[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('python3') | e! test.ok | wq! test.out | endif[?25l"test.ok" [24;11H[K[24;11H1266 lines, 69116 characters
"test.out" [New File] 1266 lines, 69116 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test88.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test88.in" 88 lines, 1352 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1Hvim: set ft=vim[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 71 lines, 1119 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1HGGk
:normal W
GGk
:normal $
GGk
:set lbr
:normal $
GGk
:" Display result.
:call append('$', 'end:')
:call append('$', positions)
:/^end/,$wq! test.out
ENDTEST

start:
.concealed.     text
|concealed|     text[19;9H.concealed.     text[20;9H|concealed|     text

.a.     .b.     .c.     .d.
|a|     |b|     |c|     |d|[13;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('conceal')[?25l
:  [?12l[?25h   e! test.ok
[?25l"test.ok" 24 lines, 112 characters
:  [?12l[?25h   wq! test.out
[?25l"test.out" [New File] 24 lines, 112 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test89.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test89.in" 71 lines, 1514 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1H- Some tests for setting 'number' and 'relativenumber'[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 63 lines, 1305 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$put =':set MUST reset the other global value'
:$put g
:$put h
:"
:let cwd=getcwd()
:cd ..
:" Tests may be run from a shadow directory, so an extra cd needs to be done to
:" get above src/
:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
:$put =''
:$put ='Testing findfile'
:$put =''
:set ssl
:$put =findfile('test19.in','src/test*')
:exe "cd" cwd
:cd ..
:$put =findfile('test19.in','test*')
:$put =findfile('test19.in','testdir')
:exe "cd" cwd
:/^results/,$w! test.out
:q!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hidden nocp nu rnu viminfo+=nviminfo[?25l[1;1H[33m 21 [m:$put g[1;12H[K[2;1H[33m 20 [m:$put h
[33m 19 [m:"[3;7H[K[4;1H[33m 18 [m:let cwd=getcwd()
[33m 17 [m:cd ..[5;11H[K[6;1H[33m 16 [m:" Tests may be run from a shadow directory, so an extra cd needs to be donee[7;1H[33m    [m to[7;8H[K[8;1H[33m 15 [m:" get above src/
[33m 14 [m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
[33m 13 [m:$put =''
[33m 12 [m:$put ='Testing findfile'
[33m 11 [m:$put =''
[33m 10 [m:set ssl
[33m  9 [m:$put =findfile('test19.in','src/test*')
[33m  8 [m:exe "cd" cwd
[33m  7 [m:cd ..
[33m  6 [m:$put =findfile('test19.in','test*')
[33m  5 [m:$put =findfile('test19.in','testdir')
[33m  4 [m:exe "cd" cwd
[33m  3 [m:/^results/,$w! test.out
[33m  2 [m:q!
[33m  1 [mENDTEST
[33m71  [?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hredir @a | set nu? rnu? | redir END[?25l[24;1H[K[24;1H  number
  relativenumber
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he! xx[?25l"xx" [New File][1;1H[2L[1;1H[33m1   [m
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;3H[K[1;5H[?12l[?25h[?25l[24;1H:[?12l[?25hredir @b | set nu? rnu? | redir END[?25l[24;1H[K[24;1H  number
  relativenumber
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25he! #[?25l"test89.in" line 71 of 71 --100%-- col 1[1;1H[2L[1;1H[33m 21 [m:$put g
[33m 20 [m:$put h
[33m 19 [m:"[3;7H[K[4;1H[33m 18 [m:let cwd=getcwd()[4;22H[K[5;1H[33m 17 [m:cd ..[5;11H[K[6;1H[33m 16 [m:" Tests may be run from a shadow directory, so an extra cd needs to be donee[7;1H[33m    [m to[7;8H[K[8;1H[33m 15 [m:" get above src/[8;22H[K[9;1H[33m 14 [m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif[9;79H[K[10;1H[33m 13 [m:$put =''[10;14H[K[11;1H[33m 12 [m:$put ='Testing findfile'[11;30H[K[12;1H[33m 11 [m:$put =''[12;14H[K[13;1H[33m 10 [m:set ssl[13;13H[K[14;1H[33m  9 [m:$put =findfile('test19.in','src/test*')[14;45H[K[15;1H[33m  8 [m:exe "cd" cwd[15;18H[K[16;1H[33m  7 [m:cd ..[16;11H[K[17;1H[33m  6 [m:$put =findfile('test19.in','test*')[17;41H[K[18;1H[33m  5 [m:$put =findfile('test19.in','testdir')[18;43H[K[19;1H[33m  4 [m:exe "cd" cwd[19;18H[K[20;1H[33m  3 [m:/^results/,$w! test.out[20;29H[K[21;1H[33m  2 [m:q![21;8H[K[22;1H[33m  1 [mENDTEST[22;12H[K[23;1H[33m71  [m[23;5H[K[24;3H[K[24;1H"test89.in" line 71 of 71 --100%-- col 1[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='results:'[?25l[1;23r[23;1H
[1;24r[1;3H[33m1
 20
 19
 18
 17[m[76Cee[6;1H[33m 
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
72  [mresults:[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put a[?25l3 more lines[1;23r[1;1H[3M[1;24r[1;2H[33m21
 20[m[76Cee[3;1H[33m 
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 [m  number
[33m75  [m  relativenumber[24;1H[K[24;1H3 more lines[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put b[?25l3 more lines[1;23r[1;1H[3M[1;24r[1;2H[33m22
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2 
  1 [m  number
[33m78  [m  relativenumber[24;1H[K[24;1H3 more lines[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nonu nornu[?25l[1;1H:" get above src/[1;18H[K[2;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif[2;75H[K[3;1H:$put =''[3;11H[K[4;1H:$put ='Testing findfile'[4;26H[K[5;1H:$put =''[5;11H[K[6;1H:set ssl[6;10H[K[7;1H:$put =findfile('test19.in','src/test*')[7;41H[K[8;1H:exe "cd" cwd[8;15H[K[9;1H:cd ..[9;7H[K[10;1H:$put =findfile('test19.in','test*')[10;37H[K[11;1H:$put =findfile('test19.in','testdir')[11;39H[K[12;1H:exe "cd" cwd[12;15H[K[13;1H:/^results/,$w! test.ou[13;25H[K[14;1H:q![14;4H[K[15;1HENDTEST[15;8H[K[16;1H[K[17;1Hresults:[17;9H[K[18;1H[K[19;1H  number[19;9H[K[20;1H  relativenumber[20;17H[K[21;1H[K[22;1H  number[22;9H[K[23;1H  relativenumber[23;17H[K[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal nu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetlocal rnu[?25l[1;1H[33m 22 [m:" get above src/
[33m 21 [m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
[33m 20 [m:$put =''
[33m 19 [m:$put ='Testing findfile'
[33m 18 [m:$put =''
[33m 17 [m:set ssl
[33m 16 [m:$put =findfile('test19.in','src/test*')
[33m 15 [m:exe "cd" cwd
[33m 14 [m:cd ..
[33m 13 [m:$put =findfile('test19.in','test*')
[33m 12 [m:$put =findfile('test19.in','testdir')
[33m 11 [m:exe "cd" cwd
[33m 10 [m:/^results/,$w! test.out
[33m  9 [m:q!
[33m  8 [mENDTEST
[33m  7 
  6 [mresults:
[33m  5 
  4 [m  number
[33m  3 [m  relativenumber
[33m  2 
  1 [m  number
[33m  0 [m  relativenumber[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @c | setglobal nu? | redir END[?25l[24;1H[K[24;1H  number[23;7H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25hset nonu nornu[?25l[1;1H:" get above src/[1;18H[K[2;1H:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif[2;75H[K[3;1H:$put =''[3;11H[K[4;1H:$put ='Testing findfile'[4;26H[K[5;1H:$put =''[5;11H[K[6;1H:set ssl[6;10H[K[7;1H:$put =findfile('test19.in','src/test*')[7;41H[K[8;1H:exe "cd" cwd[8;15H[K[9;1H:cd ..[9;7H[K[10;1H:$put =findfile('test19.in','test*')[10;37H[K[11;1H:$put =findfile('test19.in','testdir')[11;39H[K[12;1H:exe "cd" cwd[12;15H[K[13;1H:/^results/,$w! test.ou[13;25H[K[14;1H:q![14;4H[K[15;1HENDTEST[15;8H[K[16;1H[K[17;1Hresults:[17;9H[K[18;1H[K[19;1H  number[19;9H[K[20;1H  relativenumber[20;17H[K[21;1H[K[22;1H  number[22;9H[K[23;1H  relativenumber[23;17H[K[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal rnu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetlocal nu[?25l[1;1H[33m 56 [m:" get above src/
[33m 57 [m:if fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif
[33m 58 [m:$put =''
[33m 59 [m:$put ='Testing findfile'
[33m 60 [m:$put =''
[33m 61 [m:set ssl
[33m 62 [m:$put =findfile('test19.in','src/test*')
[33m 63 [m:exe "cd" cwd
[33m 64 [m:cd ..
[33m 65 [m:$put =findfile('test19.in','test*')
[33m 66 [m:$put =findfile('test19.in','testdir')
[33m 67 [m:exe "cd" cwd
[33m 68 [m:/^results/,$w! test.out
[33m 69 [m:q!
[33m 70 [mENDTEST
[33m 71 
 72 [mresults:
[33m 73 
 74 [m  number
[33m 75 [m  relativenumber
[33m 76 
 77 [m  number
[33m 78 [m  relativenumber[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @d | setglobal rnu? | redir END[?25l[24;1H[K[24;1H  relativenumber[23;7H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25h$put =':setlocal must NOT reset the other global value'[?25l[1;23r[23;1H
[1;24r[23;1H[33m 79 [m:setlocal must NOT reset the other global value[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put c[?25l[1;23r[1;1H[2M[1;24r[22;1H[33m 80 
 81 [m  number[24;1H[K[23;7H[?12l[?25h[?25l
:[?12l[?25h$put d[?25l[1;23r[1;1H[2M[1;24r[22;1H[33m 82 
 83 [m  relativenumber[24;1H[K[23;7H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nonu nornu[?25l[1;1H:set ssl[1;10H[K[2;1H:$put =findfile('test19.in','src/test*')[2;41H[K[3;1H:exe "cd" cwd[3;15H[K[4;1H:cd ..[4;7H[K[5;1H:$put =findfile('test19.in','test*')[5;37H[K[6;1H:$put =findfile('test19.in','testdir')[6;39H[K[7;1H:exe "cd" cwd[7;15H[K[8;1H:/^results/,$w! test.ou[8;25H[K[9;1H:q![9;4H[K[10;1HENDTEST[10;8H[K[11;1H[K[12;1Hresults:[12;9H[K[13;1H[K[14;1H  number[14;9H[K[15;1H  relativenumber[15;17H[K[16;1H[K[17;1H  number[17;9H[K[18;1H  relativenumber[18;17H[K[19;1H:setlocal must NOT reset the other global value[19;48H[K[20;1H[K[21;1H  number[21;9H[K[22;1H[K[23;1H  relativenumber[23;17H[K[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal nu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal rnu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @e | setglobal nu? | redir END[?25l[24;1H[K[24;1H  number[23;3H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25hset nonu nornu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal rnu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal nu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @f | setglobal rnu? | redir END[?25l[24;1H[K[24;1H  relativenumber[23;3H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25h$put =':setglobal MUST reset the other global value'[?25l[1;23r[23;1H
[1;24r[23;1H:setglobal MUST reset the other global value[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put e[?25l[1;23r[1;1H[2M[1;24r[23;3Hnumber[24;1H[K[23;3H[?12l[?25h[?25l
:[?12l[?25h$put f[?25l[1;23r[1;1H[2M[1;24r[23;3Hrelativenumber[24;1H[K[23;3H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nonu nornu[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nu[?25l[1;1H[33m 66 [m:$put =findfile('test19.in','testdir')
[33m 67 [m:exe "cd" cwd
[33m 68 [m:/^results/,$w! test.out
[33m 69 [m:q!
[33m 70 [mENDTEST
[33m 71 
 72 [mresults:
[33m 73 
 74 [m  number
[33m 75 [m  relativenumber
[33m 76 
 77 [m  number
[33m 78 [m  relativenumber
[33m 79 [m:setlocal must NOT reset the other global value
[33m 80 
 81 [m  number
[33m 82 
 83 [m  relativenumber
[33m 84 [m:setglobal MUST reset the other global value
[33m 85 
 86 [m  number
[33m 87 
 88 [m  relativenumber[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset rnu[?25l[1;2H[33m22
 21
 20
 1
 18
 17
 16
 15
 1
 13
 12
 11
 10
  
  8
  7
  6
  5
  
  3
  2
  1
88  [m  [?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @g | setglobal nu? | redir END[?25l[24;1H[K[24;1H  number[23;7H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25hset nonu nornu[?25l[1;1H:$put =findfile('test19.in','testdir')[1;39H[K[2;1H:exe "cd" cwd[2;15H[K[3;1H:/^results/,$w! test.ou[3;25H[K[4;1H:q![4;4H[K[5;1HENDTEST[5;8H[K[6;1H[K[7;1Hresults:[7;9H[K[8;1H[K[9;1H  number[9;9H[K[10;1H  relativenumber[10;17H[K[11;1H[K[12;1H  number[12;9H[K[13;1H  relativenumber[13;17H[K[14;1H:setlocal must NOT reset the other global value[14;48H[K[15;1H[K[16;1H  number[16;9H[K[17;1H[K[18;1H  relativenumber[18;17H[K[19;1H:setglobal MUST reset the other global value[19;45H[K[20;1H[K[21;1H  number[21;9H[K[22;1H[K[23;1H  relativenumber[23;17H[K[23;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset rnu[?25l[1;1H[33m 22 [m:$put =findfile('test19.in','testdir')
[33m 21 [m:exe "cd" cwd
[33m 20 [m:/^results/,$w! test.out
[33m 19 [m:q!
[33m 18 [mENDTEST
[33m 17 
 16 [mresults:
[33m 15 
 14 [m  number
[33m 13 [m  relativenumber
[33m 12 
 11 [m  number
[33m 10 [m  relativenumber
[33m  9 [m:setlocal must NOT reset the other global value
[33m  8 
  7 [m  number
[33m  6 
  5 [m  relativenumber
[33m  4 [m:setglobal MUST reset the other global value
[33m  3 
  2 [m  number
[33m  1 
  0 [m  relativenumber[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nu[?25l[23;1H[33m88  [m  [?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir @h | setglobal rnu? | redir END[?25l[24;1H[K[24;1H  relativenumber[23;7H[?12l[?25h[?25l[24;3H[K[24;1H:[?12l[?25h$put =':set MUST reset the other global value'[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
89  [m:set MUST reset the other global value[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put g[?25l[1;23r[1;1H[2M[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
91  [m  number[24;1H[K[23;7H[?12l[?25h[?25l
:[?12l[?25h$put h[?25l[1;23r[1;1H[2M[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1 
93  [m  relativenumber[24;1H[K[23;7H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet cwd=getcwd()[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Tests may be run from a shadow directory, so an extra cd needs to be done to[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" get above src/[?25l[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif fnamemodify(getcwd(), ':t') != 'src' | cd ../.. | else | cd .. | endif[?25l/sources/vim74[24;15H[K[23;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =''[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
94  [m[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put ='Testing findfile'[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
95  [mTesting findfile[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put =''[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
96  [m[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25hset ssl[?25l[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =findfile('test19.in','src/test*')[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
97  [msrc/testdir/test19.in[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25hexe "cd" cwd[?25l/sources/vim74/src/testdir[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcd ..[?25l/sources/vim74/src[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =findfile('test19.in','test*')[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
98  [mtestdir/test19.in[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25h$put =findfile('test19.in','testdir')[?25l[1;23r[23;1H
[1;24r[1;3H[33m2
 21
 20
 19
 18
 17
 16
 15
 14
 13
 12
 11
 10
  9
  8
  7
  6
  5
  4
  3
  2
  1
99  [mtestdir/test19.in[24;1H[K[23;5H[?12l[?25h[?25l
:[?12l[?25hexe "cd" cwd[?25l/sources/vim74/src/testdir[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^results/,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New] 28L, 356C written[23;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test90.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test90.in" 53 lines, 1203 characters[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("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b78522[12;1Hb855'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
:"
:let testcase='test for 1 char: '
:if sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee[21;1He48bb'
: let res='ok'
:else[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for sha256() function.    vim: set ft=vim et ts=2 sw=2 :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 47 lines, 1113 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc[4;1H39ed110ca776'
: 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") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb00[13;1Hb8d27db8d5feaa813953'
: let res='ok'
:else
: let res='ng'
:endif
:$put =testcase.res
"
:/^start:/,$wq! test.out
ENDTEST

start:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('cryptv') || !exists('*sha256')[?25l
:  [?12l[?25h   e! test.ok
[?25l:  [?12l[?25h   wq! test.out
[?25l:  [?12l[?25h:endif[1;1H[3L[?25l[1;1H:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc[4;1H3[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet testcase='test for empty string: '[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif sha256("") ==# 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b785
[23;80H2[24;1Hb855'[?25l[24;1H[K[24;1H:  [?12l[?25h: let res='ok'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let res='ng'
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:"
:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc[4;1H39ed110ca776'[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h$put =testcase.res[?25l[1;23r[23;1H
[1;24r[23;1Htest for empty string: ok[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet testcase='test for 1 char: '[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif sha256("a") ==# 'ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785af
[23;80He[24;1He48bb'[?25l[24;1H[K[24;1H:  [?12l[?25h: let res='ok'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let res='ng'
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:let testcase='test for contains meta char: '
:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc[3;1H39ed110ca776'
: let res='ok'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =testcase.res[?25l[1;23r[23;1H
[1;24r[23;1Htest for 1 char: ok[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet testcase='test for 3 chars: '[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif sha256("abc") ==# 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61
[23;80Hf[24;1H20015ad'[?25l[24;1H[K[24;1H:  [?12l[?25h: let res='ok'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let res='ng'
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H:if sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8ccc[2;1H39ed110ca776'
: let res='ok'
:else[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =testcase.res[?25l[1;23r[1;1H[2M[1;24r[22;1Htest for 3 chars: ok
[1m[34m~                                                                               [m[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet testcase='test for contains meta char: '[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif sha256("foo\nbar") ==# '807eff6267f3f926a21d234f7b0cf867a86f47e07a532f15e8c
[23;80Hc[24;1H39ed110ca776'[?25l[24;1H[K[24;1H:  [?12l[?25h: let res='ok'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let res='ng'
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H: let res='ok'
:else
: let res='ng'
:endif[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h$put =testcase.res[?25l[23;1Htest for contains meta char: ok[23;32H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet testcase='test for contains non-ascii char: '[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif sha256("\xde\xad\xbe\xef") ==# '5f78c33274e43fa9de5659265c1d917e25c03722dcb
[23;80H0[24;1Hb8d27db8d5feaa813953'[?25l[24;1H[K[24;1H:  [?12l[?25h: let res='ok'
[?25l:  [?12l[?25h:else
[?25l:  [?12l[?25h: let res='ng'
[?25l:  [?12l[?25h:endif[1;1H[4L[?25l[1;1H: let res='ok'
:else
: let res='ng'
:endif[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =testcase.res[?25l[1;23r[23;1H
[1;24r[23;1Htest for contains non-ascii char: ok[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^start:/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 6 lines, 143 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test91.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test91.in" 111 lines, 3044 characters[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'))[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar().[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 104 lines, 2931 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:$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:[21;1H[?12l[?25h
[?25l

:so! Xdotest[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test for getbufvar()[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Use strings to test for memory leaks.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet b:var_num = '1234'[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet def_num = '5678'[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(getbufvar(1, 'var_num'))[?25l[1;23r[23;1H
[1;24r[23;1H'1234'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, 'var_num', def_num))[?25l[1;23r[23;1H
[1;24r[23;1H'1234'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, ''))[?25l[1;23r[23;1H
[1;24r[23;1H{'var_num': '1234'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, '', def_num))[?25l[1;23r[23;1H
[1;24r[23;1H{'var_num': '1234'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet b:var_num[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(getbufvar(1, 'var_num', def_num))[?25l[1;23r[23;1H
[1;24r[23;1H'5678'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, ''))[?25l[1;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, '', def_num))[?25l[1;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(9, ''))[?25l[1;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(9, '', def_num))[?25l[1;23r[23;1H
[1;24r[23;1H'5678'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet def_num[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(getbufvar(1, '&autoindent'))[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getbufvar(1, '&autoindent', 1))[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Open new window with forced option values[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset fileformats=unix,dos[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew ++ff=dos ++bin ++enc=iso-8859-2[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[14;1H{'var_num': '1234'}

'5678'[16;7H[K[17;1H{}[17;3H[K[19;1H''
'5678'
0[21;2H[K[23;1H[7mtest91.in [+]                                                                   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet otherff = getbufvar(bufnr('%'), '&fileformat')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet otherbin = getbufvar(bufnr('%'), '&bin')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet otherfenc = getbufvar(bufnr('%'), '&fenc')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hclose[?25l[1;1H:$put =string(gettabwinvar(2, 9, '', def_dict))
:$put =string(gettabwinvar(9, 3, ''))[2;38H[K[3;1H:$put =string(gettabwinvar(9, 3, '', def_dict))[3;48H[K[4;1H:unlet def_dict[4;16H[K[5;1H:$put =string(gettabwinvar(2, 3, '&nux'))[5;42H[K[6;1H:$put =string(gettabwinvar(2, 3, '&nux', 1))[6;45H[K[7;1H:tabonly[7;9H[K[8;1H:"[8;3H[K[9;1H:/^start/,$wq! test.out[9;24H[K[10;1HENDTEST[10;8H[K[11;1H[K[12;1Hstart:[12;7H[K[14;1H'1234'[14;7H[K[16;1H{'var_num': '1234'}
'5678'

{}
''[20;3H[K[21;1H'5678'

0[23;2H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =otherff[?25l[1;23r[23;1H
[1;24r[23;1Hdos[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(otherbin)[?25l[1;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =otherfenc[?25l[1;23r[23;1H
[1;24r[23;1Hiso-8859-2[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet otherff otherbin otherfenc[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for getwinvar()[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet w:var_str = "Dance"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet def_str = "Chance"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(getwinvar(1, 'var_str'))[?25l[1;23r[23;1H
[1;24r[23;1H'Dance'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, 'var_str', def_str))[?25l[1;23r[23;1H
[1;24r[23;1H'Dance'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, ''))[?25l[1;23r[23;1H
[1;24r[23;1H{'var_str': 'Dance'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, '', def_str))[?25l[1;23r[23;1H
[1;24r[23;1H{'var_str': 'Dance'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet w:var_str[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(getwinvar(1, 'var_str', def_str))[?25l[1;23r[23;1H
[1;24r[23;1H'Chance'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, ''))[?25l[1;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, '', def_str))[?25l[1;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(9, ''))[?25l[1;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(9, '', def_str))[?25l[1;23r[23;1H
[1;24r[23;1H'Chance'[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, '&nu'))[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(getwinvar(1, '&nu',  1))[?25l[1;23r[23;1H
[1;24r[23;1H0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet def_str[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for gettabvar()[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in [m[1m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in  [No Name] [m[1m [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet t:var_list = [1, 2, 3][?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet def_list = [4, 5, 6, 7][?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabrewind[?25l[27m[m[H[2J[1;1H[1m + test91.in [m[4m[30m[47m [No Name]  [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[2;1H{'var_num': '1234'}
'5678'
{}
{}
''
'5678'
0
0
dos
1
iso-8859-2
'Dance'
'Dance'
{'var_str': 'Dance'}
{'var_str': 'Dance'}
'Chance'
{}
{}
''
'Chance'
0
0[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, 'var_list'))[?25l[2;23r[23;1H
[1;24r[23;1H[1, 2, 3][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, 'var_list', def_list))[?25l[2;23r[23;1H
[1;24r[23;1H[1, 2, 3][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, ''))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, '', def_list))[?25l[2;23r[23;1H
[1;24r[23;1H[4, 5, 6, 7][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htablast[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in  [No Name] [m[1m [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hunlet t:var_list[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabrewind[?25l[27m[m[H[2J[1;1H[1m + test91.in [m[4m[30m[47m [No Name]  [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[2;1H''
'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][?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, 'var_list', def_list))[?25l[2;23r[23;1H
[1;24r[23;1H[4, 5, 6, 7][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(9, ''))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(9, '', def_list))[?25l[2;23r[23;1H
[1;24r[23;1H[4, 5, 6, 7][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, '&nu'))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabvar(3, '&nu', def_list))[?25l[2;23r[23;1H
[1;24r[23;1H[4, 5, 6, 7][24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet def_list[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabonly[?25l[1;1Hdos[1;4H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" test for gettabwinvar()[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in [m[1m [No Name] [m[7m                                                        [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabnew[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in  [No Name] [m[1m [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25htabprev[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in [m[1m [No Name] [m[4m[30m[47m [No Name] [m[7m                                             [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hsplit[?25l[1;15H[1m[35m2[m[1mN o[No Name] [m[4m[30m[47m [No Name] [m[42C[7m [m[1;80H[4m[30m[47mX[m[12;1H[1m[7m[No Name]                                                                       [m[13;1H[K[23;1H[7m[No Name]                                                                       [2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in [m[1m [m[1m[35m3[m[1m [No Name] [m[4m[30m[47m [No Name] [m[7m                                           [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[9;1H[1m[7m[No Name]                                                                       [m[11;1H[1m[34m~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [m[16;1H[7m[No Name]                                                                       [m[18;1H[1m[34m~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[7m[No Name]                                                                       [2;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hwincmd w[?25l[9;1H[7m[No Name][m[1m[7m [m[7m                                                                       [m[16;1H[1m[7m[No Name]                                                                       [m[1;80H[7m [m[1;80H[4m[30m[47mX[10;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hvert split[?25l[1;15H[1m[35m4[m[1m [m[63C[7m [m[1;80H[4m[30m[47mX[m[10;41H[7m|[11;41H|[12;41H|[13;41H|[14;41H|[15;41H|[m[11;42H[1m[34m~[12;42H~[13;42H~[14;42H~[15;42H~[m[16;42H[7m[No Name]                              [10;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd w[?25l[16;1H[7m[No Name][m[1m[7m [m[7m                                [m[1m[7m[No Name]                              [m[1;80H[7m [m[1;80H[4m[30m[47mX[10;42H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet w:var_dict = {'dict': 'tabwin'}[?25l[10;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet def_dict = {'dict2': 'newval'}[?25l[10;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd b[?25l[16;42H[7m[No Name][m[1m[7m [m[7m                              [m[23;1H[1m[7m[No Name]                                                                       [m[1;80H[7m [m[1;80H[4m[30m[47mX[17;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25htabrewind[?25l[27m[m[H[2J[1;1H[1m + test91.in [m[4m[30m[47m [m[4m[35m[47m4[m[4m[30m[47m [No Name]  [No Name] [m[7m                                           [m[1;80H[4m[30m[47mX[m[2;1H1
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][?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, 'var_dict'))[?25l[2;23r[23;1H
[1;24r[23;1H{'dict': 'tabwin'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{'dict': 'tabwin'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, ''))[?25l[2;23r[23;1H
[1;24r[23;1H{'var_dict': {'dict': 'tabwin'}}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, '', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{'var_dict': {'dict': 'tabwin'}}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabnext[?25l[27m[m[H[2J[1;1H[4m[30m[47m + test91.in [m[1m [m[1m[35m4[m[1m [No Name] [m[4m[30m[47m [No Name] [m[7m                                           [m[1;80H[4m[30m[47mX[m[3;1H[1m[34m~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [m[9;1H[7m[No Name]                                                                       [10;41H|[11;41H|[12;41H|[13;41H|[14;41H|[15;41H|[m[11;1H[1m[34m~                                       
~                                       
~                                       
~                                       
~                                       [m
[7m[No Name]                                [m[11;42H[1m[34m~                                      [12;42H~                                      [13;42H~                                      [14;42H~                                      [15;42H~                                      [m[16;42H[7m[No Name]                              [m[18;1H[1m[34m~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[1m[7m[No Name]                                                                       [17;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h3wincmd w[?25l[16;42H[1m[7m[No Name]                              [m[23;1H[7m[No Name][m[1m[7m [m[7m                                                                       [1;80H [m[1;80H[4m[30m[47mX[10;42H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hunlet w:var_dict[?25l[10;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htabrewind[?25l[27m[m[H[2J[1;1H[1m + test91.in [m[4m[30m[47m [m[4m[35m[47m4[m[4m[30m[47m [No Name]  [No Name] [m[7m                                           [m[1;80H[4m[30m[47mX[m[2;1H{'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'}}[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, 'var_dict', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{'dict2': 'newval'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, ''))[?25l[2;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, '', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 9, ''))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 9, '', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{'dict2': 'newval'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(9, 3, ''))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(9, 3, '', def_dict))[?25l[2;23r[23;1H
[1;24r[23;1H{'dict2': 'newval'}[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hunlet def_dict[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(gettabwinvar(2, 3, '&nux'))[?25l[2;23r[23;1H
[1;24r[23;1H''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put =string(gettabwinvar(2, 3, '&nux', 1))[?25l[2;23r[23;1H
[1;24r[23;1H1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25htabonly[?25l[1;1H0[1;2H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 48 lines, 456 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test92.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test92.in" 48 lines, 852 characters[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:[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1Hvim: set ft=vim fenc=utf-8:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 31 lines, 467 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracter[17;9Hone leaDing tab
    four leadinG spaces
two[13Cconsecutive tabs
two     tabs    in one line
one â[34m~@[m¦ multibyteCharacter
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte characters[13;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('mksession')[?25l
:  [?12l[?25h:  e! test.ok
[?25l:  [?12l[?25h:  wq! test.out
[?25l:  [?12l[?25h:endif[1;1H[3L[?25l[1;1Hj016|3zl:split
j016|3zl:split
j08|3zl:split[24;1H[K[14;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset sessionoptions=buffers splitbelow fileencoding=utf-8[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start:[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hvsplit[?25l[1;41H[7m|[m
j08|3zl:split [26C[7m|[3;41H|[m
j016|3zl:split[26C[7m|[5;41H|[6;41H|[m
:mksession! test.out[20C[7m|[m
:new test.out       [20C[7m|[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  [7m|[m
:w! test.out                            [7m|[m
:qa!        [28C[7m|[m
ENDTEST[33C[7m|[m
       [33C[7m|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m
        one leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two             consecutive tabs[8C[7m|[m[19;9Htabs    in one line     [8C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|[m[1m[34m@                                       [m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [14;1H[?12l[?25h
[15C[?25l[m[24;1H[K[24;1H:[?12l[?25hsplit[?25l[1;1H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
[7mtest92.in [+]                           [m
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:[10C                
no multibyte chAracter     
        one leaDing tab    
    four leadinG spaces               
two             consecutive tabs        [19;16H[?12l[?25h[20;16H[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1H:qa![36C[7m|[m
ENDTEST[33C[7m|[3;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[6;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
ENDTEST[33C[7m|[10;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[13;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
:w! test.out[28C[7m|[m
:qa![36C[7m|[m
ENDTEST[33C[7m|[19;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[22;9Hone leaDing tab[17C[7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [22;16H[?12l[?25h[?25l[m[16;1H:qa!                                    
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                            four leadinG spaces[22;16H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1HENDTEST[33C[7m|[2;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m
ENDTEST[33C[7m|[8;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[11;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[15;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[20;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [21;16H[?12l[?25h[22;16H[22;8H[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1HENDTEST[33C[7m|[2;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[8;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[12;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m[15;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m[19;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [21;8H[?12l[?25h[22;8H[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;41H[7m|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[7;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[10;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m[13;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [21;8H[?12l[?25h[22;8H[8C[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [22;16H[?12l[?25h[?25l[m[20;1Htwo     tabs    in one line             
one â[34m~@[m¦ multibyteCharacter             
                                        a â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;16H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|[m
[1m[7mtest92.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone â[34m~@[m¦ multibyteCharacter[21;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[1m[34m@                                      [m[23;42H[7mtest92.in [+]                          [22;16H[?12l[?25h[?25l[mâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[22;16H[?12l[?25h[?25l

:[?12l[?25hwincmd l[?25l[23;1H[7mtest92.in [+][m[1m[7m [m[7m                            [m[1m[7mtest92.in [+]                          [14;42H[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h^start:[?25l[31msearch hit BOTTOM, continuing at TOP[14;42H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset nowrap[?25l[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[14;42H[?12l[?25h[15;42H[15C[?25l[1;42H6|3zl:split[1;53H[K[2;42H|3zl:split[2;52H[K[3;42H|3zl:split[3;52H[K[4;42H6|3zl:split[4;53H[K[5;42H6|3zl:split[5;53H[K[6;42H6|3zl:split[6;53H[K[7;42Hsession! test.out[7;59H[K[8;42Hw test.out[8;52H[K[9;42H\(^ *normal! 0\|^ *exe 'normal!\)/d[9;77H[K[10;42H test.out[10;51H[K[11;42H![11;43H[K[12;42HTES[12;46H[K[14;42Hrt:[14;45H[K[15;42Hmultibyte chAracter[15;61H[K[16;47Hone leaDing tab[16;62H[K[17;43Hfour leadinG spaces[17;62H[K[18;42H   [10Cconsecutive tabs[18;71H[K[19;42H     tabs    in one line[19;66H[K[20;42H â[34m~@[m¦ multibyteCharacter[20;66H[K[21;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[21;77H[K[22;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[15;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[2;42H6|3zl:split[3;42Hsession! test.out[4;42Hw test.out[4;52H[K[5;42H\(^ *normal! 0\|^ *exe 'normal!\)/d[6;42H test.out[6;51H[K[7;42H![7;43H[K[8;42HTEST[8;46H[K[9;42H[K[10;42Hrt:[10;45H[K[11;42Hmultibyte chAracter[12;42H     one leaDing tab[13;43Hfour leadinG spaces[14;42H   [10Cconsecutive tabs[15;42H     tabs    in one line[16;42H[7mtest92.in [+]                          [m[17;42H![17;43H[K[18;42HTEST[18;55H[K[19;47H[K[20;42Hrt:[20;45H[K[21;42Hmultibyte chAracter[21;61H[K[22;42H     one leaDing tab[22;62H[K[21;54H[?12l[?25h[22;54H[?25l[17;42H:qa![18;42HENDTEST[20;42Hstart:[21;42Hno multibyte chAracter[22;47H   one leaDing tab[22;49H[?12l[?25h[8C[?25l[17;42H![17;43H[K[18;42HTES[18;46H[K[20;42Hrt:[20;45H[K[21;42Hmultibyte chAracter[21;61H[K[22;47Hone leaDing tab[22;62H[K[22;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42H![2;42HTEST[4;42Hrt:[5;42Hmultibyte chAracter[6;47Hone leaDing tab[7;43Hfour leadinG spaces[8;42H[7mtest92.in [+]                          [m[9;42H![10;42HTEST[12;42Hrt:[13;42Hmultibyte chAracter[14;47Hone leaDing tab[15;42H[7mtest92.in [+]                          [m[16;42H![17;42HTEST[19;42Hrt:[20;42Hmultibyte chAracter[21;47Hone leaDing tab[22;43Hfour leadinG spaces[23;42H[1m[7mtest92.in [+]                          [21;54H[?12l[?25h[22;54H[?25l[m[16;42H:qa![17;42HENDTEST[19;42Hstart:[20;42Hno multibyte chAracter[21;47H   one leaDing tab[22;43H   four leadinG spaces[22;42H[?12l[?25h[15C[?25l[16;42H![16;43H[K[17;42HTES[17;46H[K[19;42Hrt:[19;45H[K[20;42Hmultibyte chAracter[20;61H[K[21;47Hone leaDing tab[21;62H[K[22;43Hfour leadinG spaces[22;62H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42HTEST[3;42Hrt:[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest92.in [+]                          [m[7;42HTEST[9;42Hrt:[10;42Hmultibyte chAracter[11;47Hone leaDing tab[12;42H[7mtest92.in [+]                          [m[13;42Hrt:[14;42Hmultibyte chAracter[15;47Hone leaDing tab[16;43Hfour leadinG spaces[17;42H[7mtest92.in [+]                          [m[18;42Hrt:[19;42Hmultibyte chAracter[20;47Hone leaDing tab[21;43Hfour leadinG spaces[22;55Hconsecutive tabs[23;42H[1m[7mtest92.in [+]                          [21;54H[?12l[?25h[22;54H[?25l[m[18;42Hstart:[19;42Hno multibyte chAracter[20;47H   one leaDing tab[21;43H   four leadinG spaces[22;42Htwo[10C   consecutive tabs[22;42H[?12l[?25h[7C[?25l[18;42Hrt:[18;45H[K[19;42Hmultibyte chAracter[19;61H[K[20;47Hone leaDing tab[20;62H[K[21;43Hfour leadinG spaces[21;62H[K[22;42H   [10Cconsecutive tabs[22;71H[K[22;46H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42HTEST[3;42Hrt:[4;42Hmultibyte chAracter[5;42H[7mtest92.in [+]                          [m[6;42Hrt:[7;42Hmultibyte chAracter[8;47Hone leaDing tab[9;42H[7mtest92.in [+]                          [m[10;42Hrt:[11;42Hmultibyte chAracter[12;47Hone leaDing tab[13;43Hfour leadinG spaces[14;42H[7mtest92.in [+]                          [m[15;47Hone leaDing tab[16;43Hfour leadinG spaces[17;55Hconsecutive tabs[18;42H[7mtest92.in [+]                          [m[19;47Hone leaDing tab[20;43Hfour leadinG spaces[21;55Hconsecutive tabs[22;47Htabs    in one line[23;42H[1m[7mtest92.in [+]                          [21;46H[?12l[?25h[22;46H[?25l[m[19;47H   one leaDing tab[20;43H   four leadinG spaces[21;42Htwo[10C   consecutive tabs[22;42Htwo     tabs    in one line[22;42H[?12l[?25h[7C[?25l[19;47Hone leaDing tab[19;62H[K[20;43Hfour leadinG spaces[20;62H[K[21;42H   [10Cconsecutive tabs[21;71H[K[22;42H     tabs    in one line[22;66H[K[22;46H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[2;42Hrt:[3;42Hmultibyte chAracter[4;42H[7mtest92.in [+]                          [m[5;42Hrt:[6;42Hmultibyte chAracter[7;47Hone leaDing tab[8;42H[7mtest92.in [+]                          [m[9;42Hmultibyte chAracter[10;47Hone leaDing tab[11;43Hfour leadinG spaces[12;42H[7mtest92.in [+]                          [m[13;47Hone leaDing tab[14;43Hfour leadinG spaces[15;55Hconsecutive tabs[16;42H[7mtest92.in [+]                          [m[17;55Hconsecutive tabs[18;47Htabs    in one line[19;42H[7mtest92.in [+]                          [m[20;55Hconsecutive tabs[21;47Htabs    in one line[22;43Hâ[34m~@[m¦ multibyteCharacter[23;42H[1m[7mtest92.in [+]                          [21;46H[?12l[?25h[22;46H[?25l[m[20;42Htwo[10C   consecutive tabs[21;42Htwo     tabs    in one line[22;42Hone â[34m~@[m¦ multibyteCharacter[22;42H[?12l[?25h[15C[?25l[20;42H   [10Cconsecutive tabs[20;71H[K[21;42H     tabs    in one line[21;66H[K[22;42H â[34m~@[m¦ multibyteCharacter[22;66H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest92.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest92.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest92.in [+]                          [m[10;43Hfour leadinG spaces[11;55Hconsecutive tabs[12;42H[7mtest92.in [+]                          [m[13;43Hfour leadinG spaces[14;55Hconsecutive tabs[15;47Htabs    in one line[16;42H[7mtest92.in [+]                          [m[17;47Htabs    in one line[18;43Hâ[34m~@[m¦ multibyteCharacter[19;42H[7mtest92.in [+]                          [m[20;55Hconsecutive tabs[21;47Htabs    in one line[22;43Hâ[34m~@[m¦ multibyteCharacter[23;42H[1m[7mtest92.in [+]                          [22;54H[?12l[?25h[?25l[m[20;42H     tabs    in one line               [21;42H â[34m~@[m¦ multibyteCharacter               [22;42H                                       [22;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;54H[?12l[?25h[?25l[20;42Htwo     tabs    in one line[21;42Hone â[34m~@[m¦ multibyteCharacter[22;42Ha â[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;42H[?12l[?25h[15C[?25l[20;42H     tabs    in one line[20;66H[K[21;42H â[34m~@[m¦ multibyteCharacter[21;66H[K[22;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[22;77H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest92.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest92.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest92.in [+]                          [m[10;43Hfour leadinG spaces[11;55Hconsecutive tabs[12;42H[7mtest92.in [+]                          [m[13;55Hconsecutive tabs[14;47Htabs    in one line[15;42H[7mtest92.in [+]                          [m[16;47Htabs    in one line[17;43Hâ[34m~@[m¦ multibyteCharacter[18;42H[7mtest92.in [+]                          [m[19;43Hâ[34m~@[m¦ multibyteCharacter[20;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[21;42H[7mtest92.in [+]                          [m[22;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[23;42H[1m[7mtest92.in [+]                          [22;54H[?12l[?25h[?25l[m[22;43H[34m\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[22;54H[?12l[?25h[?25l[22;42Hâ[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charac[22;42H[?12l[?25h[15C[?25l[22;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest92.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest92.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest92.in [+]                          [m[10;43Hfour leadinG spaces[11;42H[7mtest92.in [+]                          [m[12;55Hconsecutive tabs[13;47Htabs    in one line[14;42H[7mtest92.in [+]                          [m[15;47Htabs    in one line[16;42H[7mtest92.in [+]                          [m[17;43Hâ[34m~@[m¦ multibyteCharacter[18;42H[34m~@~\[mbâ[34m~@~][m two multiByte characters[19;42H[7mtest92.in [+]                          [m[20;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[21;42H[7mtest92.in [+]                          [m[22;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[23;42H[1m[7mtest92.in [+]                          [22;54H[?12l[?25h[?25l

[m:[?12l[?25hmksession! test.out[?25l[22;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew test.out[?25l"test.out" [24;12H[K[24;12H282 lines, 5375 characters[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test92.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test92.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test92.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test92.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test92.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|
test92.in [+]                           |[m
one â[34m~@[m¦ multibyteCharacter[13C[7m|[m
a â[34m~@~\[mbâ[34m~@~][m two multiByte characters  [7m|
test92.in [+]                           |[m
â[34m~@~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte charact[7m|
test92.in [+]                            [m[1;42Hrt:[2;42H[7mtest92.in [+]                          [m[3;42Hmultibyte chAracter[4;42H[7mtest92.in [+]                          [m[5;47Hone leaDing tab[6;42H[7mtest92.in [+]                          [m[7;43Hfour leadinG spaces[8;55Hconsecutive tabs[9;42H[7mtest92.in [+]                          [m[10;55Hconsecutive tabs[11;42H[7mtest92.in [+]                          [m[12;47Htabs    in one line[13;43Hâ[34m~@[m¦ multibyteCharacter[14;42H[7mtest92.in [+]                          [m[15;43Hâ[34m~@[m¦ multibyteCharacter[16;42H[7mtest92.in [+]                          [m[17;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[18;42H[1m[34m~                                      [m[19;42H[7mtest92.in [+]                          [m[20;42H[34m~\[mcâ[34m~@~][m1â[34m~B[m¬ three mulTibyte character[21;42H[7mtest92.in [+]                          [m[22;42Hlet SessionLoad = 1[23;42H[1m[7mtest.out                               [22;42H[?12l[?25h[?25l

[m:[?12l[?25hv/\(^ *normal! 0\|^ *exe 'normal!\)/d[?25l256 fewer lines[24;17H[K[22;42H  normal! 016|[22;56H[K[23;51H[1m[7m[+][22;44H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H26 lines, 611 characters written[23;51H[1m[7m    [22;44H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test93.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test93.in" 48 lines, 843 characters[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:[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1Hvim: set ft=vim fenc=latin1:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 31 lines, 468 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hj016|3zl:split
j016|3zl:split
j08|3zl:split
j08|3zl:split
j016|3zl:split
j016|3zl:split
j016|3zl:split
:mksession! test.out
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!
ENDTEST

start:
no multibyte chAracter[17;9Hone leaDing tab
    four leadinG spaces
two[13Cconsecutive tabs
two     tabs    in one line
one ä multibyteCharacter
aä Ä  two multiByte characters
Aäöü  three mulTibyte characters[13;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('mksession')[?25l
:  [?12l[?25h:  e! test.ok
[?25l:  [?12l[?25h:  wq! test.out
[?25l:  [?12l[?25h:endif[1;1H[3L[?25l[1;1Hj016|3zl:split
j016|3zl:split
j08|3zl:split[24;1H[K[14;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset sessionoptions=buffers splitbelow fileencoding=latin1[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^start:[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hvsplit[?25l[1;41H[7m|[m
j08|3zl:split [26C[7m|[3;41H|[m
j016|3zl:split[26C[7m|[5;41H|[6;41H|[m
:mksession! test.out[20C[7m|[m
:new test.out       [20C[7m|[m
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d  [7m|[m
:w! test.out                            [7m|[m
:qa!        [28C[7m|[m
ENDTEST[33C[7m|[m
       [33C[7m|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m
        one leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two             consecutive tabs[8C[7m|[m[19;9Htabs    in one line     [8C[7m|[m
one ä multibyteCharacter   [13C[7m|[m
aä Ä  two multiByte characters[10C[7m|[m
Aäöü  three mulTibyte characters[8C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [14;1H[?12l[?25h
[15C[?25l[m[24;1H[K[24;1H:[?12l[?25hsplit[?25l[1;1H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out 
:qa!         
ENDTEST       
              
start:        
no multibyte chAracter
        one leaDing tab
    four leadinG spaces               
two             consecutive tabs
[7mtest93.in [+]                           [m
:new test.out
:v/\(^ *normal! 0\|^ *exe 'normal!\)/d
:w! test.out
:qa!                  
ENDTEST                
                       
start:[10C                
no multibyte chAracter     
        one leaDing tab 
    four leadinG spaces       
two             consecutive tab[19;16H[?12l[?25h[20;16H[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1H:qa![36C[7m|[m
ENDTEST[33C[7m|[3;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[6;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
ENDTEST[33C[7m|[10;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[13;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
:w! test.out[28C[7m|[m
:qa![36C[7m|[m
ENDTEST[33C[7m|[19;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[22;9Hone leaDing tab[17C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [22;16H[?12l[?25h[?25l[m[16;1H:qa!                                    
ENDTEST                                 
                                        
start:                                  
no multibyte chAracter                  
        one leaDing tab                 
                                            four leadinG spaces[22;16H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1HENDTEST[33C[7m|[2;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m
ENDTEST[33C[7m|[8;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[11;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[15;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[20;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [21;16H[?12l[?25h[22;16H[22;8H[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1HENDTEST[33C[7m|[2;41H|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[8;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[12;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m[15;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m[19;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [21;8H[?12l[?25h[22;8H[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;41H[7m|[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
start:[34C[7m|[m
no multibyte chAracter[18C[7m|[m[7;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[10;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m[13;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [21;8H[?12l[?25h[22;8H[8C[?25l

[m:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [22;16H[?12l[?25h[?25l[m[20;1Htwo     tabs    in one line             
one ä multibyteCharacter                
                                        aä Ä  two multiByte characters[22;16H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
aä Ä  two multiByte characters[10C[7m|[m
[1m[7mtest93.in [+]                            [m[1;42Hj016|3zl:split[2;42Hj08|3zl:split[3;42Hj08|3zl:split[4;42Hj016|3zl:split[5;42Hj016|3zl:split[6;42Hj016|3zl:split[7;42H:mksession! test.out[8;42H:new test.out[9;42H:v/\(^ *normal! 0\|^ *exe 'normal!\)/d[10;42H:w! test.out[11;42H:qa![12;42HENDTEST[14;42Hstart:[15;42Hno multibyte chAracter[16;50Hone leaDing tab[17;46Hfour leadinG spaces[18;42Htwo[13Cconsecutive tabs[19;42Htwo     tabs    in one line[20;42Hone ä multibyteCharacter[21;42Haä Ä  two multiByte characters[22;42HAäöü  three mulTibyte characters[23;42H[7mtest93.in [+]                          [22;16H[?12l[?25h[?25l[mAäöü  three mulTibyte characters[22;16H[?12l[?25h[?25l

:[?12l[?25hwincmd l[?25l[23;1H[7mtest93.in [+][m[1m[7m [m[7m                            [m[1m[7mtest93.in [+]                          [14;42H[?12l[?25h[?25l[m[24;1H[K[24;1H/[?12l[?25h^start:[?25l[31msearch hit BOTTOM, continuing at TOP[14;42H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset nowrap[?25l[14;42H[?12l[?25h[15;42H[15C[?25l[1;42H6|3zl:split[1;53H[K[2;42H|3zl:split[2;52H[K[3;42H|3zl:split[3;52H[K[4;42H6|3zl:split[4;53H[K[5;42H6|3zl:split[5;53H[K[6;42H6|3zl:split[6;53H[K[7;42Hsession! test.out[7;59H[K[8;42Hw test.out[8;52H[K[9;42H\(^ *normal! 0\|^ *exe 'normal!\)/d[9;77H[K[10;42H test.out[10;51H[K[11;42H![11;43H[K[12;42HTES[12;46H[K[14;42Hrt:[14;45H[K[15;42Hmultibyte chAracter[15;61H[K[16;47Hone leaDing tab[16;62H[K[17;43Hfour leadinG spaces[17;62H[K[18;42H   [10Cconsecutive tabs[18;71H[K[19;42H     tabs    in one line[19;66H[K[20;42H ä multibyteCharacter[20;63H[K[21;42HÄ  two multiByte characters[21;69H[K[22;42Hü  three mulTibyte characters[22;71H[K[15;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[2;42H6|3zl:split[3;42Hsession! test.out[4;42Hw test.out[4;52H[K[5;42H\(^ *normal! 0\|^ *exe 'normal!\)/d[6;42H test.out[6;51H[K[7;42H![7;43H[K[8;42HTEST[8;46H[K[9;42H[K[10;42Hrt:[10;45H[K[11;42Hmultibyte chAracter[12;42H     one leaDing tab[13;43Hfour leadinG spaces[14;42H   [10Cconsecutive tabs[15;42H     tabs    in one line[16;42H[7mtest93.in [+]                          [m[17;42H![17;43H[K[18;42HTEST[18;55H[K[19;47H[K[20;42Hrt:[20;45H[K[21;42Hmultibyte chAracter[21;61H[K[22;42H     one leaDing tab[22;62H[K[21;54H[?12l[?25h[22;54H[?25l[17;42H:qa![18;42HENDTEST[20;42Hstart:[21;42Hno multibyte chAracter[22;47H   one leaDing tab[22;49H[?12l[?25h[8C[?25l[17;42H![17;43H[K[18;42HTES[18;46H[K[20;42Hrt:[20;45H[K[21;42Hmultibyte chAracter[21;61H[K[22;47Hone leaDing tab[22;62H[K[22;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42H![2;42HTEST[4;42Hrt:[5;42Hmultibyte chAracter[6;47Hone leaDing tab[7;43Hfour leadinG spaces[8;42H[7mtest93.in [+]                          [m[9;42H![10;42HTEST[12;42Hrt:[13;42Hmultibyte chAracter[14;47Hone leaDing tab[15;42H[7mtest93.in [+]                          [m[16;42H![17;42HTEST[19;42Hrt:[20;42Hmultibyte chAracter[21;47Hone leaDing tab[22;43Hfour leadinG spaces[23;42H[1m[7mtest93.in [+]                          [21;54H[?12l[?25h[22;54H[?25l[m[16;42H:qa![17;42HENDTEST[19;42Hstart:[20;42Hno multibyte chAracter[21;47H   one leaDing tab[22;43H   four leadinG spaces[22;42H[?12l[?25h[15C[?25l[16;42H![16;43H[K[17;42HTES[17;46H[K[19;42Hrt:[19;45H[K[20;42Hmultibyte chAracter[20;61H[K[21;47Hone leaDing tab[21;62H[K[22;43Hfour leadinG spaces[22;62H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42HTEST[3;42Hrt:[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest93.in [+]                          [m[7;42HTEST[9;42Hrt:[10;42Hmultibyte chAracter[11;47Hone leaDing tab[12;42H[7mtest93.in [+]                          [m[13;42Hrt:[14;42Hmultibyte chAracter[15;47Hone leaDing tab[16;43Hfour leadinG spaces[17;42H[7mtest93.in [+]                          [m[18;42Hrt:[19;42Hmultibyte chAracter[20;47Hone leaDing tab[21;43Hfour leadinG spaces[22;55Hconsecutive tabs[23;42H[1m[7mtest93.in [+]                          [21;54H[?12l[?25h[22;54H[?25l[m[18;42Hstart:[19;42Hno multibyte chAracter[20;47H   one leaDing tab[21;43H   four leadinG spaces[22;42Htwo[10C   consecutive tabs[22;42H[?12l[?25h[7C[?25l[18;42Hrt:[18;45H[K[19;42Hmultibyte chAracter[19;61H[K[20;47Hone leaDing tab[20;62H[K[21;43Hfour leadinG spaces[21;62H[K[22;42H   [10Cconsecutive tabs[22;71H[K[22;46H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42HTEST[3;42Hrt:[4;42Hmultibyte chAracter[5;42H[7mtest93.in [+]                          [m[6;42Hrt:[7;42Hmultibyte chAracter[8;47Hone leaDing tab[9;42H[7mtest93.in [+]                          [m[10;42Hrt:[11;42Hmultibyte chAracter[12;47Hone leaDing tab[13;43Hfour leadinG spaces[14;42H[7mtest93.in [+]                          [m[15;47Hone leaDing tab[16;43Hfour leadinG spaces[17;55Hconsecutive tabs[18;42H[7mtest93.in [+]                          [m[19;47Hone leaDing tab[20;43Hfour leadinG spaces[21;55Hconsecutive tabs[22;47Htabs    in one line[23;42H[1m[7mtest93.in [+]                          [21;46H[?12l[?25h[22;46H[?25l[m[19;47H   one leaDing tab[20;43H   four leadinG spaces[21;42Htwo[10C   consecutive tabs[22;42Htwo     tabs    in one line[22;42H[?12l[?25h[7C[?25l[19;47Hone leaDing tab[19;62H[K[20;43Hfour leadinG spaces[20;62H[K[21;42H   [10Cconsecutive tabs[21;71H[K[22;42H     tabs    in one line[22;66H[K[22;46H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[2;42Hrt:[3;42Hmultibyte chAracter[4;42H[7mtest93.in [+]                          [m[5;42Hrt:[6;42Hmultibyte chAracter[7;47Hone leaDing tab[8;42H[7mtest93.in [+]                          [m[9;42Hmultibyte chAracter[10;47Hone leaDing tab[11;43Hfour leadinG spaces[12;42H[7mtest93.in [+]                          [m[13;47Hone leaDing tab[14;43Hfour leadinG spaces[15;55Hconsecutive tabs[16;42H[7mtest93.in [+]                          [m[17;55Hconsecutive tabs[18;47Htabs    in one line[19;42H[7mtest93.in [+]                          [m[20;55Hconsecutive tabs[21;47Htabs    in one line[22;43Hä multibyteCharacter[23;42H[1m[7mtest93.in [+]                          [21;46H[?12l[?25h[22;46H[?25l[m[20;42Htwo[10C   consecutive tabs[21;42Htwo     tabs    in one line[22;42Hone ä multibyteCharacter[22;42H[?12l[?25h[15C[?25l[20;42H   [10Cconsecutive tabs[20;71H[K[21;42H     tabs    in one line[21;66H[K[22;42H ä multibyteCharacter[22;63H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest93.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest93.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest93.in [+]                          [m[10;43Hfour leadinG spaces[11;55Hconsecutive tabs[12;42H[7mtest93.in [+]                          [m[13;43Hfour leadinG spaces[14;55Hconsecutive tabs[15;47Htabs    in one line[16;42H[7mtest93.in [+]                          [m[17;47Htabs    in one line[18;43Hä multibyteCharacter[19;42H[7mtest93.in [+]                          [m[20;55Hconsecutive tabs[21;47Htabs    in one line[22;43Hä multibyteCharacter[23;42H[1m[7mtest93.in [+]                          [22;54H[?12l[?25h[?25l[m[20;42H     tabs    in one line               [21;42H ä multibyteCharacter                  [22;42H                                       [22;42HÄ  two multiByte characters[22;54H[?12l[?25h[?25l[20;42Htwo     tabs    in one line[21;42Hone ä multibyteCharacter[22;42Haä Ä  two multiByte characters[22;42H[?12l[?25h[15C[?25l[20;42H     tabs    in one line[20;66H[K[21;42H ä multibyteCharacter[21;63H[K[22;42HÄ  two multiByte characters[22;69H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest93.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest93.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest93.in [+]                          [m[10;43Hfour leadinG spaces[11;55Hconsecutive tabs[12;42H[7mtest93.in [+]                          [m[13;55Hconsecutive tabs[14;47Htabs    in one line[15;42H[7mtest93.in [+]                          [m[16;47Htabs    in one line[17;43Hä multibyteCharacter[18;42H[7mtest93.in [+]                          [m[19;43Hä multibyteCharacter[20;42HÄ  two multiByte characters[21;42H[7mtest93.in [+]                          [m[22;42HÄ  two multiByte characters[23;42H[1m[7mtest93.in [+]                          [22;54H[?12l[?25h[?25l[m[22;42Hü  three mulTibyte characters[22;54H[?12l[?25h[?25l[22;42HAäöü  three mulTibyte characters[22;42H[?12l[?25h[15C[?25l[22;42Hü  three mulTibyte characters[22;71H[K[22;54H[?12l[?25h[?25l

:[?12l[?25hsplit[?25l[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42Hrt:[2;42Hmultibyte chAracter[3;42H[7mtest93.in [+]                          [m[4;42Hmultibyte chAracter[5;47Hone leaDing tab[6;42H[7mtest93.in [+]                          [m[7;47Hone leaDing tab[8;43Hfour leadinG spaces[9;42H[7mtest93.in [+]                          [m[10;43Hfour leadinG spaces[11;42H[7mtest93.in [+]                          [m[12;55Hconsecutive tabs[13;47Htabs    in one line[14;42H[7mtest93.in [+]                          [m[15;47Htabs    in one line[16;42H[7mtest93.in [+]                          [m[17;43Hä multibyteCharacter[18;42HÄ  two multiByte characters[19;42H[7mtest93.in [+]                          [m[20;42Hü  three mulTibyte characters[21;42H[7mtest93.in [+]                          [m[22;42Hü  three mulTibyte characters[23;42H[1m[7mtest93.in [+]                          [22;54H[?12l[?25h[?25l

[m:[?12l[?25hmksession! test.out[?25l[22;54H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew test.out[?25l"test.out" [24;12H[K[24;12H282 lines, 5375 characters[27m[m[H[2J[1;1Hstart:[34C[7m|[m
no multibyte chAracter[18C[7m|
test93.in [+]                           |[m
no multibyte chAracter[18C[7m|[m[5;9Hone leaDing tab[17C[7m|
test93.in [+]                           |[m[7;9Hone leaDing tab[17C[7m|[m
    four leadinG spaces[17C[7m|
test93.in [+]                           |[m
    four leadinG spaces[17C[7m|[m
two[13Cconsecutive tabs[8C[7m|
test93.in [+]                           |[m
two[13Cconsecutive tabs[8C[7m|[m
two     tabs    in one line[13C[7m|
test93.in [+]                           |[m
two     tabs    in one line[13C[7m|[m
one ä multibyteCharacter[16C[7m|
test93.in [+]                           |[m
one ä multibyteCharacter[16C[7m|[m
aä Ä  two multiByte characters[10C[7m|
test93.in [+]                           |[m
Aäöü  three mulTibyte characters[8C[7m|
test93.in [+]                            [m[1;42Hrt:[2;42H[7mtest93.in [+]                          [m[3;42Hmultibyte chAracter[4;42H[7mtest93.in [+]                          [m[5;47Hone leaDing tab[6;42H[7mtest93.in [+]                          [m[7;43Hfour leadinG spaces[8;55Hconsecutive tabs[9;42H[7mtest93.in [+]                          [m[10;55Hconsecutive tabs[11;42H[7mtest93.in [+]                          [m[12;47Htabs    in one line[13;43Hä multibyteCharacter[14;42H[7mtest93.in [+]                          [m[15;43Hä multibyteCharacter[16;42H[7mtest93.in [+]                          [m[17;42Hü  three mulTibyte characters[18;42H[1m[34m~                                      [m[19;42H[7mtest93.in [+]                          [m[20;42Hü  three mulTibyte characters[21;42H[7mtest93.in [+]                          [m[22;42Hlet SessionLoad = 1[23;42H[1m[7mtest.out                               [22;42H[?12l[?25h[?25l

[m:[?12l[?25hv/\(^ *normal! 0\|^ *exe 'normal!\)/d[?25l256 fewer lines[24;17H[K[22;42H  normal! 016|[22;56H[K[23;51H[1m[7m[+][22;44H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H26 lines, 611 characters written[23;51H[1m[7m    [22;44H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test94.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test94.in" 95 lines, 2163 characters[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()[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for Visual mode and operators[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[18;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 50 lines, 1176 characters written[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[19;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H/^Lemon
yiWPlciWNew[34m^[[mfr.:
:
:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz
dV:[34m^M[mdv:[34m^M[m:set noma | let v:errmsg = ''
d:[34m^M[m:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'
dv:[34m^[[mdV:[34m^[[m:set noma | let v:errmsg = ''
d:[34m^[[m:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'
:/^start:/+2,$w! test.out
:q!
ENDTEST

start:

apple banana cherry

line 1 line 1
line 2 line 2
line 3 line 3
line 4 line 4
line 5 line 5
line 6 line 6[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp viminfo+=nviminfo[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" User functions[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction MoveToCap()[?25l
:  [?12l[?25h:  call search('\u', 'W')
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[1;1H/^Lemon
yiWPlciWNew[34m^[[mfr.:[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfunction SelectInCaps()[?25l
:  [?12l[?25h:  let [line1, col1] = searchpos('\u', 'bcnW')
[?25l:  [?12l[?25h:  let [line2, col2] = searchpos('.\u', 'nW')
[?25l:  [?12l[?25h:  call setpos("'<", [0, line1, col1, 0])
[?25l:  [?12l[?25h:  call setpos("'>", [0, line2, col2, 0])
[?25l:  [?12l[?25h:  normal! gv
[?25l:  [?12l[?25h:endfunction[1;1H[6L[?25l[1;1H/^Lemon
yiWPlciWNew[34m^[[mfr.:
:
:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
/^zzzz
dV:[34m^M[mdv:[34m^M[m:set noma | let v:errmsg = ''[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Visual modes followed by operator[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^apple[?25l[16;1H[?12l[?25ha[?25l[24;1H[1m-- VISUAL --[16;2H[?12l[?25h[?25l[m[7mp[?12l[?25h[?25l[mle banana cherry[16;18H[K[24;1H[K[16;2H[?12l[?25h[?25l banana cherry[16;16H[K[16;2H[?12l[?25h [?25l[7mbanan[m[24;1H[1m-- VISUAL --[16;8H[?12l[?25h[?25l[ma  cherry[16;10H[K[24;1H[K[16;3H[?12l[?25h[?25ly[16;4H[K[16;3H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[16;3H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^line 1[?25l[18;1H[?12l[?25h[?25ll[7mine 1 line 1 [m[24;1H[1m-- VISUAL LINE --[18;1H[?12l[?25h[?25l[24;4HINSERT --N[m[24;13H[K[24;1H[K[18;1Hnewline[18;8H[K[18;7H[?12l[?25h[19;7H[?25l[24;1H[1m-- INSERT --[m[24;1H[K[19;1Hnewline[19;8H[K[19;7H[?12l[?25h[20;7H[?25l[7mline 3 line 3 
line 4[m [7mline 4 [m


[1m-- VISUAL LINE --[21;7H[?12l[?25h[?25l[m[20;1Hline 5 line 5[20;14H[K[21;1Hline 6 line 6[21;14H[K[22;1H[K[23;1Hxxxxxxxxxxxxx[24;1H[K[20;1H[?12l[?25h[?25l[20;1H[K[21;1Hxxxxxxxxxxxxx
xxxxxxxxxxxxx[20;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[20;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^xxxx[?25l[21;1H[?12l[?25h[?25l


[1m-- VISUAL BLOCK --[21;1H[?12l[?25h[?25l[m[7mx
[?12l[?25h[?25l[21;2Hx
x[?12l[?25h[?25l[m[24;4H[1mINSERT --O[m[24;13H[K[24;1H[K[21;1H  
  [21;2H[?12l[?25h [?25l


[1m-- INSERT --[m[24;1H[K[21;3H  
    [21;4H[?12l[?25h [?25l[1;23r[23;1H
[1;24r[20;5H[7mxxxx
[m    [7mxxxx
[mxxxx[7mxxxx[m
xxxx[7mxxx[mxxxxxx
[1m-- VISUAL BLOCK --[23;8H[?12l[?25h[?25l
-- INSERT --O[m[24;13H[K[24;1H[K[20;5H----
    ----
xxxx----
xxxx----[20;8H[?12l[?25h-[?25l[24;1H[1m-- INSERT --[m[24;1H[K[20;9H----[21;9H----[22;9H----[23;9H----[20;12H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[20;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[20;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Visual mode maps (movement and text object)[?25l[20;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hvnoremap W /\u/s-1<CR>[?25l[20;12H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hvnoremap iW :<C-U>call SelectInCaps()<CR>[?25l[20;12H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Kiwi[?25l[1;23r[1;1H[2M[1;24r[23;1HKiwiRaspberryDateWatermelonPeach[24;1H[K[23;1H[?12l[?25h[?25l
[1m-- VISUAL --[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H/\u/s-1[23;1H[7mKiw[?12l[?25h[?25l[m
[1m-- INSERT --[m[24;1H[K[23;1HNoRaspberryDateWatermelonPeach[23;31H[K[23;2H[?12l[?25ho[?25l
[1m-- INSERT --[m[24;1H[K[23;3HNoberryDateWatermelonPeach[23;29H[K[23;4H[?12l[?25hoberry[?25l[7mDateWat[m
[1m-- VISUAL --[23;17H[?12l[?25h[?25l[m[23;10HrmelonPeach[23;21H[K[24;1H[K[23;10H[?12l[?25h[?25lach[23;13H[K[23;10H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;10H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Jambu[?25l[1;23r[23;1H
[1;24r[23;1HJambuRambutanBananaTangerineMango[24;1H[K[23;1H[?12l[?25hJa[?25l
[1m-- VISUAL --[23;3H[?12l[?25h[?25l[m[24;1H[K[24;1H:'<,'>[24;2H[K[24;2Hcall SelectInCaps()[23;1H[7mJamb[?12l[?25h[?25l[m
[1m-- INSERT --[m[24;13H[K[24;1H[K[23;1H-RambutanBananaTangerineMango[23;30H[K[23;1H[?12l[?25h-[?25l
[1m-- INSERT --[m[24;1H[K[23;2H-tanBananaTangerineMango[23;26H[K[23;2H[?12l[?25h-[?25l[7mtanBanana[m
[1m-- VISUAL --[23;12H[?12l[?25h[?25l[m--angerineMango[23;16H[K[24;1H[K[23;3H[?12l[?25ha[?25lgo[23;6H[K[23;4H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Operator-pending mode maps (movement and text object)[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25honoremap W /\u/<CR>[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25honoremap <Leader>W :<C-U>call MoveToCap()<CR>[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25honoremap iW :<C-U>call SelectInCaps()<CR>[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Pineapple[?25l[1;23r[1;1H[2M[1;24r[23;1HPineappleQuinceLoganberryOrangeGrapefruitKiwiZ[24;1H[K[23;1H[?12l[?25h[?25l
/\u/[24;4H[K[24;1H[24;1H[K[23;1H-QuinceLoganberryOrangeGrapefruitKiwiZ[23;39H[K[23;1H[?12l[?25h-[?25l
/\u/[24;4H[K[24;1H[1m-- INSERT --[m[24;1H[K[23;2H-LoganberryOrangeGrapefruitKiwiZ[23;34H[K[23;2H[?12l[?25h-[?25l
/\u/[24;4H[K[24;1H[1m-- INSERT --[m[24;1H[K[23;3H-GrapefruitKiwiZ[23;19H[K[23;3H[?12l[?25h-[?25l
/\u/[24;4H[K[24;1H[1m-- INSERT --[m[24;1H[K[23;4H-Z[23;6H[K[23;4H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;4H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Juniper[?25l[1;23r[23;1H
[1;24r[23;1HJuniperDurianZ[24;1H[K[23;1H[?12l[?25h[?25l
:call MoveToCap()[23;1HWhavcre[?12l[?25h[7C[?25l[24;1H[K[24;1H:call MoveToCap()[23;8HQhevna[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[23;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^Lemon[?25l[1;23r[23;1H
[1;24r[23;1HLemonNectarineZ[24;1H[K[23;1H[?12l[?25h[?25l
:call SelectInCaps()[23;1H[?12l[?25h[?25lLemonLemonNectarineZLemo[?12l[?25hn[?25l[24;1H[K[24;1H:call SelectInCaps()[24;1H[K[23;6HNewNectarineZ[23;19H[K[23;8H[?12l[?25hwNecta[?25l
:call SelectInCaps()[24;1H[K[23;11HwZ[23;13H[K[23;11H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[23;11H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.[?25l[23;11H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^zzzz[?25l[1;23r[1;1H[2M[1;24r[23;1Hzzzz[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[23;4H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset noma | let v:errmsg = ''[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[1m[37m[41mE21: Cannot make changes, 'modifiable' is off[23;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'[?25l[1;23r[23;1H
[1;24r[23;1Hok[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h[?25l[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h[?25l[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset noma | let v:errmsg = ''[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'[?25l[1;23r[23;1H
[1;24r[23;1Hok[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/^start:/+2,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New] 20L, 144C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test95.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test95.in" 141 lines, 5816 characters[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.[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for regexp patterns with multi-byte support, using utf-8.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[7;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 131 lines, 5579 characters written[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[8;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:[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:
[1m[34m~                                                                               [20;1H[?12l[?25h
[?25l


[m:so! Xdotest[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocp encoding=utf-8 viminfo+=nviminfo nomore[?25l[27m[m[H[2J[1;1H:[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:
[1m[34m~                                                                               [21;1H[?12l[?25h[?25l


[m:[?12l[?25h" tl is a List of Lists with:[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    2: test auto/old/new  0: test auto/old  1: test auto/new[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    regexp pattern[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    text to test the pattern on[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected match (optional)[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected submatch 1 (optional)[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    expected submatch 2 (optional)[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"    etc.[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"  When there is no match use only the first two items.[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet tl = [][?25l[21;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25h"""" Multi-byte character tests. These will fail unless vim is compiled[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features.[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaÃ£Ã¢aiuvna ', 'aiaÃ£Ã¢aiuvna'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[[=a=]]\+', 'ddaÃ£Ã¢bcd', 'aÃ£Ã¢'])[34m^I^I^I^I^I^I^I^I[m" equivalence
classes[?25l[1;1H[L[1;1H:[8Cendif[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall add(tl, [2, '[^à¸¡ ]\+', 'à¸¡à¸¡ oijasoifjos ifjoisj f osij j à¸¡à¸¡à¸¡à¸¡à¸¡ abcd', 'oij
[23;80Ha[24;1Hsoifjos'])[?25l[1;1H[L[1;1H:[8Cendif[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25hcall add(tl, [2, ' [^ ]\+', 'start à¸¡abcdà¸¡ ', ' à¸¡abcdà¸¡'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[à¸¡[:alpha:][=a=]]\+', '879 aiaÃ£à¸¡Ã¢à¸¡aiuvna ', 'aiaÃ£à¸¡Ã¢à¸¡aiuvna']
[23;80H)[24;1H[?25l[1;1H[L[1;1H:[8Cendif[24;1H[K[22;1H[?12l[?25h[?25l

:[?12l[?25h" this is not a normal "i" but 0xec[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\p\+', 'Ã¬a', 'Ã¬a'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\p*', 'aã‚', 'aã‚'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Test recognition of some character classes[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\i\+', '&*Â¨xx ', 'xx'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '\f\+', '&*[34m<9f>[mfname ', 'fname'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Test composing character matching[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.à¸¡', 'xà¸¡à¸¡à¹ˆx yà¸¡y', 'yà¸¡'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '.à¸¡à¸¡à¹ˆ', 'xà¸¡à¸¡à¹ˆx yà¸¡y', 'xà¸¡à¸¡à¹ˆ'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "a", "ca\u0300t"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "ca", "ca\u0300t"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Test \Z[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, 'Ãº\Z', 'x'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '×™×”×•×”\Z', '×™×”×•×”', '×™×”×•×”'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '×™×™Ö°×”×•×•Ö¸×”\Z', '×™×”×•×”', '×™×”×•×”'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '×™×”×•×”\Z', '×™×™Ö°×”×•×•Ö¸×”', '×™×™Ö°×”×•×•Ö¸×”'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '×™×™Ö°×”×•×•Ö¸×”\Z', '×™×™Ö°×”×•×•Ö¸×”', '×™×™Ö°×”×•×•Ö¸×”'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '×™×™Ö°\Z', '×•×•Ö°×™×™Ö·', '×™×™Ö·'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "×§\u200d\u05b9x\\Z", "x×§\u200d\u05b9xy", "×§\u200d\u05b9x"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "×§\u200d\u05b9x\\Z", "x×§\u200dxy", "×§\u200dx"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "×§\u200dx\\Z", "x×§\u200d\u05b9xy", "×§\u200d\u05b9x"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "×§\u200dx\\Z", "x×§\u200dxy", "×§\u200dx"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9\\Z", "xyz"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\\Z\u05b9", "xyz"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Combining different tests and features[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall add(tl, [2, '[^[=a=]]\+', 'ddaÃ£Ã¢bcd', 'dd'])[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"""" Run the tests[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor t in tl[?25l
:  [?12l[?25h:  let re = t[0]
[?25l:  [?12l[?25h:  let pat = t[1]
[?25l:  [?12l[?25h:  let text = t[2]
[?25l:  [?12l[?25h:  let matchidx = 3
[?25l:  [?12l[?25h:  for engine in [0, 1, 2]
[?25l:    [?12l[?25h:    if engine == 2 && re == 0 || engine == 1 && re == 1
[?25l:      [?12l[?25h:      continue
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    let &regexpengine = engine
[?25l:    [?12l[?25h:    try
[?25l:      [?12l[?25h:      let l = matchlist(text, pat)
[?25l:      [?12l[?25h:    catch
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", caused an exception: \"' . v:exception . '\"'
[?25l:      [?12l[?25h:    endtry
[?25l:    [?12l[?25h:" check the match itself
[?25l:    [?12l[?25h:    if len(l) == 0 && len(t) > matchidx
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", did not match, expected: \"' . t[matchidx] . '\"'
[?25l:      [?12l[?25h:    elseif len(l) > 0 && len(t) == matchidx
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . te
[23;80Hx[24;1Ht . '\", match: \"' . l[0] . '\", expected no match'
[?25l:      [?12l[?25h:    elseif len(t) > matchidx && l[0] != t[matchidx]
[?25l:      [?12l[?25h:      $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . tet . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"'
[?25l:      [?12l[?25h:    else
[?25l:      [?12l[?25h:      $put ='OK ' . engine . ' - ' . pat
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:    if len(l) > 0
[?25l:      [?12l[?25h:"   check all the nine submatches
[?25l:      [?12l[?25h:      for i in range(1, 9)
[?25l:[8C[?12l[?25h:        if len(t) <= matchidx + i
[?25l:[10C[?12l[?25h:          let e = ''
[?25l:[10C[?12l[?25h:        else
[?25l:[10C[?12l[?25h:          let e = t[matchidx + i]
[?25l:[10C[?12l[?25h:        endif
[?25l:[8C[?12l[?25h:        if l[i] != e
[?25l:[10C[?12l[?25h:          $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: "' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"'
[?25l:[10C[?12l[?25h:        endif
[?25l:[8C[?12l[?25h:      endfor
[?25l:      [?12l[?25h:      unlet i
[?25l:      [?12l[?25h:    endif
[?25l:    [?12l[?25h:  endfor
[?25l:  [?12l[?25h:endfor[27m[m[H[2J[?25l[1;1HOK 2 - ×§[34m<200d>[mx\Z
OK 0 - ×§[34m<200d>[mx\Z
OK 1 - ×§[34m<200d>[mx\Z
OK 2 - ×§[34m<200d>[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=]]\+[?12l[?25h[?25l
:[?12l[?25hunlet t tl e l[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" check that 'ambiwidth' does not change the meaning of \p[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset regexpengine=1 ambiwidth=single[?25l[27m[m[H[2J[1;1HOK 2 - ×§[34m<200d>[mx\Z
OK 0 - ×§[34m<200d>[mx\Z
OK 1 - ×§[34m<200d>[mx\Z
OK 2 - ×§[34m<200d>[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=]]\+[?12l[?25h[?25l
:[?12l[?25h$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p')[?25l[1;23r[23;1H
[1;24r[23;1Heng 1 ambi single: 0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset regexpengine=1 ambiwidth=double[?25l[27m[m[H[2J[1;1HOK 0 - ×§[34m<200d>[mx\Z
OK 1 - ×§[34m<200d>[mx\Z
OK 2 - ×§[34m<200d>[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[?12l[?25h[?25l
:[?12l[?25h$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p')[?25l[1;23r[23;1H
[1;24r[23;1Heng 1 ambi double: 0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset regexpengine=2 ambiwidth=single[?25l[27m[m[H[2J[1;1HOK 1 - ×§[34m<200d>[mx\Z
OK 2 - ×§[34m<200d>[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[?12l[?25h[?25l
:[?12l[?25h$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p')[?25l[1;23r[23;1H
[1;24r[23;1Heng 2 ambi single: 0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset regexpengine=2 ambiwidth=double[?25l[27m[m[H[2J[1;1HOK 2 - ×§[34m<200d>[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[?12l[?25h[?25l
:[?12l[?25h$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p')[?25l[1;23r[23;1H
[1;24r[23;1Heng 2 ambi double: 0[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h/\%#=1^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New] 140L, 2022C written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test96.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test96.in" 142 lines, 3330 characters[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[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HThis will test for problems in quickfix:[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[12;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 39 lines, 1123 characters written[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[13;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H: let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ]
:
: let qflist = []
: for word in words
:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . ww[6;1Hord . '.txt', })
:   " NOTE: problem 1:
:   " intentionally not setting 'lnum' so that the quickfix entries are not
:   " valid
:   call setloclist(0, qflist, ' ')
: endfor
ENDTEST

Test A:
STARTTEST
:lrewind
:enew
:lopen
:lnext
:lnext
:lnext
:lnext
:vert split[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h enew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 0 lines, 0 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h b 1[?25l"test96.in" 142 lines, 3330 characters[1;1H:
: let qflist = [][2;18H[K[3;1H: for word in words[3;20H[K[4;1H:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . ww[5;1Hord . '.txt', })[5;17H[K[6;1H:   " NOTE: problem 1:[6;23H[K[7;1H:   " intentionally not setting 'lnum' so that the quickfix entries are not[7;76H[K[8;1H:   " valid[8;12H[K[9;1H:   call setloclist(0, qflist, ' ')[9;36H[K[10;1H: endfor[10;9H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1HTest A:[13;8H[K[14;1HSTARTTEST[14;10H[K[15;1H:lrewind[15;9H[K[16;1H:enew[16;6H[K[17;1H:lopen[17;7H[K[18;1H:lnext[18;7H[K[19;1H:lnext[19;7H[K[20;1H:lnext[20;7H[K[21;1H:lnext[21;7H[K[22;1H:vert split[22;12H[K[23;1H:wincmd L[23;10H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h " Set up the test environment:[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h function! ReadTestProtocol(name)[?25l
:  [?12l[?25h:   let base = substitute(a:name, '\v^test://(.*)%(\.[^.]+)?', '\1', '')
[?25l:  [?12l[?25h:   let word = substitute(base, '\v(.*)\..*', '\1', '')
[?25l:  [?12l[?25h:
[?25l:  [?12l[?25h:   setl modifiable
[?25l:  [?12l[?25h:   setl noreadonly
[?25l:  [?12l[?25h:   setl noswapfile
[?25l:  [?12l[?25h:   setl bufhidden=delete
[?25l:  [?12l[?25h:   %del _
[?25l:  [?12l[?25h:   " For problem 2:
[?25l:  [?12l[?25h:   " 'buftype' has to be set to reproduce the constant opening of new windo
[23;80Hw[24;1Hs
[?25l:  [?12l[?25h:   setl buftype=nofile
[?25l:  [?12l[?25h:
[?25l:  [?12l[?25h:   call setline(1, word)
[?25l:  [?12l[?25h:
[?25l:  [?12l[?25h:   setl nomodified
[?25l:  [?12l[?25h:   setl nomodifiable
[?25l:  [?12l[?25h:   setl readonly
[?25l:  [?12l[?25h:   exe 'doautocmd BufRead ' . substitute(a:name, '\v^test://(.*)', '\1', ''
[23;80H)[24;1H
[?25l:  [?12l[?25h: endfunction[27m[m[H[2J[?25l[1;1H:
: let qflist = []
: for word in words
:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . ww[5;1Hord . '.txt', })
:   " NOTE: problem 1:
:   " intentionally not setting 'lnum' so that the quickfix entries are not
:   " valid
:   call setloclist(0, qflist, ' ')
: endfor
ENDTEST

Test A:
STARTTEST
:lrewind
:enew
:lopen
:lnext
:lnext
:lnext
:lnext
:vert split
:wincmd L[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25h augroup testgroup[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h   au![?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h   autocmd BufReadCmd test://* call ReadTestProtocol(expand("<amatch>"))[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h augroup END[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h let words = [ "foo", "bar", "baz", "quux", "shmoo", "spam", "eggs" ][?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h let qflist = [][?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h for word in words[?25l
:  [?12l[?25h:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file '
. word . '.txt', })
[?25l:  [?12l[?25h:   " NOTE: problem 1:
[?25l:  [?12l[?25h:   " intentionally not setting 'lnum' so that the quickfix entries are not
[?25l:  [?12l[?25h:   " valid
[?25l:  [?12l[?25h:   call setloclist(0, qflist, ' ')
[?25l:  [?12l[?25h: endfor[1;1H[7L[?25l[1;1H:
: let qflist = []
: for word in words
:   call add(qflist, {'filename': 'test://' . word . '.txt', 'text': 'file ' . ww[5;1Hord . '.txt', })
:   " NOTE: problem 1:
:   " intentionally not setting 'lnum' so that the quickfix entries are not[24;1H[K[12;1H[?12l[?25h[?25l[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H27 lines, 608 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:wincmd K
:b test.out
:let fileName = substitute(fileName, '\\', '/', 'g')
:let locationListFileName = substitute(locationListFileName, '\\', '/', 'g')
:call append(line('$'), "Test A:")
:call append(line('$'), "  - file name displayed: " . fileName)
:call append(line('$'), "  - quickfix claims that the file name displayed is: "  [8;1H. locationListFileName)
:w
:wincmd o
:b 1
ENDTEST

Test B:
STARTTEST
:lrewind
:lopen
:2
:exe "normal \<CR>"
:wincmd p
:3
:exe "normal \<CR>"
:wincmd p[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlrewind[?25lNo matching autocommands
(1 of 7): file foo.txt
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25henew[?25l[1;1H[2L[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlopen[?25l[12;1H[7m[No Name]                                                                       [m[13;1H[30m[43mtest://foo.txt|| file foo.txt                                                   [m[14;1Htest://bar.txt|| file bar.txt[14;30H[K[15;1Htest://baz.txt|| file baz.txt[15;30H[K[16;1Htest://quux.txt|| file quux.txt[16;32H[K[17;1Htest://shmoo.txt|| file shmoo.txt[17;34H[K[18;1Htest://spam.txt|| file spam.txt[18;32H[K[19;1Htest://eggs.txt|| file eggs.txt[19;32H[K[23;1H[1m[7m[Location List]                                                                 [13;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlnext[?25lNo matching autocommands[1;1Hbar[12;1H[1m[7mtest://bar.txt [RO]                                                             [m[13;1Htest://foo.txt|| file foo.txt[13;30H[K[14;1H[30m[43mtest://bar.txt|| file bar.txt                                                   [m[23;1H[7m[Location List][m[1m[7m [m[7m                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlnext[?25lNo matching autocommands[1;3Hz[12;10H[1m[7mz.[m

test://bar.txt|| file bar.txt[14;30H[K[15;1H[30m[43mtest://baz.txt|| file baz.txt                                                   [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlnext[?25lNo matching autocommands[1;1Hquux[12;8H[1m[7mquux.txt [RO][m


test://baz.txt|| file baz.txt[15;30H[K[16;1H[30m[43mtest://quux.txt|| file quux.txt                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlnext[?25lNo matching autocommands[1;1Hshmoo[12;8H[1m[7mshmoo.txt [RO][m[16;1Htest://quux.txt|| file quux.txt[16;32H[K[17;1H[30m[43mtest://shmoo.txt|| file shmoo.txt                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hvert split[?25l[1;41H[7m|[2;41H|[3;41H|[4;41H|[5;41H|[6;41H|[7;41H|[8;41H|[9;41H|[10;41H|[11;41H|[m[1;42Hshmoo[2;42H[1m[34m~[3;42H~[4;42H~[5;42H~[6;42H~[7;42H~[8;42H~[9;42H~[10;42H~[11;42H~[m[12;42H[7mtest://shmoo.txt [RO]                  [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd L[?25l[1;40H[7m|[2;40H|[3;40H|[4;40H|[5;40H|[6;40H|[7;40H|[8;40H|[9;40H|[10;40H|[11;40H|
test://shmoo.txt [RO][m[1m[7m [m[7m                  |[13;40H|[14;40H|[15;40H|[16;40H|[17;40H|[18;40H|[19;40H|[20;40H|[21;40H|[22;40H|[m[1;41Hshmo[1;46H[K[2;41H[1m[34m~  [3;41H~  [4;41H~  [5;41H~  [6;41H~  [7;41H~  [8;41H~  [9;41H~  [10;41H~  [11;41H~  [12;41H~                                       [13;41H~                                       [14;41H~                                       [15;41H~                                       [16;41H~                                       [17;41H~                                       [18;41H~                                       [19;41H~                                       [20;41H~[21;41H~[22;41H~[m[23;41H[1m[7mtest://shmoo.txt [RO]                   [1;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlopen[?25l[12;41H[7mtest://shmoo.txt [RO]                   [m[13;41H[30m[43mtest://foo.txt|| file foo.txt           [m[14;41Htest://bar.txt|| file bar.txt[14;70H[K[15;41Htest://baz.txt|| file baz.txt[15;70H[K[16;41Htest://quux.txt|| file quux.txt[16;72H[K[17;41Htest://shmoo.txt|| file shmoo.txt[17;74H[K[18;41Htest://spam.txt|| file spam.txt[18;72H[K[19;41Htest://eggs.txt|| file eggs.txt[19;72H[K[23;41H[1m[7m[Location List]t       [13;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;41H[1m[7mtest://shmoo.txt [RO]                   [m[23;41H[7m[Location List][m[1m[7m [m[7m                         [1;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlnext[?25lNo matching autocommands[1;41Hbar[1;44H[K[12;48H[1m[7mbar.txt [RO]O   [m[13;41Htest://foo.txt|| file foo.txt[13;70H[K[14;41H[30m[43mtest://bar.txt|| file bar.txt           [1;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"b 1[?25l[1;41H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet fileName = expand("%")[?25l[1;41H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;41H[7mtest://bar.txt [RO][m[1m[7m [m[7m                     [m[23;41H[1m[7m[Location List]                         [14;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet locationListFileName = substitute(getline(line('.')), '\([^|]*\)|.*', '\1'
[23;80H,[24;1H '')[?25l[1;1H[L[1;1Hshmoo[34C[7m|[mbar[24;1H[K[14;41H[?12l[?25h[?25l[24;1H:[?12l[?25hwincmd n[?25l[6;41H[7mtest://bar.txt [RO]                     [m[7;41H[K[12;41H[1m[7m[No Name]                               [m[23;41H[7m[Location List][m[1m[7m [m[7m                         [7;41H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd K[?25l[27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[8;1H[1m[7m[No Name]                                                                       [m[9;1Hshmoo[34C[7m|
test://shmoo.txt [RO]                  |[m
test://foo.txt|| file foo.txt[10C[7m|[m
test://bar.txt|| file bar.txt[10C[7m|[m
test://baz.txt|| file baz.txt[10C[7m|[m
test://quux.txt|| file quux.txt[8C[7m|[m
[30m[43mtest://shmoo.txt|| file shmoo.txt      [m[7m|[m
test://spam.txt|| file spam.txt[8C[7m|[m
test://eggs.txt|| file eggs.txt[8C[7m|[18;40H|[19;40H|[20;40H|[21;40H|[22;40H|[m[18;1H[1m[34m~                                      
~                                      
~                                      
~                                      
~                                      [m
[7m[Location List]                         [m[9;41Hbar[10;41H[7mtest://bar.txt [RO]                     [m[11;41Htest://foo.txt|| file foo.txt[12;41H[30m[43mtest://bar.txt|| file bar.txt           [m[13;41Htest://baz.txt|| file baz.txt[14;41Htest://quux.txt|| file quux.txt[15;41Htest://shmoo.txt|| file shmoo.txt[16;41Htest://spam.txt|| file spam.txt[17;41Htest://eggs.txt|| file eggs.txt[18;41H[1m[34m~                                       [19;41H~                                       [20;41H~                                       [21;41H~                                       [22;41H~                                       [m[23;41H[7m[Location List]                         [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hb test.out[?25l"test.out" 0 lines, 0 characters[8;1H[1m[7mtest.out]  [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet fileName = substitute(fileName, '\\', '/', 'g')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet locationListFileName = substitute(locationListFileName, '\\', '/', 'g')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "Test A:")[?25l[2;1HTest A:[2;8H[K[8;10H[1m[7m[+][1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "  - file name displayed: " . fileName)[?25l[3;1H  - file name displayed: test://bar.txt[3;40H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "  - quickfix claims that the file name displayed is: "
. locationListFileName)[?25l[1;1H[L[4;1H  - quickfix claims that the file name displayed is: test://bar.txt[4;68H[K[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw[?25l"test.out" 4 lines, 117 characters written[8;10H[1m[7m    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd o[?25l[8;1H[1m[34m~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;40H   [19;40H   [20;40H   [21;40H   [22;40H   
~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hb 1[?25l"test96.in" 142 lines, 3330 characters[1;1H:b test.out
:let fileName = substitute(fileName, '\\', '/', 'g')
:let locationListFileName = substitute(locationListFileName, '\\', '/', 'g')
:call append(line('$'), "Test A:")[4;35H[K[5;1H:call append(line('$'), "  - file name displayed: " . fileName)[5;64H[K[6;1H:call append(line('$'), "  - quickfix claims that the file name displayed is: "  [7;1H. locationListFileName)[7;24H[K[8;1H:w[8;3H[K[9;1H:wincmd o[9;10H[K[10;1H:b 1[10;5H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1HTest B:[13;8H[K[14;1HSTARTTEST[14;10H[K[15;1H:lrewind[15;9H[K[16;1H:lopen[16;7H[K[17;1H:2[17;3H[K[18;1H:exe "normal \<CR>"[18;20H[K[19;1H:wincmd p[19;10H[K[20;1H:3[20;3H[K[21;1H:exe "normal \<CR>"[21;20H[K[22;1H:wincmd p[22;10H[K[23;1H:4[23;3H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H19 lines, 305 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[11M[1;24r[13;1H:exe "normal \<CR>"
:let numberOfWindowsOpen = winnr('$')
:wincmd n
:wincmd K
:b test.out
:call append(line('$'), "Test B:")
:call append(line('$'), "  - number of window open: " . numberOfWindowsOpen)
:w
:wincmd o
:b 1
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlrewind[?25lNo matching autocommands
(1 of 7): file foo.txt
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlopen[?25l[1;1H[2L[1;1Hfoo
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[7mtest://foo.txt [RO]                                                             [m[13;1H[30m[43mtest://foo.txt|| file foo.txt                                                   [m[14;1Htest://bar.txt|| file bar.txt
test://baz.txt|| file baz.txt
test://quux.txt|| file quux.txt
test://shmoo.txt|| file shmoo.txt[17;34H[K[18;1Htest://spam.txt|| file spam.txt[18;32H[K[19;1Htest://eggs.txt|| file eggs.txt
[1m[34m~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[1m[7m[Location List]                                                                 [m[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h2[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[1;1Hbar[12;1H[1m[7mtest://bar.txt [RO]                                                             [m[13;1Htest://foo.txt|| file foo.txt[13;30H[K[14;1H[30m[43mtest://bar.txt|| file bar.txt                                                   [m[23;1H[7m[Location List][m[1m[7m [m[7m                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;1H[7mtest://bar.txt [RO][m[1m[7m [m[7m                                                             [m[23;1H[1m[7m[Location List]                                                                 [14;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h3[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[1;3Hz[12;1H[1m[7mtest://baz.txt [RO]                                                             [m[14;1Htest://bar.txt|| file bar.txt[14;30H[K[15;1H[30m[43mtest://baz.txt|| file baz.txt                                                   [m[23;1H[7m[Location List][m[1m[7m [m[7m                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;1H[7mtest://baz.txt [RO][m[1m[7m [m[7m                                                             [m[23;1H[1m[7m[Location List]                                                                 [15;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h4[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[1;1Hquux[12;1H[1m[7mtest://quux.txt [RO]                                                            [m[15;1Htest://baz.txt|| file baz.txt[15;30H[K[16;1H[30m[43mtest://quux.txt|| file quux.txt                                                 [m[23;1H[7m[Location List][m[1m[7m [m[7m                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet numberOfWindowsOpen = winnr('$')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd n[?25l[1;1H[K[6;1H[1m[7m[No Name]                                                                       [m[7;1Hquux[7;5H[K[12;1H[7mtest://quux.txt [RO][m[1m[7m [m[7m                                                            [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd K[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hb test.out[?25l"test.out" 4 lines, 117 characters[2;1HTest A:[2;8H[K[3;1H  - file name displayed: test://bar.txt[3;40H[K[4;1H  - quickfix claims that the file name displayed is: test://bar.txt[4;68H[K[6;1H[1m[7mtest.out]  [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "Test B:")[?25l[5;1HTest B:[5;8H[K[6;10H[1m[7m[+][1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "  - number of window open: " . numberOfWindowsOpen)[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" 6 lines, 154 characters written[6;10H[1m[7m    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd o[?25l[6;1H  - number of window open: 2[6;29H[K[7;1H[1m[34m~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hb 1[?25l"test96.in" 142 lines, 3330 characters[1;1H:exe "normal \<CR>"
:let numberOfWindowsOpen = winnr('$')
:wincmd n[3;10H[K[4;1H:wincmd K[4;10H[K[5;1H:b test.out
:call append(line('$'), "Test B:")
:call append(line('$'), "  - number of window open: " . numberOfWindowsOpen)[7;77H[K[8;1H:w[8;3H[K[9;1H:wincmd o[9;10H[K[10;1H:b 1[10;5H[K[11;1HENDTEST[11;8H[K[12;1H[K[13;1HTest C:[13;8H[K[14;1HSTARTTEST[14;10H[K[15;1H:lrewind[15;9H[K[16;1H:lopen[16;7H[K[17;1H:" Let's move the location list window to the top to check whether it (the first[18;1H:" window found) will be reused when we try to open new windows:[18;65H[K[19;1H:wincmd K[19;10H[K[20;1H:2[20;3H[K[21;1H:exe "normal \<CR>"[21;20H[K[22;1H:wincmd p[22;10H[K[23;1H:3[23;3H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H27 lines, 677 characters written[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[15;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:4
:exe "normal \<CR>"
:1wincmd w
:let locationListWindowBufType = &buftype
:2wincmd w
:let bufferName = expand("%")
:wincmd n
:wincmd K
:b test.out
:let bufferName = substitute(bufferName, '\\', '/', 'g')
:call append(line('$'), "Test C:")
:call append(line('$'), "  - 'buftype' of the location list window: " . locationn[13;1HListWindowBufType)
:call append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName)[15;1H:w
:wincmd o
:b 1
ENDTEST

STARTTEST
:qa
ENDTEST[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlrewind[?25lNo matching autocommands
(1 of 7): file foo.txt
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlopen[?25l[1;1H[2L[1;1Hfoo
[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[7mtest://foo.txt [RO]                                                             [m[13;1H[30m[43mtest://foo.txt|| file foo.txt                                                   [m[14;1Htest://bar.txt|| file bar.txt[14;30H[K[15;1Htest://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
[1m[34m~                                                                               [21;1H~                                                                               [22;1H~                                                                               [m[23;1H[1m[7m[Location List]                                                                 [m[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" Let's move the location list window to the top to check whether it (the firs
[23;80Ht[24;1H[?25l[1;1H[L[1;1Hfoo[24;1H[K[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25h" window found) will be reused when we try to open new windows:[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd K[?25l[1;1H[30m[43mtest://foo.txt|| file foo.txt                                                   [m[2;1Htest://bar.txt|| file bar.txt[2;30H[K[3;1Htest://baz.txt|| file baz.txt[3;30H[K[4;1Htest://quux.txt|| file quux.txt[4;32H[K[5;1Htest://shmoo.txt|| file shmoo.txt[5;34H[K[6;1Htest://spam.txt|| file spam.txt[6;32H[K[7;1Htest://eggs.txt|| file eggs.txt[7;32H[K[11;1H[1m[7m[Location List]                                                                 [m[12;1Hfoo[12;4H[K[13;1H[1m[34m~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [m[23;1H[7mtest://foo.txt [RO]                                                             [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h2[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[1;1Htest://foo.txt|| file foo.txt[1;30H[K[2;1H[30m[43mtest://bar.txt|| file bar.txt                                                   [m[11;1H[7m[Location List][m[1m[7m [m[7m                                                                 [m[12;1Hbar[23;1H[1m[7mtest://bar.txt [RO]                                                             [12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[11;1H[1m[7m[Location List]                                                                 [m[23;1H[7mtest://bar.txt [RO][m[1m[7m [m[7m                                                             [2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h3[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[2;1Htest://bar.txt|| file bar.txt[2;30H[K[3;1H[30m[43mtest://baz.txt|| file baz.txt                                                   [m[11;1H[7m[Location List][m[1m[7m [m[7m                                                                 [m[12;3Hz[23;1H[1m[7mtest://baz.txt [RO]                                                             [12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[11;1H[1m[7m[Location List]                                                                 [m[23;1H[7mtest://baz.txt [RO][m[1m[7m [m[7m                                                             [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h4[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe "normal \<CR>"[?25lNo matching autocommands[3;1Htest://baz.txt|| file baz.txt[3;30H[K[4;1H[30m[43mtest://quux.txt|| file quux.txt                                                 [m[11;1H[7m[Location List][m[1m[7m [m[7m                                                                 [m[12;1Hquux[23;1H[1m[7mtest://quux.txt [RO]                                                            [12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h1wincmd w[?25l[11;1H[1m[7m[Location List]                                                                 [m[23;1H[7mtest://quux.txt [RO][m[1m[7m [m[7m                                                            [4;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet locationListWindowBufType = &buftype[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h2wincmd w[?25l[11;1H[7m[Location List][m[1m[7m [m[7m                                                                 [m[23;1H[1m[7mtest://quux.txt [RO]                                                            [12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet bufferName = expand("%")[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd n[?25l[12;1H[K[17;1H[1m[7m[No Name]                                                                       [m[18;1Hquux[18;5H[K[23;1H[7mtest://quux.txt [RO][m[1m[7m [m[7m                                                            [12;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd K[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [m[6;1H[1m[7m[No Name]                                                                       [m[7;8Hbar.txt|| file bar.tx[7;30H[K[8;1Htest://baz.txt|| file baz.txt[8;30H[K[9;1H[30m[43mtest://quux.txt|| file quux.txt                                                 [m[10;1Htest://shmoo.txt|| file shmoo.txt[10;34H[K[11;1Htest://spam.txt|| file spam.txt[11;32H[K[12;1Htest://eggs.txt|| file eggs.txt[17;1H[7m[Location List]                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hb test.out[?25l"test.out" 6 lines, 154 characters[2;1HTest A:[2;8H[K[3;1H  - file name displayed: test://bar.txt[3;40H[K[4;1H  - quickfix claims that the file name displayed is: test://bar.txt[4;68H[K[5;1HTest B:[5;8H[K[6;1H[1m[7mtest.out]  [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet bufferName = substitute(bufferName, '\\', '/', 'g')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "Test C:")[?25l[6;10H[1m[7m[+][1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), "  - 'buftype' of the location list window: " . locatio
[23;80Hn[24;1HListWindowBufType)[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName
[23;80H)[24;1H[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw[?25l"test.out" 9 lines, 270 characters written[6;10H[1m[7m    [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd o[?25l[27m[m[H[2J[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
[1m[34m~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hb 1[?25l"test96.in" 142 lines, 3330 characters[1;1H:4
:exe "normal \<CR>"
:1wincmd w[3;11H[K[4;1H:let locationListWindowBufType = &buftype[4;42H[K[5;1H:2wincmd w
:let bufferName = expand("%")
:wincmd n
:wincmd K[8;10H[K[9;1H:b test.out[9;12H[K[10;1H:let bufferName = substitute(bufferName, '\\', '/', 'g')[10;57H[K[11;1H:call append(line('$'), "Test C:")[11;35H[K[12;1H:call append(line('$'), "  - 'buftype' of the location list window: " . locationn[13;1HListWindowBufType)[13;19H[K[14;1H:call append(line('$'), "  - buffer displayed in the 2nd window: " . bufferName)[15;1H:w[15;3H[K[16;1H:wincmd o[16;10H[K[17;1H:b 1[17;5H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1HSTARTTEST[20;10H[K[21;1H:qa[21;4H[K[22;1HENDTEST[22;8H[K[23;1H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[20;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H1 line, 4 characters written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[21;1H[?12l[?25h[?25l


/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa[?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test97.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test97.in" 23 lines, 483 characters[1;1HTest whether glob()/globpath() return correct results with certain escaped
characters.

STARTTEST
:so small.vim
:" make sure glob() doesn't use the shell
:set shell=doesnotexist
:" consistent sorting of file names
:set nofileignorecase
:e test.out
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:w! Xxx{
:w! Xxx\$
:$put =glob('Xxx\{')
:$put =glob('Xxx\$')
:"
:$put =string(globpath('sautest/autoload', '*.vim'))
:$put =string(globpath('sautest/autoload', '*.vim', 0, 1))
:w
:qa!
ENDTEST[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest whether glob()/globpath() return correct results with certain escaped[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[4;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 17 lines, 376 characters written[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[5;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" make sure glob() doesn't use the shell[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset shell=doesnotexist[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" consistent sorting of file names[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nofileignorecase[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he test.out[?25l"test.out" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =glob('Xxx\{')[?25l[2;1H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =glob('Xxx\$')[?25l[3;1H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! Xxx{[?25l
Cannot execute shell doesnotexist
[m
E79: Cannot expand wildcards
"Xxx{" [New File] 3 lines, 3 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hw! Xxx\$[?25l"Xxx$" [24;8H[K[24;8H[New File] 3 lines, 3 characters written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h$put =glob('Xxx\{')[?25l[27m[m[H[2J[4;1HXxx{
[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [4;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h$put =glob('Xxx\$')[?25l[5;1HXxx$[5;5H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(globpath('sautest/autoload', '*.vim'))[?25l[6;1H'sautest/autoload/Test104.vim[6;30H[K[7;1Hsautest/autoload/footest.vim'[7;30H[K[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =string(globpath('sautest/autoload', '*.vim', 0, 1))[?25l[8;1H['sautest/autoload/Test104.vim', 'sautest/autoload/footest.vim'][8;65H[K[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw[?25l"test.out" [New File] 8 lines, 138 characters written[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf 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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test98.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test98.in" 43 lines, 908 characters[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.[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for 'scrollbind' causing an unexpected scroll of one of the windows.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[2;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 35 lines, 791 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[3;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[16M[1;24r[8;1H: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(too[20;1HpLineLeft - topLineRight))
:w! test.out
:brewind
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" We don't want the status line to cause problems:[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset laststatus=0[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:totalLines = &lines * 20[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet middle = g:totalLines / 2[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd n[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd o[?25l[12;1H[1m[34m~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hfor i in range(1, g:totalLines)[?25l
:  [?12l[?25h:    call setline(i, 'LINE ' . i)
[?25l:  [?12l[?25h:endfor[1;1H[2L[?25l[1;1HLINE 1
LINE 2
LINE 3[3;7H[K[4;1HLINE 4[4;7H[K[5;1HLINE 5[5;7H[K[6;1HLINE 6[6;7H[K[7;1HLINE 7[7;7H[K[8;1HLINE 8[8;7H[K[9;1HLINE 9[9;7H[K[10;1HLINE 10[10;8H[K[11;1HLINE 11[11;8H[K[12;1HLINE 12[12;8H[K[13;1HLINE 13[13;8H[K[14;1HLINE 14[14;8H[K[15;1HLINE 15[15;8H[K[16;1HLINE 16[16;8H[K[17;1HLINE 17[17;8H[K[18;1HLINE 18[18;8H[K[19;1HLINE 19[19;8H[K[20;1HLINE 20[20;8H[K[21;1HLINE 21[21;8H[K[22;1HLINE 22[22;8H[K[23;1HLINE 23[23;8H[K[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hexe string(middle)[?25l[27m[m[H[2J[1;1HLINE 229
LINE 230
LINE 231
LINE 232
LINE 233
LINE 234
LINE 235
LINE 236
LINE 237
LINE 238
LINE 239
LINE 240
LINE 241
LINE 242
LINE 243
LINE 244
LINE 245
LINE 246
LINE 247
LINE 248
LINE 249
LINE 250
LINE 251[12;1H[?12l[?25h[?25l[24;1H:[?12l[?25hnormal zt[?25l[1;23r[1;1H[11M[1;24r[13;1HLINE 252
LINE 253
LINE 254
LINE 255
LINE 256
LINE 257
LINE 258
LINE 259
LINE 260
LINE 261
LINE 262[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hnormal M[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25haboveleft vert new[?25l[1;1H        [32C[7m|[2;41H|[3;41H|[4;41H|[5;41H|[6;41H|[7;41H|[8;41H|[9;41H|[10;41H|[11;41H|[12;41H|[13;41H|[14;41H|[15;41H|[16;41H|[17;41H|[18;41H|[19;41H|[20;41H|[21;41H|[22;41H|[23;41H|[m[2;1H[1m[34m~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       
~                                       [m[1;42HLINE 240[2;42HLINE 241[3;42HLINE 242[4;42HLINE 243[5;42HLINE 244[6;42HLINE 245[7;42HLINE 246[8;42HLINE 247[9;42HLINE 248[10;42HLINE 249[11;42HLINE 250[12;42HLINE 251[13;42HLINE 252[14;42HLINE 253[15;42HLINE 254[16;42HLINE 255[17;42HLINE 256[18;42HLINE 257[19;42HLINE 258[20;42HLINE 259[21;42HLINE 260[22;42HLINE 261[23;42HLINE 262[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor i in range(1, g:totalLines)[?25l
:  [?12l[?25h:    call setline(i, 'line ' . i)
[?25l:  [?12l[?25h:endfor[1;1H[2L[?25l[1;1Hline 1[34C[7m|[m
line 2[34C[7m|[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                                 [1;42HLINE 240[2;42HLINE 241[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hexe string(middle)[?25l[1;6H229[2;7H30[3;6H231[4;6H232[5;6H233[6;6H234[7;6H235[8;6H236[9;6H237[10;6H238[11;6H239[12;6H240[13;6H241[14;6H242[15;6H243[16;6H244[17;6H245[18;6H246[19;6H247[20;7H48[21;7H49[22;7H50[23;7H51[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnormal zt[?25l[1;1Hline 240                                
line 241                                
line 242                                
line 243                                
line 244                                
line 245                                
line 246                                
line 247                                
line 248                                
line 249                                
line 250                                
line 251                                
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        [13;1Hline 252
line 253
line 254
line 255
line 256
line 257
line 258
line 259
line 260
line 261
line 262[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hnormal M[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Execute the following two command at once to reproduce the problem.[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetl scb | wincmd p[?25l[12;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetl scb[?25l[12;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd w[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet topLineLeft = line('w0')[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet topLineRight = line('w0')[?25l[12;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetl noscrollbind[?25l[12;42H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetl noscrollbind[?25l[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hq![?25l[1;1HLINE[1;41H[K[2;1HLINE[2;41H[K[3;1HLINE[3;41H[K[4;1HLINE[4;41H[K[5;1HLINE[5;41H[K[6;1HLINE[6;41H[K[7;1HLINE[7;41H[K[8;1HLINE[8;41H[K[9;1HLINE[9;41H[K[10;1HLINE[10;41H[K[11;1HLINE[11;41H[K[12;1HLINE[12;41H[K[13;1HLINE[13;41H[K[14;1HLINE[14;41H[K[15;1HLINE[15;41H[K[16;1HLINE[16;41H[K[17;1HLINE[17;41H[K[18;1HLINE[18;41H[K[19;1HLINE[19;41H[K[20;1HLINE[20;41H[K[21;1HLINE[21;41H[K[22;1HLINE[22;41H[K[23;1HLINE[23;41H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%del _[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall setline(1, 'Difference between the top lines (left - right): ' . string(t
[23;80Ho[24;1HpLineLeft - topLineRight))[?25l[1;1H[L[1;1HDifference between the top lines (left - right): 0[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 1 line, 51 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbrewind[?25l"test98.in" 43 lines, 908 characters[1;1H:normal M[1;10H[K[2;1H:" Execute the following two command at once to reproduce the problem.[2;71H[K[3;1H:setl scb | wincmd p[3;21H[K[4;1H:setl scb[4;10H[K[5;1H:wincmd w[5;10H[K[6;1H:let topLineLeft = line('w0')[6;30H[K[7;1H:wincmd p[7;10H[K[8;1H:let topLineRight = line('w0')[8;31H[K[9;1H:setl noscrollbind[9;19H[K[10;1H:wincmd p[10;10H[K[11;1H:setl noscrollbind[11;19H[K[12;1H:q![12;4H[K[13;1H:%del _[13;8H[K[14;1H:call setline(1, 'Difference between the top lines (left - right): ' . string(too[15;1HpLineLeft - topLineRight))[15;27H[K[16;1H:w! test.out[16;13H[K[17;1H:brewind[17;9H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1HSTARTTEST[20;10H[K[21;1H:qa![21;5H[K[22;1HENDTEST[22;8H[K[23;1H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[20;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H1 line, 5 characters written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[21;1H[?12l[?25h[?25l


/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test99.failed test.ok test.out X* viminfo
cp test99.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test99.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test99.in" 68 lines, 2601 characters[1;1HTests for regexp with multi-byte encoding and various magic settings.
Test matchstr() with a count and multi-byte chars.
See test44 for exactly the same test with re=1.

STARTTEST
:so mbyte.vim
:set nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo
:set re=2
/^1
/a*b\{2}c\+/e
x/\Md\*e\{2}f\+/e
x:set nomagic
/g\*h\{2}i\+/e
x/\mj*k\{2}l\+/e
x/\vm*n{2}o+/e
x/\V^aa$
x:set magic
/\v(a)(b)\2\1\1/e
x/\V[ab]\(\[xy]\)\1
x:" Now search for multi-byte without composing char
/à¸¡
x:" Now search for multi-byte with composing char
/à¸¡à¹[34m~H[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for regexp with multi-byte encoding and various magic settings.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[5;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 41 lines, 1362 characters written[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[6;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1Hx?.
x:let @w=':%s#comb[i]nations#Å[34m~S[mÌ[34m~D[má¹£Ì[34m~A[mmÌ¥Ì[34m~D[mÎ±Ì[34m~D[mÌ[34m~F[mÌ[34m~A[m#g'
:@w
:?^1?,$w! test.out
:e! test.out
G:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 0, 2) " ×[34m~Q[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \"..\", 0, 2) " ×[34m~Q[m×[34m~R[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 0, 0) " ×[34m~P[m
:put =matchstr(\"×[34m~P[m×[34m~Q[m×[34m~R[m×[34m~S[m\", \".\", 4, -1) " ×[34m~R[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 à¸«à¸¡à¹[34m~H[mx à¸­à¸¡x
a à¸­à¸¡x à¸«à¸¡à¹[34m~H[mx[12;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible encoding=utf-8 termencoding=latin1 viminfo+=nviminfo[?25l[27m[m[H[2J[1;1Hx?.
x:let @w=':%s#comb[i]nations#¿¿m¿#g'
:@w
:?^1?,$w! test.out
:e! test.out
G:put =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿
:put =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿
:put =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿
:put =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿
:w!
:qa!
ENDTEST

1 a aa abb abbccc
2 d dd dee deefff
3 g gg ghh ghhiii
4 j jj jkk jkklll
5 m mm mnn mnnooo
6 x ^aa$ x
7 (a)(b) abbaa
8 axx [ab]xx
9 ¿¿x ¿¿x
a ¿¿x ¿¿x[13;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset re=2[?25l[13;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h^1[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25ha*b\{2}c\+/e[?25l[14;17H[?12l[?25h[?25l[14;17H[K[14;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\Md\*e\{2}f\+/e[?25l[15;17H[?12l[?25h[?25l[15;17H[K[15;16H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nomagic[?25l[15;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hg\*h\{2}i\+/e[?25l[16;17H[?12l[?25h[?25l[16;17H[K[16;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\mj*k\{2}l\+/e[?25l[17;17H[?12l[?25h[?25l[17;17H[K[17;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\vm*n{2}o+/e[?25l[18;17H[?12l[?25h[?25l[18;17H[K[18;16H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\V^aa$[?25l[19;5H[?12l[?25h[?25laa$ x[19;10H[K[19;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset magic[?25l[19;5H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\v(a)(b)\2\1\1/e[?25l[20;14H[?12l[?25h[?25l[20;14H[K[20;13H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\V[ab]\(\[xy]\)\1[?25l[21;7H[?12l[?25h[?25lab]x[21;12H[K[21;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Now search for multi-byte without composing char[?25l[21;7H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿[?25l[22;8H[?12l[?25h[?25lx[22;9H[K[22;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Now search for multi-byte with composing char[?25l[22;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿¿[?25l[23;8H[?12l[?25h[?25lx[23;9H[K[23;8H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" find word by change of word class[?25l[23;8H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h¿?\<¿?¿?\>¿?[?25l[1;23r[23;1H
[1;24r[23;1Hb ¿?¿?¿?¿?[24;1H[K[23;3H[?12l[?25h[?25l¿?¿?¿?[23;9H[K[23;3H[?12l[?25h[?25l
:[?12l[?25h" Test \%u, [\u] and friends[?25l[23;3H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h\%u20ac[?25l[1;23r[23;1H
[1;24r[23;1Hc x ¬¿x[24;1H[K[23;6H[?12l[?25h[?25lx[23;7H[K[23;6H[?12l[?25h[?25l
/[?12l[?25h[\u4f7f\u5929]\+[?25l[1;23r[23;1H
[1;24r[23;1Hd ¿?¿?x[24;1H[K[23;3H[?12l[?25h[?25l¿?x [23;7H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h\%U12345678[?25l[1;23r[23;1H
[1;24r[23;1He ¿y[24;1H[K[23;3H[?12l[?25h[?25ly[23;4H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h[\U1234abcd\u1234\uabcd][?25l[1;23r[23;1H
[1;24r[23;1Hf ¿z[24;1H[K[23;3H[?12l[?25h[?25lz[23;4H[K[23;3H[?12l[?25h[?25l
/[?12l[?25h\%d21879b[?25l[1;23r[23;1H
[1;24r[23;1Hg a¿?bb[24;1H[K[23;4H[?12l[?25h[?25lbb[23;6H[K[23;4H[?12l[?25h[?25l
/[?12l[?25h [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=
[23;80H][24;1H]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R
[23;80H=[24;1H]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e[?25l[22;1H[32mPress ENTER or type command to continue[m[22;40H[K[23;1H[K[24;1H[K[?12l[?25h[1;1H[2L[?25l[1;1H:w!
:qa!
ENDTEST[3;8H[K[4;1H[K[5;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$ x[10;10H[K[11;1H7 (a)(b) abba[11;14H[K[12;1H8 axx ab]xx[12;12H[K[13;1H9 ¿¿x ¿x[13;9H[K[14;1Ha ¿¿x ¿x[14;10H[K[15;1Hb ¿?¿?¿?[15;9H[K[16;1Hc x ¬x[16;7H[K[17;1Hd ¿?[17;7H[K[18;1He y [18;5H[K[19;1Hf z[19;5H[K[20;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [22;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [23;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿¿[24;1H[K[23;38H[?12l[?25h[?25l[23;38H[K[23;37H[?12l[?25h[?25l
/[?12l[?25h [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=
[23;80H][24;1H]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r
[23;80H=[24;1H]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e[?25l[22;1H[32mPress ENTER or type command to continue[m[22;40H[K[23;1H[K[24;1H[K[?12l[?25h[1;1H[2L[?25l[2;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$ x[7;10H[K[8;1H7 (a)(b) abba[8;14H[K[9;1H8 axx ab]xx[9;12H[K[10;1H9 ¿¿x ¿x[10;9H[K[11;1Ha ¿¿x ¿x[11;10H[K[12;1Hb ¿?¿?¿?[12;9H[K[13;1Hc x ¬x[13;7H[K[14;1Hd ¿?[14;7H[K[15;1He y [15;5H[K[16;1Hf z[16;5H[K[17;1Hg abb
h AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [19;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [20;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿
i aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ [22;1H j¿¿ k¿¿¿¿ l¿¿¿¿¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúû [23;1Hü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿¿¿¿ z¿¿¿¿¿¿[24;1H[K[23;43H[?12l[?25h[?25l[23;43H[K[23;42H[?12l[?25h[?25l
:[?12l[?25h" Test backwards search from a multi-byte char[?25l[23;42H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25hx[?25l[1;23r[23;1H
[1;24r[23;1Hj 0123¿x[24;1H[K[23;8H[?12l[?25h[?25l[23;8H[K[23;7H[?12l[?25h[?25l
?[?12l[?25h.[?25l[23;6H[?12l[?25h[?25l¿[23;7H[K[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet @w=':%s#comb[i]nations#¿¿¿¿mmm¿¿¿[1C#g'[?25l[23;6H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h@w[?25l[1;23r[23;1H
[1;24r[23;1Hk ¿¿m¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h?^1?,$w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 20L, 1011C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25he! test.out[?25l"test.out" [24;12H[K[24;12H20L, 1011C[1;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$ x[6;10H[K[7;1H7 (a)(b) abba
8 axx ab]xx
9 ¿¿x ¿
a ¿¿x ¿x
b ¿?¿?¿?
c x ¬x
d ¿?x
e y
f z[15;4H[K[16;1Hg abb[16;6H[K[17;1Hh AÀÁÂÃÄÅ¿¿¿¿¿¿¿ B¿¿ CÇ¿¿¿¿ D¿¿¿¿¿ EÈÉÊË¿¿¿¿¿¿¿ F¿ G¿¿¿¿¿¿¿¿ H¿¿¿¿¿ IÌÍÎÏ¿¿¿¿¿¿¿ [18;1H J¿ K¿¿¿¿ L¿¿¿¿¿¿ M¿¿ NÑ¿¿¿¿¿ OÒÓÔÕÖØ¿¿¿¿¿¿¿¿ P¿¿ Q R¿¿¿¿¿ S¿¿¿¿¿ T¿¿¿¿¿ UÙÚÛÜ¿¿ [19;1H¿¿¿¿¿¿¿ V¿ W¿¿¿¿¿ X¿¿ YÝ¿¿¿¿¿¿ Z¿¿¿¿¿[19;38H[K[20;1Hi aàáâãäå¿¿¿¿¿¿¿ b¿¿ cç¿¿¿¿ d¿¿¿¿¿ eèéêë¿¿¿¿¿¿¿ f¿ g¿¿¿¿¿¿¿¿ h¿¿¿¿¿¿ iìíîï¿¿¿¿¿¿ [21;1H j¿¿ k¿¿¿¿ l¿¿¿¿¿¿ m¿¿ nñ¿¿¿¿¿¿ oòóôõöø¿¿¿¿¿¿¿¿ p¿¿ q r¿¿¿¿¿ s¿¿¿¿¿ t¿¿¿¿¿¿ uùúû [22;1Hü¿¿¿¿¿¿¿¿¿ v¿ w¿¿¿¿¿¿ x¿¿ yýÿ¿¿¿¿¿¿ z¿¿¿¿¿
j 012¿[1;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hk ¿¿m¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 2) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \"..\", 0, 2) " ¿¿[?25l[1;23r[23;1H
[1;24r[23;1H¿¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 0, 0) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hput =matchstr(\"¿¿¿¿\", \".\", 4, -1) " ¿[?25l[1;23r[23;1H
[1;24r[23;1H¿[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hw![?25l"test.out" 24L, 1025C written[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test100.failed test.ok test.out X* viminfo
cp test100.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test100.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test100.in" 50 lines, 1704 characters[1;1HTests for 'undolevel' and 'lispwords' settings being global-local

STARTTEST
:so small.vim
:set nocompatible viminfo+=nviminfo ul=5
:fu! FillBuffer()
  :for i in range(1,13)
    :put=i
    :exe "setg ul=" . &g:ul
  :endfor
:endfu
:fu! UndoLevel()
  :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | ee[14;1Hchon ' local' |redir end
  :$put a
:endfu
:new one
:0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default))[19;1H'
:call FillBuffer()
:call feedkeys(":earlier 10\n", 't')
:call UndoLevel()
:%w! test.out[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for 'undolevel' and 'lispwords' settings being global-local[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 45 lines, 1618 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:new three
:setglobal ul=50
:1put ='global value should be changed to 50'
:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (defauu[5;1Hlt)'
:call UndoLevel()
:%w >> test.out
:"sleep 10
:"
:" Testing 'lispwords'
:"
:setglobal lispwords=foo,bar,baz
:setlocal lispwords-=foo | setlocal lispwords+=quux
:redir >> test.out | echon "\nTesting 'lispwords' local value" | setglobal lispww[15;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:setlocal lispwords<
:redir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lispww[18;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:qa!
ENDTEST

[1m[34m~                                                                               [23;1H~                                                                               [20;1H[?12l[?25h
[?25l


[m:so! Xdotest[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nocompatible viminfo+=nviminfo ul=5[?25l[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfu! FillBuffer()[?25l
:  [?12l[?25h  :for i in range(1,13)
[?25l:    [?12l[?25h    :put=i
[?25l:    [?12l[?25h    :exe "setg ul=" . &g:ul
[?25l:    [?12l[?25h  :endfor
[?25l:  [?12l[?25h:endfu[1;1H[5L[?25l[1;1H:new three
:setglobal ul=50
:1put ='global value should be changed to 50'
:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (defauu[5;1Hlt)'[24;1H[K[21;1H[?12l[?25h[?25l


:[?12l[?25hfu! UndoLevel()[?25l
:  [?12l[?25h  :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels?
| echon ' local' |redir end
[?25l:  [?12l[?25h  :$put a
[?25l:  [?12l[?25h:endfu[1;1H[4L[?25l[1;1H:new three
:setglobal ul=50
:1put ='global value should be changed to 50'
:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (defauu[5;1Hl[24;1H[K[21;1H[?12l[?25h[?25l


:[?12l[?25hnew one[?25l"one" [New File][1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mone                                                                             [m[13;5Hglobal lispwords=foo,bar,baz[13;33H[K[14;2Hsetlocal lispwords-=foo | setlocal lispwords+=quux[14;52H[K[15;1H:redir >> test.out | echon "\nTesting 'lispwords' local value" | setglobal lispww[16;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:setlocal lispwords<[17;22H[K[18;1H:redir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lispww[19;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:qa![20;5H[K[21;1HENDTEST[22;1H[K[23;1H[7mtest100.in                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default
[23;80H)[24;1H'[?25l[1;1H[L[1;1HONE: expecting global undolevels: 5, local undolevels: -123456 (default)[2;1H[K[12;5H[1m[7m[+][m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall FillBuffer()[?25l[1;1H3[1;2H[K[2;1H4
5[3;2H[K[4;1H6[4;2H[K[5;1H7[5;2H[K[6;1H8[6;2H[K[7;1H9[7;2H[K[8;1H10[8;3H[K[9;1H11[9;3H[K[10;1H12[10;3H[K[11;1H13[11;3H[K[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys(":earlier 10\n", 't')[?25l[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:earlier 106 fewer lines; before #8  0 seconds ago[6;1H[K[7;1H[1m[34m~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [5;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall UndoLevel()[?25l[24;1H[K[24;1H  undolevels=5 global
  undolevels=-123456 local
3 more lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h%w! test.out[?25l"test.out" [24;12H[K[24;12H[New] 12L, 138C written
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hnew two[?25l"two" [New File][27m[m[H[2J[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [m[8;1H[1m[7mtwo                                                                             [m[9;1H6
7[13;3Hundolevels=5 global
  undolevels=-123456 local
[1m[34m~                                                                               [m[16;1H[7mone [+]                                                                         [m[17;1H:setlocal lispwords<
:redir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lispww[19;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end
:qa!
ENDTEST

[7mtest100.in                                                                      [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25h0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 1
[23;80H0[24;1H (afterwards)'[?25l[1;1H[L[1;1HTWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterww[2;1Hards)[2;6H[K[3;1H[K[8;5H[1m[7m[+][m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hsetlocal ul=2[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall FillBuffer()[?25l[1;1H8[1;2H[K[2;1H9[2;2H[K[3;1H10
11[4;3H[K[5;1H12[5;3H[K[6;1H13[6;3H[K[7;1H[K[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall feedkeys(":earlier 10\n", 't')[?25l[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:earlier 103 fewer lines; before #12  0 seconds ago[4;1H[K[5;1H[1m[34m~                                                                               [6;1H~                                                                               [7;1H~                                                                               [3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall UndoLevel()[?25l[24;1H[K[24;1H  undolevels=5 global
  undolevels=2 local
3 more lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsetlocal ul=10[?25l[1;1H[3L[1;1H8
9
10[5;1H[K[6;1H  undolevels=5 global[6;22H[K[7;1H  undolevels=2 local[7;21H[K[24;3H[K[7;3H[?12l[?25h[?25l[24;1H:[?12l[?25hcall UndoLevel()[?25l[24;1H[K[24;1H  undolevels=5 global
  undolevels=10 local
3 more lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h%w >> test.out[?25l"test.out" [24;12H[K[24;12H18L, 197C appended
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[1;1H[4L[3;3Hundolevels=5 global
  undolevels=2 local[7;14H10 local
[7mtwo [+][m[1m[7m [m[7m                                                                         [m[16;1H[1m[7mone [+]                                                                         [m[24;3H[K[14;3H[?12l[?25h[?25l[24;1H:[?12l[?25hredir >>test.out | echo "global value shouldn't be changed and still be 5!" | 
[23;80He[24;1Hcho 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|
[23;80H:[24;1Hsetglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local'
|echo "" |redir end[?25l[21;1Hglobal value shouldn't be changed and still be 5![21;50H[K[22;1H[K[23;1H[K[24;1H[K[22;1HONE: expecting global undolevels: 5, local undolevels: -123456 (default)
  undolevels=5 global
  undolevels=-123456 local

[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hnew three[?25l"three" [New File][27m[m[H[2J[1;3Hundolevels=5 global
  undolevels=2 local

  undolevels=5 global
  undolevels=10 local
[7mtwo [+]                                                                         [m[8;1H[1m[34m~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7mthree                                                                           [m[13;1H7[16;3Hundolevels=5 global
  undolevels=-123456 local
[7mone [+]                                                                         [m[19;1H:qa!
ENDTEST

[1m[34m~                                                                               [m[23;1H[7mtest100.in                                                                      [7;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hsetglobal ul=50[?25l[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h1put ='global value should be changed to 50'[?25l[8;1Hglobal value should be changed to 50[8;37H[K[12;7H[1m[7m[+][8;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (defa
[23;80Hu[24;1Hlt)'[?25l[1;1H[L[1;3Hundolevels=5 global[9;1HTHREE: expecting global undolevels: 50, local undolevels: -123456 (default)[9;76H[K[24;1H[K[9;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall UndoLevel()[?25l[24;1H[K[24;1H  undolevels=50 global
  undolevels=-123456 local
3 more lines
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h%w >> test.out[?25l"test.out" [24;12H[K[24;12H6L, 165C appended
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h"sleep 10[?25l[1;1H[4L[1;3Hundolevels=5 global
  undolevels=2 local

  undolevels=5 global[7;11r[11;1H
[1;24r[9;1H[K[10;1H  undolevels=50 global[10;23H[K[11;3Hundolevels=-123456 local[24;3H[K[11;3H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[11;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Testing 'lispwords'[?25l[11;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[11;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetglobal lispwords=foo,bar,baz[?25l[11;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetlocal lispwords-=foo | setlocal lispwords+=quux[?25l[11;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredir >> test.out | echon "\nTesting 'lispwords' local value" | setglobal lisp
[23;80Hw[24;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end[?25l[23;1H[K[24;1H[K[24;1HTesting 'lispwords' local value
  lispwords=foo,bar,baz
  lispwords=bar,baz,quux
bar,baz,quux

[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hsetlocal lispwords<[?25l[1;1H[6L[1;3Hundolevels=5 global
  undolevels=2 local

  undolevels=5 global
  undolevels=10 local
[7mtwo [+]                                                                         [11;3H[?12l[?25h[?25l[24;1H[m:[?12l[?25hredir >> test.out | echon "\nTesting 'lispwords' value reset" | setglobal lisp
[23;80Hw[24;1Hords? | setlocal lispwords? | echo &lispwords . "\n" | redir end[?25l[23;1H[K[24;1H[K[24;1HTesting 'lispwords' value reset
  lispwords=foo,bar,baz
  lispwords=foo,bar,baz
foo,bar,baz

[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test101.failed test.ok test.out X* viminfo
cp test101.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test101.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test101.in" 45 lines, 796 characters[1;1HTest for v:hlsearch     vim: set ft=vim :

STARTTEST
:" Last abc: Q
:so small.vim
:new
:call setline(1, repeat(['aaa'], 10))
:set hlsearch nolazyredraw
:let r=[]
:command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])
/aaa
:AddR
:nohlsearch
:AddR
:let v:hlsearch=1
:AddR
:let v:hlsearch=0
:AddR
:set hlsearch
:AddR
:let v:hlsearch=0
:AddR
n:AddR[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for v:hlsearch     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 39 lines, 727 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:AddR
n:AddR
:let v:hlsearch=0
:AddR
/
:AddR
:let r1=r[0][0]
:" I guess it is not guaranteed that screenattr outputs always the same charactee[9;1Hr
:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')
:try
:   let v:hlsearch=[]
:catch
:   call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
:endtry
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Last abc: Q[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;2Hendtry[13;8H[K[14;2Hbwipeout!
:$put=r[15;8H[K[16;2Hcall garbagecollect(1)
:"[17;3H[K[18;2H/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:[19;24H[K[20;2Hcall getchar()[20;17H[K[21;1HENDTEST[21;8H[K[22;1H[K[23;1H[7mtest101.in                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall setline(1, repeat(['aaa'], 10))[?25l[1;1Haaa
aaa[2;4H[K[3;1Haaa[3;4H[K[4;1Haaa[4;4H[K[5;1Haaa[5;4H[K[6;1Haaa[6;4H[K[7;1Haaa[7;4H[K[8;1Haaa[8;4H[K[9;1Haaa[9;4H[K[10;1Haaa[10;4H[K[12;11H[1m[7m[+][1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset hlsearch nolazyredraw[?25l[21;1H[30m[43mENDTEST[1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet r=[][?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcommand -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch])[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25haaa[?25l[1;1H[30m[43maaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[m[21;1HENDTEST[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnohlsearch[?25l[1;1Haaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:hlsearch=1[?25l[1;1H[30m[43maaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:hlsearch=0[?25l[1;1Haaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset hlsearch[?25l[1;1H[30m[43maaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[2;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:hlsearch=0[?25l[1;1Haaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hAddR[?25l[2;1H[?12l[?25h[?25l[24;1H/aaa[24;5H[K[24;1H[1;1H[30m[43maaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[3;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hAddR[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet v:hlsearch=0[?25l[1;1Haaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hAddR[?25l[3;1H[?12l[?25h[?25l[24;1H[K[24;1H/[?12l[?25h[?25l/aaa[1;1H[30m[43maaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa
aaa[4;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hAddR[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet r1=r[0][0][?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" I guess it is not guaranteed that screenattr outputs always the same charact
[23;80He[24;1Hr[?25l[1;1H[L[1;1H[30m[43maaa[m[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcall map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')[?25l[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:   let v:hlsearch=[]
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:   call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
[?25l:  [?12l[?25h:endtry[1;1H[4L[?25l[1;1H[30m[43maaa
aaa
aaa
aaa[m[24;1H[K[4;1H[?12l[?25h[?25l[24;1H:[?12l[?25hbwipeout![?25l[1;1Hn:AddR
:let v:hlsearch=0
:AddR
/[4;2H[K[5;1H:AddR
:let r1=r[0][0]
:" I guess it is not guaranteed that screenattr outputs always the same charactee[8;1Hr[8;2H[K[9;1H:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")')
:try
:   let v:hlsearch=[][11;22H[K[12;1H:catch[12;7H[K[13;2H   call add(r, matchstr(v:exception,'^Vim(let):E\d\+:'))
:endtry[14;8H[K[15;2Hbwipeout!
:$put=r[16;8H[K[17;2Hcall garbagecollect(1)
:"[18;3H[K[19;2H/^start:/,$wq! test.out
:" vim: et ts=4 isk-=\:
:call getchar()
ENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put=r[?25l10 more lines[1;23r[1;1H[11M[1;24r[13;1Hstart:
1:highlighted
0:not highlighted
1:highlighted
0:not highlighted
1:highlighted
0:not highlighted
1:highlighted
0:not highlighted
1:highlighted
Vim(let):E706:[24;1H[K[24;1H10 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall garbagecollect(1)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start:/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 11 lines, 164 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test102.failed test.ok test.out X* viminfo
cp test102.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test102.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test102.in" 12 lines, 277 characters[1;1HTest if fnameescape is correct for special chars like !

STARTTEST
:%d
:let fname = 'Xspa ce'
:try | exe "w! " . fnameescape(fname) | put='Space' | endtry
:let fname = 'Xemark!'
:try | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry
:w! test.out
:qa!
ENDTEST

[1m[34m~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest if fnameescape is correct for special chars like ![24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 7 lines, 201 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[11;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%d[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet fname = 'Xspa ce'[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry | exe "w! " . fnameescape(fname) | put='Space' | endtry [?25l"Xspa ce" [24;12H[K[24;11H[New File] 0 lines, 0 characters written[2;1HSpace[2;6H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet fname = 'Xemark!'[?25l[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry[?25l"Xemark!" [24;12H[K[24;11H[New File] 2 lines, 7 characters written[3;1HExclamationMark[3;16H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 3 lines, 23 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test103.failed test.ok test.out X* viminfo
cp test103.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test103.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test103.in" 37 lines, 823 characters[1;1HTest for visual mode not being reset causing E315 error.
STARTTEST
:so small.vim
:enew
:let g:msg="Everything's fine."
:function! TriggerTheProblem()
:[7C" At this point there is no visual selection because :call reset it.
:[7C" Let's restore the selection:
:[7Cnormal gv
:[7C'<,'>del _
:[7Ctry
:[15Cexe "normal \<Esc>"
:[7Ccatch /^Vim\%((\a\+)\)\=:E315/
:[15Cechom 'Snap! E315 error!'
:[15Clet g:msg='Snap! E315 error!'
:[7Cendtry
:endfunction
:enew
:setl buftype=nofile
:call append(line('$'), 'Delete this line.')
:"
:"
:" NOTE: this has to be done by a call to a function because executing :del the[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for visual mode not being reset causing E315 error.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[2;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 29 lines, 723 characters written[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[3;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[10M[1;24r[14;1H:"[7Cex-way will require the colon operator which resets the visual mode thuu[15;1Hs
:"[7Cpreventing the problem:
:"
GV:call TriggerTheProblem()
:%del _
:call append(line('$'), g:msg)
:w! test.out
:brewind
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25henew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet g:msg="Everything's fine."[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! TriggerTheProblem()[?25l
:  [?12l[?25h:[34m^I[m" At this point there is no visual selection because :call reset it.
[?25l:  [?12l[?25h:[34m^I[m" Let's restore the selection:
[?25l:  [?12l[?25h:[34m^I[mnormal gv
[?25l:  [?12l[?25h:[34m^I[m'<,'>del _
[?25l:  [?12l[?25h:[34m^I[mtry
[?25l:    [?12l[?25h:[34m^I^I[mexe "normal \<Esc>"
[?25l:    [?12l[?25h:[34m^I[mcatch /^Vim\%((\a\+)\)\=:E315/
[?25l:    [?12l[?25h:[34m^I^I[mechom 'Snap! E315 error!'
[?25l:    [?12l[?25h:[34m^I^I[mlet g:msg='Snap! E315 error!'
[?25l:    [?12l[?25h:[34m^I[mendtry
[?25l:  [?12l[?25h:endfunction[1;1H[11L[?25l[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25henew[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsetl buftype=nofile[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), 'Delete this line.')[?25l[2;1HDelete this line.[2;18H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" NOTE: this has to be done by a call to a function because executing :del the[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"       ex-way will require the colon operator which resets the visual mode th
[23;80Hu[24;1Hs[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"       preventing the problem:[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[1;1H[?12l[?25h
[?25lD[7melete this line. [?12l[?25h[?25l[m[24;1H[K[24;1H:'<,'>[?12l[?25hcall TriggerTheProblem()[?25l[2;1H[1m[34m~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h%del _[?25l--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall append(line('$'), g:msg)[?25l[2;1HEverything's fine.[2;19H[K[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 2 lines, 20 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbrewind[?25l"test103.in" 37 lines, 823 characters[1;1H:[7Cendtry
:endfunction[2;14H[K[3;1H:enew[3;6H[K[4;1H:setl buftype=nofile[4;21H[K[5;1H:call append(line('$'), 'Delete this line.')[5;45H[K[6;1H:"[6;3H[K[7;1H:"[7;3H[K[8;1H:" NOTE: this has to be done by a call to a function because executing :del the[8;80H[K[9;1H:"       ex-way will require the colon operator which resets the visual mode thuu[10;1Hs[10;2H[K[11;1H:"       preventing the problem:[11;33H[K[12;1H:"[12;3H[K[13;1HGV:call TriggerTheProblem()[13;28H[K[14;1H:%del _[14;8H[K[15;1H:call append(line('$'), g:msg)[15;31H[K[16;1H:w! test.out[16;13H[K[17;1H:brewind[17;9H[K[18;1HENDTEST[18;8H[K[19;1H[K[20;1HSTARTTEST[20;10H[K[21;1H:qa![21;5H[K[22;1HENDTEST[22;8H[K[23;1H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H/^STARTTEST[20;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H1 line, 5 characters written[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[21;1H[?12l[?25h[?25l


/ENDTEST[24;10H[K[24;1H[22;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test104.failed test.ok test.out X* viminfo
cp test104.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test104.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test104.in" 30 lines, 698 characters[1;1HTests for :let.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:set runtimepath+=./sautest
:" Test to not autoload when assigning.  It causes internal error.
:try
:  let Test104#numvar = function('tr')
:  $put ='OK: ' . string(Test104#numvar)
:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  [16;1H== 1 ? "a" : "b"}']
:  try
:    redir => messages
:    execute 'let' letargs
:    redir END
:    $put ='OK:'
:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for :let.  vim: set ft=vim ts=8 :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 24 lines, 618 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[6M[1;24r[18;1H:    $put ='FAIL: ' . v:exception
:    redir END
:  endtry
:endfor
:/^Results/,$wq! test.out
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset runtimepath+=./sautest[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Test to not autoload when assigning.  It causes internal error.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:  let Test104#numvar = function('tr')
[?25l:  [?12l[?25h:  $put ='OK: ' . string(Test104#numvar)
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:  $put ='FAIL: ' . v:exception
[?25l:  [?12l[?25h:endtry[1;1H[5L[?25l[1;1H:catch
:  $put ='FAIL: ' . v:exception
:endtry
:let a = 1
:let b = 2
:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0  [7;1H== 1 ? "a" : "b"}']
:  try[8;7H[K[9;1H:    redir => messages
:    execute 'let' letargs[11;12HEND[11;15H[K[12;6H$put ='OK:'[12;17H[K[13;6H$put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
:  catch[14;9H[K[15;12H'FAIL: ' . v:exception[15;34H[K[16;4H  redir END
:  endtry[17;11H[K[18;2Hendfor[18;8H[K[19;2H/^Results/,$wq! test.out
ENDTEST[21;1H[K[22;1HResults of test104:
OK: function('tr')[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet a = 1[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet b = 2[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfor letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0
== 1 ? "a" : "b"}'][?25l[24;1H[K[24;1H:  [?12l[?25h:  try
[?25l:    [?12l[?25h:    redir => messages
[?25l:    [?12l[?25h:    execute 'let' letargs
[?25la[21C#1
b[21C#2
:    [?12l[?25h:    redir END
[?25l:    [?12l[?25h:    $put ='OK:'
[?25l:    [?12l[?25h:    $put =split(substitute(messages, '\n', '\0  ', 'g'), '\n')
[?25l:    [?12l[?25h:  catch
[?25l:    [?12l[?25h:    $put ='FAIL: ' . v:exception
[?25l:    [?12l[?25h:    redir END
[?25l:    [?12l[?25h:  endtry
[?25l:  [?12l[?25h:endfor
[?25lb[21C#2
b[21C#2
a[21C#1
a[21C#1
b[21C#2
[32mPress ENTER or type command to continue[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25h/^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 13 lines, 244 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test105.failed test.ok test.out X* viminfo
cp test105.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test105.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test105.in" 45 lines, 1700 characters[1;1HTest filename modifiers     vim: set ft=vim :

STARTTEST
:source small.vim
:%delete _
:set shell=sh
:set shellslash
:let tab="\t"
:command -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(ee[10;1Hxpr)))
:let $HOME=fnamemodify('.', ':p:h:h')
:Put fnamemodify('.',[14C':p'      )[-1:]
:Put fnamemodify('.',[14C':p:h'    )[-1:]
:Put fnamemodify('test.out',[7C':p'      )[-1:]
:Put fnamemodify('test.out',[7C':.'      )
:Put fnamemodify('../testdir/a',   ':.'      )
:Put fnamemodify('test.out',[7C':~'      )
:Put fnamemodify('../testdir/a',   ':~'      )
:Put fnamemodify('../testdir/a',   ':t'      )
:Put fnamemodify('.',[14C':p:t'    )
:Put fnamemodify('test.out',[7C':p:t'    )
:Put fnamemodify('test.out',[7C':p:e'    )
:Put fnamemodify('test.out',[7C':p:t:e'  )[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest filename modifiers     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 40 lines, 1634 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:Put fnamemodify('abc.fb2.tar.gz', ':r:r'    )
:Put fnamemodify('abc.fb2.tar.gz', ':r:r:r'  )
:Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\11[4;1H', '')
:Put fnamemodify('abc.fb2.tar.gz', ':e'      )
:Put fnamemodify('abc.fb2.tar.gz', ':e:e'    )
:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e'  )
:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e')
:Put fnamemodify('abc.fb2.tar.gz', ':e:e:r'  )
:Put fnamemodify('abc def',[8C':S'      )
:Put fnamemodify('abc" "def',      ':S'      )
:Put fnamemodify('abc"%"def',      ':S'      )
:Put fnamemodify('abc'' ''def',    ':S'      )
:Put fnamemodify('abc''%''def',    ':S'      )
:Put fnamemodify("abc\ndef",[7C':S'      )
:set shell=tcsh
:Put fnamemodify("abc\ndef",[7C':S'      )
:$put ='vim: ts=8'
:1 delete _
:w! test.out
:qa!
ENDTEST[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hsource small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%delete _[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [12;1H~                                                                               [13;1H~                                                                               [14;1H~                                                                               [15;1H~                                                                               [16;1H~                                                                               [17;1H~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [m[24;1H--No lines in buffer--[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset shell=sh[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset shellslash[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet tab="\t"[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcommand -nargs=1 Put :let expr=<q-args> | $put =expr.tab.strtrans(string(eval(
[23;80He[24;1Hxpr)))[?25l[1;1H[L[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet $HOME=fnamemodify('.', ':p:h:h')[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('.',              ':p'      )[-1:][?25l[2;1Hfnamemodify('.',              ':p'      )[-1:]  '/'[2;52H[K[2;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('.',              ':p:h'    )[-1:][?25l[3;1Hfnamemodify('.',              ':p:h'    )[-1:]  'r'[3;52H[K[3;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':p'      )[-1:][?25l[4;1Hfnamemodify('test.out',       ':p'      )[-1:]  't'[4;52H[K[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':.'      )[?25l[5;1Hfnamemodify('test.out',       ':.'      )       'test.out'[5;59H[K[5;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('../testdir/a',   ':.'      )[?25l[6;1Hfnamemodify('../testdir/a',   ':.'      )       'a'[6;52H[K[6;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':~'      )[?25l[7;1Hfnamemodify('test.out',       ':~'      )       '~/testdir/test.out'[7;69H[K[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('../testdir/a',   ':~'      )[?25l[8;1Hfnamemodify('../testdir/a',   ':~'      )       '~/testdir/a'[8;62H[K[8;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('../testdir/a',   ':t'      )[?25l[9;1Hfnamemodify('../testdir/a',   ':t'      )       'a'[9;52H[K[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('.',              ':p:t'    )[?25l[10;1Hfnamemodify('.',              ':p:t'    )       ''[10;51H[K[10;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':p:t'    )[?25l[11;1Hfnamemodify('test.out',       ':p:t'    )       'test.out'[11;59H[K[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':p:e'    )[?25l[12;1Hfnamemodify('test.out',       ':p:e'    )       'out'[12;54H[K[12;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('test.out',       ':p:t:e'  )[?25l[13;1Hfnamemodify('test.out',       ':p:t:e'  )       'out'[13;54H[K[13;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':r'      )[?25l[14;1Hfnamemodify('abc.fb2.tar.gz', ':r'      )       'abc.fb2.tar'[14;62H[K[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':r:r'    )[?25l[15;1Hfnamemodify('abc.fb2.tar.gz', ':r:r'    )       'abc.fb2'[15;58H[K[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':r:r:r'  )[?25l[16;1Hfnamemodify('abc.fb2.tar.gz', ':r:r:r'  )       'abc'[16;54H[K[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\
[23;80H1[24;1H', '')[?25l[1;1H[L[17;1Hsubstitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\1', '''[18;1H)       'testdir/abc.fb2'[18;26H[K[24;1H[K[17;1H[?12l[?25h[?25l[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':e'      )[?25l[19;1Hfnamemodify('abc.fb2.tar.gz', ':e'      )       'gz'[19;53H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':e:e'    )[?25l[20;1Hfnamemodify('abc.fb2.tar.gz', ':e:e'    )       'tar.gz'[20;57H[K[20;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':e:e:e'  )[?25l[21;1Hfnamemodify('abc.fb2.tar.gz', ':e:e:e'  )       'fb2.tar.gz'[21;61H[K[21;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':e:e:e:e')[?25l[22;1Hfnamemodify('abc.fb2.tar.gz', ':e:e:e:e')       'fb2.tar.gz'[22;61H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc.fb2.tar.gz', ':e:e:r'  )[?25l[23;1Hfnamemodify('abc.fb2.tar.gz', ':e:e:r'  )       'tar'[23;54H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify('abc def',        ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify('abc def',[8C':S'      )[7C'''abc def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hPut fnamemodify('abc" "def',      ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify('abc" "def',      ':S'      )[7C'''abc" "def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hPut fnamemodify('abc"%"def',      ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify('abc"%"def',      ':S'      )[7C'''abc"%"def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hPut fnamemodify('abc'' ''def',    ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify('abc'' ''def',    ':S'      )[7C'''abc''\'''' ''\''''def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hPut fnamemodify('abc''%''def',    ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify('abc''%''def',    ':S'      )[7C'''abc''\''''%''\''''def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hPut fnamemodify("abc\ndef",       ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify("abc\ndef",[7C':S'      )[7C'''abc^@def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hset shell=tcsh[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hPut fnamemodify("abc\ndef",       ':S'      )[?25l[1;23r[23;1H
[1;24r[23;1Hfnamemodify("abc\ndef",[7C':S'      )[7C'''abc\^@def'''[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h$put ='vim: ts=8'[?25l[1;23r[23;1H
[1;24r[23;1Hvim: ts=8[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h1 delete _[?25l[1;15H',              ':p[8C[-1:]  '/[2;35Hh'    )[-1:]  'r'[3;34H'      )[-1:]  't'[3;52H[K[4;33H.'  [13Ctest.out'[5;14H../testdir/a',   ':.'    [11Ca'[5;52H[K[6;14Htest.out',       ':~[16C~/testdir/test.out'[7;14H../testdir/a',   ':~'  [13C~/testdir/a'[8;14H../testdir/a',   ':t'    [12C'[8;52H[K[9;1Hfnamemodify('.',              ':p:t'    )       ''[9;51H[K[10;1Hfnamemodify('test.out',       ':p:t'    )[7C'test.out'[11;14Htest.out',       ':p:e'[13Cout'[12;14Htest.out',       ':p:t:e'[11Cout'[12;54H[K[13;33Hr'    [11Cabc.fb2.tar'[14;33Hr:r'    [9Cabc.fb2'[14;58H[K[15;33Hr:r[14Cabc
substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(testdir/.*\)', '\1', '''[17;1H)       'testdir/abc.fb2'[17;31H[K[18;17H.fb2.tar.gz', ':e[16Cgz'[18;53H[K[19;17H.fb2.tar.gz', ':e:e'[13Ctar.gz[19;57H[K[20;17H.fb2.tar.gz', ':e:e:e'[11Cfb2.tar.gz[20;61H[K[21;13H'abc.fb2.tar.gz', ':e:e:e:e'[9Cfb2.tar.gz[21;61H[K[22;13H'abc.fb2.tar.gz', ':e:e:r'[11Ctar'[22;54H[K[23;1Hfnamemodify('abc def',[8C':S'      )[7C'''abc def'''[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hw! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 29 lines, 1560 characters written[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test106.failed test.ok test.out X* viminfo
cp test106.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test106.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test106.in" 16 lines, 581 characters[1;1HTests for errorformat.  vim: set ft=vim ts=8 :

STARTTEST
:so small.vim
:if !has('quickfix') | e! test.ok | wq! test.out | endif
:set efm=%EEEE%m,%WWWW%m,%+CCCC%.%#,%-GGGG%.%#
:cgetexpr ['WWWW', 'EEEE', 'CCCC']
:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
:cgetexpr ['WWWW', 'GGGG', 'EEEE', 'CCCC']
:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
:cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY']
:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))
:/^Results/,$wq! test.out
ENDTEST

Results of test106:
[1m[34m~                                                                               [18;1H~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for errorformat.  vim: set ft=vim ts=8 :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 10 lines, 494 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[14;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !has('quickfix') | e! test.ok | wq! test.out | endif[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset efm=%EEEE%m,%WWWW%m,%+CCCC%.%#,%-GGGG%.%#[?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcgetexpr ['WWWW', 'EEEE', 'CCCC'][?25l[15;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))[?25l[17;1H[['W', 1], ['E^@CCCC', 1]][17;27H[K[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcgetexpr ['WWWW', 'GGGG', 'EEEE', 'CCCC'][?25l[17;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))[?25l[18;1H[['W', 1], ['E^@CCCC', 1]][18;27H[K[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY'][?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]')))[?25l[19;1H[['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]][19;53H[K[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^Results/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 4 lines, 127 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test107.failed test.ok test.out X* viminfo
cp test107.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test107.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test107.in" 38 lines, 717 characters[1;1HTests for adjusting window and contents     vim: set ft=vim :

STARTTEST
:so small.vim
:new
:call setline(1, range(1,256))
:let r=[]
:func! GetScreenStr(row)
:   let str = ""
:   for c in range(1,3)
:[7Clet str .= nr2char(screenchar(a:row, c))
:   endfor
:   return str
:endfunc
:
:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for adjusting window and contents     vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 32 lines, 628 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[13M[1;24r[11;1H:call add(r, [line("w0"), s3])
:
:exe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1H[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnew[?25l[1;1H[K[2;1H[1m[34m~                                                                               [3;1H~                                                                               [4;1H~                                                                               [5;1H~                                                                               [6;1H~                                                                               [7;1H~                                                                               [8;1H~                                                                               [9;1H~                                                                               [10;1H~                                                                               [11;1H~                                                                               [m[12;1H[1m[7m[No Name]                                                                       [m[13;2H:wincmd p[13;11H[K[14;2Hcall add(r, [line("w0"), s3])[15;2H[K[16;2Hbwipeout!
:$put=r[17;8H[K[18;2Hcall garbagecollect(1)
:"[19;3H[K[20;2H/^start:/,$wq! test.out
ENDTEST[21;8H[K[22;1H[K[23;1H[7mtest107.in                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall setline(1, range(1,256))[?25l[1;1H1
2[2;2H[K[3;1H3[3;2H[K[4;1H4[4;2H[K[5;1H5[5;2H[K[6;1H6[6;2H[K[7;1H7[7;2H[K[8;1H8[8;2H[K[9;1H9[9;2H[K[10;1H10[10;3H[K[11;1H11[11;3H[K[12;11H[1m[7m[+][1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet r=[][?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunc! GetScreenStr(row)[?25l
:  [?12l[?25h:   let str = ""
[?25l:  [?12l[?25h:   for c in range(1,3)
[?25l:    [?12l[?25h:       let str .= nr2char(screenchar(a:row, c))
[?25l:    [?12l[?25h:   endfor
[?25l:  [?12l[?25h:   return str
[?25l:  [?12l[?25h:endfunc[1;1H[6L[?25l[1;1H1
2
3
4
5
6[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"[?25l[11;1H[7m[No Name] [+]                                                                   [m[12;1H:let s3=GetScreenStr(1)[12;24H[K[23;1H[1m[7mtest107.in                                                                      [22;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet s3=GetScreenStr(1)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[11;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7mtest107.in[m[1m[7m [m[7m                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall add(r, [line("w0"), s3])[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"[?25l[27m[m[H[2J[1;1H50
51
52
53
54
55
56
57
58
59
[7m[No Name] [+]                                                                   [m[12;1H:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

[1m[7mtest107.in                                                                      [22;1H[?12l[?25h[?25l

[m:[?12l[?25hlet s3=GetScreenStr(1)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[11;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7mtest107.in[m[1m[7m [m[7m                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall add(r, [line("w0"), s3])[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hexe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"[?25l[27m[m[H[2J[1;1H59
60
61
62
63
64
65
66
67
68
[7m[No Name] [+]                                                                   [m[12;1H:let s3=GetScreenStr(1)
::wincmd p
:call add(r, [line("w0"), s3])
:
:bwipeout!
:$put=r
:call garbagecollect(1)
:"
:/^start:/,$wq! test.out
ENDTEST

[1m[7mtest107.in                                                                      [22;1H[?12l[?25h[?25l

[m:[?12l[?25hlet s3=GetScreenStr(1)[?25l[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h:wincmd p[?25l[11;1H[1m[7m[No Name] [+]                                                                   [m[23;1H[7mtest107.in[m[1m[7m [m[7m                                                                      [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hcall add(r, [line("w0"), s3])[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hbwipeout![?25l[1;1H:[1;2H[K[2;1H:exe ":norm! \<C-W>t\<C-W>=1Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:[6;2H[K[7;1H:exe ":norm! \<C-W>t\<C-W>=50Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
:wincmd p
:call add(r, [line("w0"), s3])
:[11;2H[K[12;2Hexe ":norm! \<C-W>t\<C-W>=59Gzt\<C-W>w\<C-W>+"
:let s3=GetScreenStr(1)
::wincmd p[14;11H[K[15;2Hcall add(r, [line("w0"), s3])[16;2H[K[17;2Hbwipeout!
:$put=r[18;8H[K[19;2Hcall garbagecollect(1)
:"[20;3H[K[21;1H:/^start:/,$wq! test.out
ENDTEST[23;1H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put=r[?25l3 more lines[1;23r[1;1H[4M[1;24r[20;1Hstart:
[1, '1  ']
[50, '50 ']
[59, '59 '][24;1H[K[24;1H3 more lines[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall garbagecollect(1)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start:/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 4 lines, 42 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_autoformat_join.failed test.ok test.out X* viminfo
cp test_autoformat_join.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_autoformat_join.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_autoformat_join.in" 23 lines, 524 characters[1;1HTests for setting the '[,'] marks when joining lines.

STARTTEST
:so small.vim
:/^\t\t/
0gqj[34m^[[m
:let a=string(getpos("'[")).'/'.string(getpos("']"))
:/^This line/;'}-join
:let b=string(getpos("'[")).'/'.string(getpos("']"))
:$put ='First test: Start/End '.string(a)
:$put ='Second test: Start/End '.string(b)
:/^\t\t/,$wq! test.out
ENDTEST[16;17HO sodales, ludite, vos qui
attamen consulite per voster honur. Tua pulchra facies me fay planszer milies

This line.
Should be joined with the next line
and with this line

Results:[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTests for setting the '[,'] marks when joining lines.[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 9 lines, 265 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[13;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[14;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^\t\t/[?25l[16;17H[?12l[?25h[16;8H[?25l[36Cattamen consulite per voster honur.
Tua pulchra facies me fay planszer milies[17;42H[K[17;1H[?12l[?25h
[?25l[24;1H[K[24;1H:[?12l[?25hlet a=string(getpos("'[")).'/'.string(getpos("']"))[?25l[18;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^This line/;'}-join[?25l[19;23r[19;1H[2M[1;24r[19;1HThis line.  Should be joined with the next line and with this line


[1m[34m~                                                                               [23;1H~                                                                               [m[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25hlet b=string(getpos("'[")).'/'.string(getpos("']"))[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='First test: Start/End '.string(a)[?25l[22;1HFirst test: Start/End '[0, 16, 1, 0]/[0, 17, 1, 0]'[22;52H[K[22;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='Second test: Start/End '.string(b)[?25l[23;1HSecond test: Start/End '[0, 19, 11, 0]/[0, 19, 67, 0]'[23;55H[K[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^\t\t/,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 8 lines, 292 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_breakindent.failed test.ok test.out X* viminfo
cp test_breakindent.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_breakindent.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_breakindent.in" 79 lines, 2439 characters[1;1HTest for breakindent

STARTTEST
:so small.vim
:if !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"
:set ts=4 sw=4 sts=4 breakindent
:fu! ScreenChar(width)
:[7Clet c=''
:[7Cfor i in range(1,a:width)
:[15Clet c.=nr2char(screenchar(line('.'), i))
:[7Cendfor
:[7Clet c.="\n"
:[7Cfor i in range(1,a:width)
:[15Clet c.=nr2char(screenchar(line('.')+1, i))
:[7Cendfor
:[7Clet c.="\n"
:[7Cfor i in range(1,a:width)
:[15Clet c.=nr2char(screenchar(line('.')+2, i))
:[7Cendfor
:[7Creturn c
:endfu[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for breakindent[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 74 lines, 2388 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set briopt=shift:1,sbr,min:0 nu sbr=# list
:let line1=ScreenChar(10)
:call DoRecordScreen()
:let g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"
:set briopt-=sbr
:let line1=ScreenChar(10)
:call DoRecordScreen()
:let g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"
:set cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0
:let line1=ScreenChar(10)
:call DoRecordScreen()
:wincmd p
:let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
:let text=getline(2) "skip leading tab when calculating text width
:let width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test
:$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),  [19;1Hwidth)
:%w! test.out
:qa!
ENDTEST
dummy text[22;1H[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !exists("+breakindent") | e! test.ok | w! test.out | qa! | endif[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h10new|:vsp|:vert resize 20[?25l[1;1H                    [7m|[2;21H|[3;21H|[4;21H|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[10;21H|[m[2;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   [m
[1m[7m[No Name]            [m[1;22H[K[2;22H[1m[34m~                                                          [3;22H~                                                          [4;22H~                                                          [5;22H~                                                          [6;22H~                                                          [7;22H~                                                          [8;22H~                                                          [9;22H~                                                          [10;22H~                                                          [m[11;22H[7m[No Name]                                                  [m[12;2Hlet g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4[13;48H[K[14;2Hlet text=getline(2) "skip leading tab when calculating text width[15;6Hwidth = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times
:$put =g:test[16;14H[K[17;8Hprintf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),  [18;1Hwidth)[18;7H[K[19;1H:%w! test.out
:qa[20;6H[K[21;1HENDTEST
dummy text
[7mtest_breakindent.in                                                             [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput =\"\tabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP\"[?25l[2;1H        abcdefghijkl
mnopqrstuvwxyzABCDEF
GHIJKLMNOP          [11;11H[1m[7m[+][m[2;22H        abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[2;72H[K[11;32H[7m[+][2;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset ts=4 sw=4 sts=4 breakindent[?25l[2;5Habcdefghijklmnop
    
    GHIJKLMNOP[2;26HabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[2;68H[K[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfu! ScreenChar(width)[?25l
:  [?12l[?25h:[34m^I[mlet c=''
[?25l:  [?12l[?25h:[34m^I[mfor i in range(1,a:width)
[?25l:    [?12l[?25h:[34m^I^I[mlet c.=nr2char(screenchar(line('.'), i))
[?25l:    [?12l[?25h:[34m^I[mendfor
[?25l:  [?12l[?25h:       let c.="\n"
[?25l:  [?12l[?25h:[34m^I[mfor i in range(1,a:width)
[?25l:    [?12l[?25h:[34m^I^I[mlet c.=nr2char(screenchar(line('.')+1, i))
[?25l:    [?12l[?25h:[34m^I[mendfor
[?25l:  [?12l[?25h:       let c.="\n"
[?25l:  [?12l[?25h:[34m^I[mfor i in range(1,a:width)
[?25l:    [?12l[?25h:[34m^I^I[mlet c.=nr2char(screenchar(line('.')+2, i))
[?25l:    [?12l[?25h:[34m^I[mendfor
[?25l:  [?12l[?25h:[34m^I[mreturn c
[?25l:  [?12l[?25h:endfu[1;1H[14L[?25l[1;21H[7m|[m
    abcdefghijklmnop[7m|[m
    qrstuvwxyzABCDEF[7m|[m
    GHIJKLMNOP      [7m|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[10;21H|[m[5;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   [m
[1m[7m[No Name] [+]        [m[2;26HabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[3;22H[1m[34m~                                                          [4;22H~                                                          [5;22H~                                                          [6;22H~                                                          [7;22H~                                                          [8;22H~                                                          [9;22H~                                                          [10;22H~                                                          [m[11;22H[7m[No Name] [+]                                              [m[12;1H:let g:test="\n Test 11: strdisplaywidth when breakindent is on"
:set cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4
:let text=getline(2) "skip leading tab when calculating text width[24;1H[K[2;5H[?12l[?25h[?25l[24;1H:[?12l[?25hfu DoRecordScreen()[?25l
:  [?12l[?25h:[34m^I[mwincmd l
[?25l:  [?12l[?25h:[34m^I[m$put =printf(\"\n%s\", g:test)
[?25l:  [?12l[?25h:[34m^I[m$put =g:line1
[?25l:  [?12l[?25h:[34m^I[mwincmd p
[?25l:  [?12l[?25h:endfu[1;1H[5L[?25l[1;21H[7m|[m
    abcdefghijklmnop[7m|[m
    qrstuvwxyzABCDEF[7m|[m
    GHIJKLMNOP      [7m|[5;21H|[m[1m[34m~                   [m[2;26HabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP[3;22H[1m[34m~                                                          [4;22H~                                                          [5;22H~                                                          [m[24;1H[K[2;5H[?12l[?25h[?25l[24;1H:[?12l[?25hlet g:test="Test 1: Simple breakindent"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[5;1H                    
Test 1: Simple break
indent              
    abcd            
    qrst            
    GHIJ            [3;22H[K[4;22HTest 1: Simple breakindent[4;48H[K[5;22H    abcd[5;30H[K[6;22H    qrst[6;30H[K[7;22H    GHIJ[7;30H[K[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test="Test 2: Simple breakindent + sbr=>>"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset sbr=>>[?25l[3;5H[1m[34m>>[mqrstuvwxyzABCD
    [1m[34m>>[mEFGHIJKLMNOP


[1m[34m>>[mindent[18;1H[1m[34m>>[mwidth)[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22HTest 1: Simple breakindent                                 [3;22H    abcd                                                   [4;22H    qrst                                                   [5;22H    GHIJ                                                   [6;22H[1m[34m~                                                          [7;22H~                                                          [8;22H~                                                          [m[9;22H                                                           [10;22H                                                           [6;22H[K[7;22HTest 2: Simple breakindent + sbr=>>[7;57H[K[8;22H    abcd[8;30H[K[9;26H>>qr[10;26H>>EF[24;1H[K[24;1H3 more lines[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test ="Test 3: Simple breakindent + briopt:sbr"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt=sbr,min:0 sbr=++[?25l[3;1H[1m[34m++[m  qrstuvwxyzABCDEF
[1m[34m++[m  GHIJKLMNOP    


[1m[34m++[mi[18;1H[1m[34m++[mw[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22HTest 2: Simple breakindent + sbr=>>                        [3;22H    abcd                                                   [4;22H    >>qr                                                   [5;22H    >>EF                                                   [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;22HTest 3: Simple breakindent + briopt:sbr[8;26Habcd[9;22H++  qrst[10;22H++  GHIJ[24;1H[K[24;1H3 more lines[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test ="Test 4: Simple breakindent + min width: 18"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset sbr= briopt=min:18[?25l[3;1H  qrstuvwxyzABCDEFGH
  IJKLMNOP    


indent  [18;1Hwidth)[18;7H[K[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22HTest 3: Simple breakindent + briopt:sbr                    [3;22H    abcd                                                   [4;22H++  qrst                                                   [5;22H++  GHIJ                                                   [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;22HTest 4: Simple breakindent + min width: 18[8;26Habcd[9;24Hqrstuv[10;24HIJKLMN[24;1H[K[24;1H3 more lines[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test =" Test 5: Simple breakindent + shift by 2"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt=shift:2,min:0[?25l[3;3H    qrstuvwxyzABCD
      EFGHIJKLMNOP


  indent[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22HTest 4: Simple breakindent + min width: 18                 [3;22H    abcd                                                   [4;22H  qrstuv                                                   [5;22H  IJKLMN                                                   [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 5: Simple breakindent + shift by 2[8;26Habcd[9;28Hqr[10;28HEF[24;1H[K[24;1H3 more lines[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test=" Test 6: Simple breakindent + shift by -1"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt=shift:-1,min:0[?25l[3;4HqrstuvwxyzABCDEFG
   HIJKLMNOP      


indent  [2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(8)[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22H Test 5: Simple breakindent + shift by 2                   [3;22H    abcd                                                   [4;22H      qr                                                   [5;22H      EF                                                   [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 6: Simple breakindent + shift by -1[8;26Habcd[9;25Hqrstu[10;25HHIJKL[24;1H[K[24;1H3 more lines[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test=" Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr"[?25l[2;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt=shift:1,sbr,min:0 nu sbr=? nuw=4[?25l[1;1H[33m  1 
  2 [m    abcdefghijkl
[1m[34m?[m        mnopqrstuvw
[1m[34m?[m        xyzABCDEFGH
[1m[34m?[m[8CIJKLMNOP
[33m  3 [m                
[33m  4 [mTest 1: Simple b
[1m[34m?[m    reakindent
[33m  5 [m    abcd
[33m  6 [m    qrst[18;1H[1m[34m?[mwidth)[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(10)[?25l[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22H Test 6: Simple breakindent + shift by -1                  [3;22H    abcd                                                   [4;22H   qrstu                                                   [5;22H   HIJKL                                                   [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr[8;24H2     ab[9;22H?[8Cm[10;22H?[8Cx[24;1H[K[24;1H3 more lines[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test=" Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr"[?25l[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt=shift:1,sbr,min:0 nu sbr=# list[?25l[1;5H[1m[34m$[m[2;5H[34m^I[mabcdefghijklmn
[1m[34m#[m      opqrstuvwxyzA
[1m[34m#[m      BCDEFGHIJKLMN
[1m[34m#[m      OP[1m[34m$[m       [6;5H[1m[34m$

#[m [13C[1m[34m$[9;13H$[10;13H$[18;1H#[mw[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(10)[?25l[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22H Test 7: breakindent + shift by +1 + nu + sbr=? briopt:sbr [3;22H  2     ab                                                 [4;22H?        m                                                 [5;22H?        x                                                 [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr[8;24H2 ^Iabcd[9;22H#      opq[10;22H#      BCD[24;1H[K[24;1H3 more lines[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test=" Test 9: breakindent + shift by +1 + 'nu' + sbr=# list"[?25l[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset briopt-=sbr[?25l[3;1H       [1m[34m#[mopqrstuvwxyz
       [1m[34m#[mABCDEFGHIJKL
       [1m[34m#[mMNOP[1m[34m$[m


     [1m[34m#[mreakindent[1m[34m$[2;7H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(10)[?25l[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22H Test 8: breakindent + shift:1 + nu + sbr=# list briopt:sbr[3;22H  2 ^Iabcd                                                 [4;22H#      opq                                                 [5;22H#      BCD                                                 [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 9: breakindent + shift by +1 + 'nu' + sbr=# list[8;24H2 ^Iabcd[9;29H#op[10;29H#AB[24;1H[K[24;1H3 more lines[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test=" Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n"[?25l[2;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo+=n sbr=~ nu nuw=4 nolist briopt=sbr,min:0[?25l[1;5H  [2;5H    abcdefghijkl
[1m[34m~[m       mnopqrstuvwx
[1m[34m~[m       yzABCDEFGHIJ
[1m[34m~[m       KLMNOP[6;5H  

[1m[34m~[m   reakindent    [9;13H  [10;13H  [18;1H[1m[34m~[mw[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line1=ScreenChar(10)[?25l[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l3 more lines[24;13H[K[1;22H                                                           [2;22H Test 9: breakindent + shift by +1 + 'nu' + sbr=# list     [3;22H  2 ^Iabcd                                                 [4;22H       #op                                                 [5;22H       #AB                                                 [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [7;23HTest 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+=n[8;24H2     ab[9;22H~[7Cmn[10;22H~[7Cyz[24;1H[K[24;1H3 more lines[2;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hwincmd p[?25l[11;1H[7m[No Name] [+][m[1m[7m [m[7m        [m[1m[7m[No Name] [+]                                              [10;22H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hlet g:test="\n Test 11: strdisplaywidth when breakindent is on"[?25l[10;22H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cpo-=n sbr=>> nu nuw=4 nolist briopt= ts=4[?25l[3;1H[33m    [m[1m[34m>>[m
[33m    [m[1m[34m>>[m
[33m    [m[1m[34m>>[m


[33m    [m[1m[34m>>[mreakindent[1;22H[33m 44 [m Test 9: breakindent + shift by +1 + 'nu' + sbr=# list[2;22H[33m 45 [m  2 ^Iabcd[2;36H[K[3;22H[33m 46 [m       #op[4;22H[33m 47 [m       #AB[5;22H[33m 48 [m[5;29H[K[6;22H[33m 49 [m Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+[7;22H[33m    [m[1m[34m>>[m=n[7;30H[K[8;22H[33m 50 [m  2     ab[9;22H[33m 51 [m~       mn[10;22H[33m 52 [m~       yz[18;1H[1m[34m>>[mwidth)[10;26H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet text=getline(2) "skip leading tab when calculating text width[?25l[10;26H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet width = strlen(text[1:])+indent(2)*4+strlen(&sbr)*3 " text wraps 3 times[?25l[10;26H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =g:test[?25l[1;22H[33m 46 [m       #op                                             [2;22H[33m 47 [m       #AB                                             [3;22H[33m 48 [m                                                       [4;22H[33m 49 [m Test 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+[5;22H[33m    [m[1m[34m>>[m=n                                                   [6;22H[33m 50 [m  2     ab                                             [7;22H[33m 51 [m~       mn                                             [8;22H[33m 52 [m~       yz                                             [9;22H                                                           [10;22H                                                           [9;22H[33m 53 [10;22H 54 [m Test 11: strdisplaywidth when breakindent is on[24;1H[K[10;27H[?12l[?25h[?25l[24;1H:[?12l[?25h$put =printf(\"strdisplaywidth: %d == calculated: %d\", strdisplaywidth(text),
width)[?25l[1;1H[L[1;1H[33m  1 [m[16C[7m|[m[33m 47 [m[7C#AB[2;24H[33m8[m[2;33H[K[3;24H[33m9[m[2CTest 10: breakindent + shift by +1 + 'nu' + sbr=~ cpo+[4;23H[33m  [m[1C[1m[34m>>[m=n[4;30H[K[5;23H[33m50[m[1C  2     ab[6;24H[33m1[m[1C~       mn[7;24H[33m2[m[9Cyz[8;24H[33m3[m[8;26H[K[9;24H[33m4[m[2CTest 11: strdisplaywidth when breakindent is on[10;24H[33m5[m[1Cstrdisplaywidth: 46 == calculated: 64[10;63H[K[24;1H[K[10;26H[?12l[?25h[?25l[24;1H:[?12l[?25h%w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 55 lines, 898 characters written[11;1H[7mtest.out     [m[8C[1m[7mtest.out]      [10;26H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr.failed test.ok test.out X* viminfo
cp test_listlbr.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_listlbr.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_listlbr.in" 52 lines, 1238 characters[1;1HTest for linebreak and list option (non-utf8)

STARTTEST
:so small.vim
:if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:[7Clet c=''
:[7Cfor j in range(1,4)
:[11Cfor i in range(1,a:width)
:[15Clet c.=nr2char(screenchar(j, i))
:[11Cendfor
:[11Clet c.="\n"
:[7Cendfor
:[7Creturn c
:endfu
:fu! DoRecordScreen()
:[7Cwincmd l
:[7C$put =printf(\"\n%s\", g:test)
:[7C$put =g:line[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for linebreak and list option (non-utf8)[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 47 lines, 1162 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:set linebreak list listchars=
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:let g:test ="Test 3: set linebreak nolist"
:set nolist linebreak
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shoull[11;1Hd break!"
:set nolist linebreak ts=8
:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text[22;1H[?12l[?25h
[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h10new|:vsp|:vert resize 20[?25l[1;1H                    [7m|[2;21H|[3;21H|[4;21H|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[10;21H|[m[2;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   [m
[1m[7m[No Name]            [m[1;22H[K[2;22H[1m[34m~                                                          [3;22H~                                                          [4;22H~                                                          [5;22H~                                                          [6;22H~                                                          [7;22H~                                                          [8;22H~                                                          [9;22H~                                                          [10;22H~                                                          [m[11;22H[7m[No Name]                                                  [m[12;2Hlet line="1\t".repeat('a', winwidth(0)-2)
:$put =line[13;12H[K[14;3H[K[15;2Hnorm! zt
:redraw![16;9H[K[17;2Hlet line=ScreenChar(winwidth(0))
:call DoRecordScreen()[18;23H[K[19;2H%w! test.out[19;14H[K[20;2Hqa[20;6H[K[21;1HENDTEST
dummy text
[7mtest_listlbr.in                                                                 [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hput =\"\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \"[?25l[2;1H        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    [11;11H[1m[7m[+][m[2;22H        abcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP [2;79H[K[11;32H[7m[+][2;9H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hnorm! zt[?25l[1;1H        abcdef hijkl
mn  pqrstuvwxyz_1060
ABCDEFGHIJKLMNOP    
[1m[34m~                   
~                   
~                   
~                   
~                   
~                   [m
                    [1m[34m~                   [m[24;1H[K[1;9H[?12l[?25h[?25l[24;1H:[?12l[?25hset ts=4 sw=4 sts=4 linebreak sbr=+ wrap[?25l[1;5Habcdef          
[1m[34m+[mhijklmn            
[1m[34m+[mpqrstuvwxyz_1060ABC
[1m[34m+[mDEFGHIJKLMNOP      [2;26Habcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP [2;75H[K[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfu! ScreenChar(width)[?25l
:  [?12l[?25h:[34m^I[mlet c=''
[?25l:  [?12l[?25h:[34m^I[mfor j in range(1,4)
[?25l:    [?12l[?25h:[34m^I[m    for i in range(1,a:width)
[?25l:      [?12l[?25h:[34m^I[m    [34m^I[mlet c.=nr2char(screenchar(j, i))
[?25l:      [?12l[?25h:[34m^I[m    endfor
[?25l:    [?12l[?25h:           let c.="\n"
[?25l:    [?12l[?25h:[34m^I[mendfor
[?25l:  [?12l[?25h:[34m^I[mreturn c
[?25l:  [?12l[?25h:endfu[1;1H[9L[?25l[1;5Habcdef[10C[7m|[m
[1m[34m+[mhijklmn[12C[7m|[m
[1m[34m+[mpqrstuvwxyz_1060ABC[7m|[m
[1m[34m+[mDEFGHIJKLMNOP      [7m|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[m[5;1H[1m[34m~                   
~                   
~                   
~                   
~                   [m[2;26Habcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[3;22H[1m[34m~                                                          [4;22H~                                                          [5;22H~                                                          [6;22H~                                                          [7;22H~                                                          [8;22H~                                                          [9;22H~                                                          [m[24;1H[K[1;5H[?12l[?25h[?25l[24;1H:[?12l[?25hfu! DoRecordScreen()[?25l
:  [?12l[?25h:[34m^I[mwincmd l
[?25l:  [?12l[?25h:[34m^I[m$put =printf(\"\n%s\", g:test)
[?25l:  [?12l[?25h:[34m^I[m$put =g:line
[?25l:  [?12l[?25h:[34m^I[mwincmd p
[?25l:  [?12l[?25h:endfu[1;1H[5L[?25l[1;5Habcdef[10C[7m|[m
[1m[34m+[mhijklmn[12C[7m|[m
[1m[34m+[mpqrstuvwxyz_1060ABC[7m|[m
[1m[34m+[mDEFGHIJKLMNOP      [7m|[5;21H|[m[1m[34m~                   [m[2;26Habcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[3;22H[1m[34m~                                                          [4;22H~                                                          [5;22H~                                                          [m[24;1H[K[1;5H[?12l[?25h[?25l[24;1H:[?12l[?25hlet g:test="Test 1: set linebreak"[?25l[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredraw![?25l[27m[m[H[2J[1;5Habcdef[10C[7m|[m
[1m[34m+[mhijklmn[12C[7m|[m
[1m[34m+[mpqrstuvwxyz_1060ABC[7m|[m
[1m[34m+[mDEFGHIJKLMNOP      [7m|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[10;21H|[m[5;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   [m
[1m[7m[No Name] [+]        [m[2;26Habcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[3;22H[1m[34m~                                                          [4;22H~                                                          [5;22H~                                                          [6;22H~                                                          [7;22H~                                                          [8;22H~                                                          [9;22H~                                                          [10;22H~                                                          [m[11;22H[7m[No Name] [+]                                              [m[12;1H:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
[7mtest_listlbr.in                                                                 [1;5H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line=ScreenChar(winwidth(0))[?25l[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l4 more lines[24;13H[K[5;1H                    
Test 1: set         
[1m[34m+[mlinebreak          
    abcdef          
+hijklmn            
+pqrstuvwxyz_1060ABC[3;22H[K[4;22HTest 1: set linebreak[4;43H[K[5;22H    abcdef          [5;42H[K[6;22H+hijklmn            [6;42H[K[7;22H+pqrstuvwxyz_1060ABC[7;42H[K[8;22H+DEFGHIJKLMNOP      [8;42H[K[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test="Test 2: set linebreak + set list"[?25l[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset linebreak list listchars=[?25l[1;1H[34m^I[mabcdef hijklmn[34m^I  [m[2;2Hpqrstuvwxyz_1060ABC[3;2HDEFGHIJKLMNOP      
              
Test 1: set
[1m[34m+[mlinebreak 
    abcdef
+hijklmn  
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP      [1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredraw![?25l[27m[m[H[2J[1;1H[34m^I[mabcdef hijklmn[34m^I  [m[7m|[m
[1m[34m+[mpqrstuvwxyz_1060ABC[7m|[m
[1m[34m+[mDEFGHIJKLMNOP      [7m|[4;21H|[m
Test 1: set[9C[7m|[m
[1m[34m+[mlinebreak[10C[7m|[m
    abcdef[10C[7m|[m
+hijklmn[12C[7m|[m
+pqrstuvwxyz_1060ABC[7m|[m
+DEFGHIJKLMNOP      [7m|[m
[1m[7m[No Name] [+]        [m[2;26Habcdef hijklmn  pqrstuvwxyz_1060ABCDEFGHIJKLMNOP[4;22HTest 1: set linebreak[5;26Habcdef[6;22H+hijklmn[7;22H+pqrstuvwxyz_1060ABC[8;22H+DEFGHIJKLMNOP[9;22H[1m[34m~                                                          [10;22H~                                                          [m[11;22H[7m[No Name] [+]                                              [m[12;1H:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
[7mtest_listlbr.in                                                                 [1;3H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line=ScreenChar(winwidth(0))[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l4 more lines[24;13H[K[1;22H    abcdef                                                 [2;22H+hijklmn                                                   [3;22H+pqrstuvwxyz_1060ABC                                       [4;22H+DEFGHIJKLMNOP                                             [5;22H[1m[34m~                                                          [6;22H~                                                          [m[7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [5;22H[K[6;22HTest 2: set linebreak + set list[6;54H[K[7;22H^Iabcdef hijklmn^I[8;22H+pqrstuvwxyz_1060ABC[9;22H+DEFGHIJKLMNOP[24;1H[K[24;1H4 more lines[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test ="Test 3: set linebreak nolist"[?25l[1;3H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset nolist linebreak[?25l[1;1H    abcdef          [2;2Hhijklmn            [3;2Hpqrstuvwxyz_1060ABC
[1m[34m+[mDEFGHIJKLMNOP
           
Test 1: set
[1m[34m+[mlinebreak
    abcdef
+hijklmn            
+pqrstuvwxyz_1060ABC[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hredraw![?25l[27m[m[H[2J[1;5Habcdef[10C[7m|[m
[1m[34m+[mhijklmn[12C[7m|[m
[1m[34m+[mpqrstuvwxyz_1060ABC[7m|[m
[1m[34m+[mDEFGHIJKLMNOP      [7m|[5;21H|[m
Test 1: set[9C[7m|[m
[1m[34m+[mlinebreak[10C[7m|[m
    abcdef[10C[7m|[m
+hijklmn[12C[7m|[m
+pqrstuvwxyz_1060ABC[7m|[m
[1m[7m[No Name] [+]        [m[1;26Habcdef[2;22H+hijklmn[3;22H+pqrstuvwxyz_1060ABC[4;22H+DEFGHIJKLMNOP[6;22HTest 2: set linebreak + set list[7;22H^Iabcdef hijklmn^I[8;22H+pqrstuvwxyz_1060ABC[9;22H+DEFGHIJKLMNOP[11;22H[7m[No Name] [+]                                              [m[12;1H:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
[7mtest_listlbr.in                                                                 [1;5H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line=ScreenChar(winwidth(0))[?25l[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l4 more lines[24;13H[K[1;22H^Iabcdef hijklmn^I                                         [2;22H+pqrstuvwxyz_1060ABC                                       [3;22H+DEFGHIJKLMNOP                                             [4;22H                                                           [5;22H                                                           [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [6;22HTest 3: set linebreak nolist[7;26Habcdef[8;22H+hijklmn[9;22H+pqrstuvwxyz_1060ABC[10;22H+DEFGHIJKLMNOP[24;1H[K[24;1H4 more lines[1;5H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet g:test ="Test 4: set linebreak with tab and 1 line as long as screen: shou
[23;80Hl[24;1Hd break!"[?25l[1;1H[L[1;5Habcdef[10C[7m|[m^Iabcdef hijklmn^I[24;1H[K[1;5H[?12l[?25h[?25l[24;1H:[?12l[?25hset nolist linebreak ts=8[?25l[1;5H    abcdef[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet line="1\t".repeat('a', winwidth(0)-2)[?25l[1;9H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =line[?25l[1;9H      
        
Test 3: set         [4;2Hlinebreak nolist
    abcdef
+hijklmn   
+pqrstuvwxyz_1060ABC
+DEFGHIJKLMNOP
1       
[1m[34m+[maaaaaaaaaaaaaaaaaa [9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$[?25l[9;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hnorm! zt[?25l[1;1H1                   
[1m[34m+[maaaaaaaaaaaaaaaaaa 
                    
                    
                    
                    
                    
                    
                    
                    [3;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hredraw![?25l[27m[m[H[2J[1;1H1[19C[7m|[m
[1m[34m+[maaaaaaaaaaaaaaaaaa [7m|[3;21H|[4;21H|[5;21H|[6;21H|[7;21H|[8;21H|[9;21H|[10;21H|[m[3;1H[1m[34m~                   
~                   
~                   
~                   
~                   
~                   
~                   
~                   [m
[1m[7m[No Name] [+]        [m[1;22H^Iabcdef hijklmn^I[2;22H+pqrstuvwxyz_1060ABC[3;22H+DEFGHIJKLMNOP[6;22HTest 3: set linebreak nolist[7;26Habcdef[8;22H+hijklmn[9;22H+pqrstuvwxyz_1060ABC[10;22H+DEFGHIJKLMNOP[11;22H[7m[No Name] [+]                                              [m[12;1H:let line="1\t".repeat('a', winwidth(0)-2)
:$put =line
:$
:norm! zt
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST
dummy text
[7mtest_listlbr.in                                                                 [1;1H[?12l[?25h[?25l[24;1H[m:[?12l[?25hlet line=ScreenChar(winwidth(0))[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall DoRecordScreen()[?25l4 more lines[24;13H[K[3;1H                    
Test 4: set         
[1m[34m+[mlinebreak with tab 
[1m[34m+[mand 1 line as long 
[1m[34m+[mas screen: should  
[1m[34m+[mbreak!             
1                   
+aaaaaaaaaaaaaaaaaa [1;22H+pqrstuvwxyz_1060ABC                                       [2;22H+DEFGHIJKLMNOP                                             [3;22H                                                           [4;22H                                                           [5;22H                                                           [6;22H                                                           [7;22H                                                           [8;22H                                                           [9;22H                                                           [10;22H                                                           [3;22H1[7Caaaaaaaaaaaaaaaaaa[5;22HTest 4: set linebreak with tab and 1 line as long as screen[6;22H[1m[34m+[m: should break![7;22H1[8;22H+aaaaaaaaaaaaaaaaaa[9;22H~[10;22H~[24;1H[K[24;1H4 more lines[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h%w! test.out[?25l"test.out" [24;12H[K[24;12H[New File] 27 lines, 571 characters written[11;1H[1m[7mtest.out]      [m[7C[7mtest.out     [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_listlbr_utf8.failed test.ok test.out X* viminfo
cp test_listlbr_utf8.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_listlbr_utf8.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_listlbr_utf8.in" 41 lines, 1038 characters[1;1HTest for linebreak and list option in utf-8 mode

STARTTEST
:so small.vim
:if !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif
:so mbyte.vim
:if &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif
:10new|:vsp|:vert resize 20
:put =\"\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \"
:norm! zt
:set ts=4 sw=4 sts=4 linebreak sbr=+ wrap
:fu! ScreenChar(width)
:[7Clet c=''
:[7Cfor j in range(1,4)
:[11Cfor i in range(1,a:width)
:[15Clet c.=nr2char(screenchar(j, i))
:[11Cendfor
:[11Clet c.="\n"
:[7Cendfor
:[7Creturn c
:endfu
:fu! DoRecordScreen()
:[7Cwincmd l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for linebreak and list option in utf-8 mode[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 36 lines, 959 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[1;23r[1;1H[18M[1;24r[6;1H:[7C$put =printf(\"\n%s\", g:test)
:[7C$put =g:line
:[7Cwincmd p
:endfu
:let g:test ="Test 1: set linebreak + set list + fancy listchars"
:exe "set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eoll[12;1H:\ub6"
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:let g:test ="Test 2: set nolinebreak list"
:set list nolinebreak
:redraw!
:let line=ScreenChar(winwidth(0))
:call DoRecordScreen()
:%w! test.out
:qa!
ENDTEST[24;1H[K[23;1H[?12l[?25h[?25l[1;23r[23;1H
[1;24r[23;1Hdummy text[?12l[?25h[?25l
:so! Xdotest[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif !exists("+linebreak") | e! test.ok | w! test.out | qa! | endif[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso mbyte.vim[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hif &enc !=? 'utf-8'|:e! test.ok|:w! test.out|qa!|endif[?25l"test.ok" [24;11H[K[24;11H14 lines, 339 characters
"test.out" [New File] 14 lines, 339 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_eval.failed test.ok test.out X* viminfo
cp test_eval.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_eval.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_eval.in" 207 lines, 5216 characters[1;1HTest for various eval features.   vim: set ft=vim :

Note: system clipboard support is not tested. I do not think anybody will thank
me for messing with clipboard.

STARTTEST
:so small.vim
:set encoding=latin1
:set noswapfile
:lang C
:fun AppendRegContents(reg)
    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:reg,,[13;1H getregtype(a:reg), getreg(a:reg), string(getreg(a:reg, 0, 1)), getreg(a:reg, 1))[14;1H, string(getreg(a:reg, 1, 1))))
endfun
:command -nargs=? AR :call AppendRegContents(<q-args>)
:fun SetReg(...)
    call call('setreg', a:000)
    call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))
    call AppendRegContents(a:1)
    if a:1 isnot# '='[22;9Hexecute "silent normal! Go==\n==\e\"".a:1."P"
    endif[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for various eval features.   vim: set ft=vim :[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[6;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 195 lines, 5003 characters written[7;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[7;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[27m[m[H[2J[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')
:catch
:$put =v:exception
:endtry
:"
:$put ='{{{1 getcurpos/setpos'
/^012345678
6l:let sp = getcurpos()
0:call setpos('.', sp)
jyl:$put
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:[18;1H[?12l[?25h
[?25l[24;1H:so! Xdotest[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hset encoding=latin1[?25l[27m[m[H[2J[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')
:catch
:$put =v:exception
:endtry
:"
:$put ='{{{1 getcurpos/setpos'
/^012345678
6l:let sp = getcurpos()
0:call setpos('.', sp)
jyl:$put
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25hset noswapfile[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlang C[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfun AppendRegContents(reg)[?25l
:  [?12l[?25h    call append('$', printf('%s: type %s; value: %s (%s), expr: %s (%s)', a:
[23;80Hr[24;1Heg, getregtype(a:reg), getreg(a:reg), string(getreg(a:reg, 0, 1)), getreg(a:reg
[23;80H,[24;1H 1), string(getreg(a:reg, 1, 1))))
[?25l:  [?12l[?25hendfun[1;1H[4L[?25l[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25hcommand -nargs=? AR :call AppendRegContents(<q-args>)[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfun SetReg(...)[?25l
:  [?12l[?25h    call call('setreg', a:000)
[?25l:  [?12l[?25h    call append('$', printf('{{{2 setreg(%s)', string(a:000)[1:-2]))
[?25l:  [?12l[?25h    call AppendRegContents(a:1)
[?25l:  [?12l[?25h    if a:1 isnot# '='
[?25l:    [?12l[?25h        execute "silent normal! Go==\n==\e\"".a:1."P"
[?25l:    [?12l[?25h    endif
[?25l:  [?12l[?25hendfun[1;1H[7L[?25l[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')
:catch
:$put =v:exception
:endtry[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfun ErrExe(str)[?25l
:  [?12l[?25h    call append('$', 'Executing '.a:str)
[?25l:  [?12l[?25h    try
[?25l:    [?12l[?25h        execute a:str
[?25l:    [?12l[?25h    catch
[?25l:    [?12l[?25h        $put =v:exception
[?25l:    [?12l[?25h    endtry
[?25l:  [?12l[?25hendfun[1;1H[7L[?25l[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')
:catch
:$put =v:exception
:endtry[24;1H[K[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25hfun Test()[?25l
:  [?12l[?25h$put ='{{{1 let tests'
[?25l:  [?12l[?25hlet @" = 'abc'
[?25l:  [?12l[?25hAR "
[?25l:  [?12l[?25hlet @" = "abc\n"
[?25l:  [?12l[?25hAR "
[?25l:  [?12l[?25hlet @" = "abc\<C-m>"
[?25l:  [?12l[?25hAR "
[?25l:  [?12l[?25hlet @= = '"abc"'
[?25l:  [?12l[?25hAR =
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Basic setreg tests'
[?25l:  [?12l[?25hcall SetReg('a', 'abcA', 'c')
[?25l:  [?12l[?25hcall SetReg('b', 'abcB', 'v')
[?25l:  [?12l[?25hcall SetReg('c', 'abcC', 'l')
[?25l:  [?12l[?25hcall SetReg('d', 'abcD', 'V')
[?25l:  [?12l[?25hcall SetReg('e', 'abcE', 'b')
[?25l:  [?12l[?25hcall SetReg('f', 'abcF', "\<C-v>")
[?25l:  [?12l[?25hcall SetReg('g', 'abcG', 'b10')
[?25l:  [?12l[?25hcall SetReg('h', 'abcH', "\<C-v>10")
[?25l:  [?12l[?25hcall SetReg('I', 'abcI')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Appending single lines with setreg()'
[?25l:  [?12l[?25hcall SetReg('A', 'abcAc', 'c')
[?25l:  [?12l[?25hcall SetReg('A', 'abcAl', 'l')
[?25l:  [?12l[?25hcall SetReg('A', 'abcAc2','c')
[?25l:  [?12l[?25hcall SetReg('b', 'abcBc', 'ca')
[?25l:  [?12l[?25hcall SetReg('b', 'abcBb', 'ba')
[?25l:  [?12l[?25hcall SetReg('b', 'abcBc2','ca')
[?25l:  [?12l[?25hcall SetReg('b', 'abcBb2','b50a')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25hcall SetReg('C', 'abcCl', 'l')
[?25l:  [?12l[?25hcall SetReg('C', 'abcCc', 'c')
[?25l:  [?12l[?25hcall SetReg('D', 'abcDb', 'b')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25hcall SetReg('E', 'abcEb', 'b')
[?25l:  [?12l[?25hcall SetReg('E', 'abcEl', 'l')
[?25l:  [?12l[?25hcall SetReg('F', 'abcFc', 'c')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Appending NL with setreg()'
[?25l:  [?12l[?25hcall setreg('a', 'abcA2', 'c')
[?25l:  [?12l[?25hcall setreg('b', 'abcB2', 'v')
[?25l:  [?12l[?25hcall setreg('c', 'abcC2', 'l')
[?25l:  [?12l[?25hcall setreg('d', 'abcD2', 'V')
[?25l:  [?12l[?25hcall setreg('e', 'abcE2', 'b')
[?25l:  [?12l[?25hcall setreg('f', 'abcF2', "\<C-v>")
[?25l:  [?12l[?25hcall setreg('g', 'abcG2', 'b10')
[?25l:  [?12l[?25hcall setreg('h', 'abcH2', "\<C-v>10")
[?25l:  [?12l[?25hcall setreg('I', 'abcI2')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25hcall SetReg('A', "\n")
[?25l:  [?12l[?25hcall SetReg('B', "\n", 'c')
[?25l:  [?12l[?25hcall SetReg('C', "\n")
[?25l:  [?12l[?25hcall SetReg('D', "\n", 'l')
[?25l:  [?12l[?25hcall SetReg('E', "\n")
[?25l:  [?12l[?25hcall SetReg('F', "\n", 'b')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Setting lists with setreg()'
[?25l:  [?12l[?25hcall SetReg('a', ['abcA3'], 'c')
[?25l:  [?12l[?25hcall SetReg('b', ['abcB3'], 'l')
[?25l:  [?12l[?25hcall SetReg('c', ['abcC3'], 'b')
[?25l:  [?12l[?25hcall SetReg('d', ['abcD3'])
[?25l:  [?12l[?25hcall SetReg('e', [1, 2, 'abc', 3])
[?25l:  [?12l[?25hcall SetReg('f', [1, 2, 3])
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Appending lists with setreg()'
[?25l:  [?12l[?25hcall SetReg('A', ['abcA3c'], 'c')
[?25l:  [?12l[?25hcall SetReg('b', ['abcB3l'], 'la')
[?25l:  [?12l[?25hcall SetReg('C', ['abcC3b'], 'lb')
[?25l:  [?12l[?25hcall SetReg('D', ['abcD32'])
[?25l:  [?12l[?25h
[?25l:  [?12l[?25hcall SetReg('A', ['abcA32'])
[?25l:  [?12l[?25hcall SetReg('B', ['abcB3c'], 'c')
[?25l:  [?12l[?25hcall SetReg('C', ['abcC3l'], 'l')
[?25l:  [?12l[?25hcall SetReg('D', ['abcD3b'], 'b')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Appending lists with NL with setreg()'
[?25l:  [?12l[?25hcall SetReg('A', ["\n", 'abcA3l2'], 'l')
[?25l:  [?12l[?25hcall SetReg('B', ["\n", 'abcB3c2'], 'c')
[?25l:  [?12l[?25hcall SetReg('C', ["\n", 'abcC3b2'], 'b')
[?25l:  [?12l[?25hcall SetReg('D', ["\n", 'abcD3b50'],'b50')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Setting lists with NLs with setreg()'
[?25l:  [?12l[?25hcall SetReg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4
[23;80H-[24;1H4-2"])
[?25l:  [?12l[?25hcall SetReg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\na
[23;80Hb[24;1HcB4c-4-2"], 'c')
[?25l:  [?12l[?25hcall SetReg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\na
[23;80Hb[24;1HcC4l-4-2"], 'l')
[?25l:  [?12l[?25hcall SetReg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\na
[23;80Hb[24;1HcD4b-4-2"], 'b')
[?25l:  [?12l[?25hcall SetReg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4
[23;80Hb[24;1H10-4\nabcE4b10-4-2"], 'b10')
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Search and expressions'
[?25l:  [?12l[?25hcall SetReg('/', ['abc/'])
[?25l:  [?12l[?25hcall SetReg('/', ["abc/\n"])
[?25l:  [?12l[?25hcall SetReg('=', ['"abc/"'])
[?25l:  [?12l[?25hcall SetReg('=', ["\"abc/\n\""])
[?25l:  [?12l[?25h
[?25l:  [?12l[?25h$put ='{{{1 Errors'
[?25l:  [?12l[?25hcall ErrExe('call setreg()')
[?25l:  [?12l[?25hcall ErrExe('call setreg(1)')
[?25l:  [?12l[?25hcall ErrExe('call setreg(1, 2, 3, 4)')
[?25l:  [?12l[?25hcall ErrExe('call setreg([], 2)')
[?25l:  [?12l[?25hcall ErrExe('call setreg(1, {})')
[?25l:  [?12l[?25hcall ErrExe('call setreg(1, 2, [])')
[?25l:  [?12l[?25hcall ErrExe('call setreg("/", ["1", "2"])')
[?25l:  [?12l[?25hcall ErrExe('call setreg("=", ["1", "2"])')
[?25l:  [?12l[?25hcall ErrExe('call setreg(1, ["", "", [], ""])')
[?25l:  [?12l[?25hendfun[27m[m[H[2J[?25l[1;1H:"
:" Using $ instead of '$' must give an error
:try
: call append($, 'foobar')
:catch
:$put =v:exception
:endtry
:"
:$put ='{{{1 getcurpos/setpos'
/^012345678
6l:let sp = getcurpos()
0:call setpos('.', sp)
jyl:$put
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:[19;1H[?12l[?25h[?25l[24;1H:[?12l[?25h"[?25l[19;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall Test()[?25l[1;1H{{{2 setreg('=', ['"abc/[34m^@[m"'])
=: type v; value: abc/[34m^@[m (['abc/[34m^@[m']), expr: "abc/[34m^@[m" (['"abc/[34m^@[m"'])
{{{1 Errors
Executing call setreg()[4;24H[K[5;1HVim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)
Vim(call):E730: using List as a String
Executing call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[18;1Hre lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[21;1Hre lines[21;9H[K[22;1HExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunction SetReg[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunction AppendRegContents[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunction ErrExe[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelfunction Test[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hdelcommand AR[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall garbagecollect(1)[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" function name not starting with capital[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:func! g:test()
[?25l:  [?12l[?25h:echo "test"
[?25l:  [?12l[?25h:endfunc
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:$put =v:exception
[?25l:  [?12l[?25h:endtry[1;1H[6L[?25l[1;1H=: type v; value: abc/[34m^@[m (['abc/[34m^@[m']), expr: "abc/[34m^@[m" (['"abc/[34m^@[m"'])
{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)[7;34H[K[8;1HVim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)[9;29H[K[10;1HVim(call):E730: using List as a String
Executing call setreg(1, {})[11;29H[K[12;1HVim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])[13;32H[K[14;1HVim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[17;1Hre lines[17;9H[K[18;1HExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[20;1Hre lines[20;9H[K[21;1HExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String[22;39H[K[23;5Hfunction):E128: Function name must start with a capital or "s:": g:test()[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" function name includes a colon[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:func! b:test()
[?25l:  [?12l[?25h:echo "test"
[?25l:  [?12l[?25h:endfunc
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:$put =v:exception
[?25l:  [?12l[?25h:endtry[1;1H[6L[?25l[1;1H{{{1 Errors
Executing call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)[8;29H[K[9;1HVim(call):E730: using List as a String
Executing call setreg(1, {})[10;29H[K[11;1HVim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])[12;32H[K[13;1HVim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[16;1Hre lines[16;9H[K[17;1HExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[19;1Hre lines[19;9H[K[20;1HExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String[21;39H[K[22;5Hfunction):E128: Function name must start with a capital or "s:": g:test()[23;70Hb[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" function name folowed by #[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h:func! test2() "#
[?25l:  [?12l[?25h:echo "test2"
[?25l:  [?12l[?25h:endfunc
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:$put =v:exception
[?25l:  [?12l[?25h:endtry[1;1H[6L[?25l[1;1HExecuting call setreg()
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1)
Vim(call):E119: Not enough arguments for function: setreg
Executing call setreg(1, 2, 3, 4)
Vim(call):E118: Too many arguments for function: setreg
Executing call setreg([], 2)[7;29H[K[8;1HVim(call):E730: using List as a String
Executing call setreg(1, {})[9;29H[K[10;1HVim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])[11;32H[K[12;1HVim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[15;1Hre lines[15;9H[K[16;1HExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[18;1Hre lines[18;9H[K[19;1HExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String[20;39H[K[21;5Hfunction):E128: Function name must start with a capital or "s:": g:test()[22;70Hb[23;70Htest2() "#[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" function name starting with/without "g:", buffer-local funcref.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hfunction! g:Foo(n)[?25l
:  [?12l[?25h:  $put ='called Foo(' . a:n . ')'
[?25l:  [?12l[?25h:endfunction[1;1H[2L[?25l[1;1HExecuting call setreg()
Vim(call):E119: Not enough arguments for function: setreg[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hlet b:my_func = function('Foo')[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall b:my_func(1)[?25l[1;23r[23;1H
[1;24r[23;1Hcalled Foo(1)[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hecho g:Foo(2)[?25l0[24;2H[K[1;23r[23;1H
[1;24r[23;1Hcalled Foo(2)[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25hecho Foo(3)[?25l0[24;2H[K[1;23r[23;1H
[1;24r[23;1Hcalled Foo(3)[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" script-local function used in Funcref must exist.[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso test_eval_func.vim[?25l[1;23r[1;1H[4M[1;24r[20;1Hs:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h" Using $ instead of '$' must give an error[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h: call append($, 'foobar')
[?25l:  [?12l[?25h:catch
[?25l:  [?12l[?25h:$put =v:exception
[?25l:  [?12l[?25h:endtry[1;1H[4L[?25l[1;1HExecuting call setreg(1, {})
Vim(call):E731: using Dictionary as a String
Executing call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[7;1Hre lines[7;9H[K[8;1HExecuting call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[10;1Hre lines[10;9H[K[11;1HExecuting call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String[12;39H[K[13;5Hfunction):E128: Function name must start with a capital or "s:": g:test()[14;70Hb[15;70Htest2() "#
called Foo(1[16;14H[K[17;12H2[18;12H3
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1[21;15H[K[22;1Hfunc Bar exists: 1
Vim(call):E116: Invalid arguments for function append[24;1H[K[23;1H[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put ='{{{1 getcurpos/setpos'[?25l[1;23r[23;1H
[1;24r[23;1H{{{1 getcurpos/setpos[24;1H[K[23;1H[?12l[?25h[?25l
/[?12l[?25h^012345678[?25l[31msearch hit BOTTOM, continuing at TOP[27m[m[H[2J[1;1H:$put ='{{{1 getcurpos/setpos'
/^012345678
6l:let sp = getcurpos()
0:call setpos('.', sp)
jyl:$put
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()
ENDTEST

012345678
012345678

start:
{{{1 let tests
": type v; value: abc (['abc']), expr: abc (['abc'])
": type V; value: abc[34m^@[m (['abc']), expr: abc[34m^@[m (['abc'])
": type V; value: abc[34m^M^@[m (['abc[34m^M[m']), expr: abc[34m^M^@[m (['abc[34m^M[m'])
=: type v; value: abc (['abc']), expr: "abc" (['"abc"'])
{{{1 Basic setreg tests
{{{2 setreg('a', 'abcA', 'c')
a: type v; value: abcA (['abcA']), expr: abcA (['abcA'])
[31msearch hit BOTTOM, continuing at TOP[12;1H[?12l[?25h[m012345[?25l[24;1H[K[24;1H:[?12l[?25hlet sp = getcurpos()[?25l[12;7H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hcall setpos('.', sp)[?25l[12;7H[?12l[?25h[13;7H[?25l[24;1H[K[24;1H:[?12l[?25h$put[?25l[27m[m[H[2J[1;1HExecuting call setreg(1, 2, [])
Vim(call):E730: using List as a String
Executing call setreg("/", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[5;1Hre lines
Executing call setreg("=", ["1", "2"])
Vim(call):E883: search pattern and expression register may not contain two or moo[8;1Hre lines
Executing call setreg(1, ["", "", [], ""])
Vim(call):E730: using List as a String
Vim(function):E128: Function name must start with a capital or "s:": g:test()
Vim(function):E128: Function name must start with a capital or "s:": b:test()
Vim(function):E128: Function name must start with a capital or "s:": test2() "#
called Foo(1)
called Foo(2)
called Foo(3)
s:Testje exists: 0
func s:Testje exists: 1
Bar exists: 1
func Bar exists: 1
Vim(call):E116: Invalid arguments for function append
{{{1 getcurpos/setpos
6[?12l[?25h[?25l
:[?12l[?25h"[?25l[23;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h/^start:/+1,$wq! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 350 lines, 11010 characters written
[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo
rm -rf test_options.failed test.ok test.out X* viminfo
cp test_options.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.
VIMRUNTIME=../../runtime; export VIMRUNTIME;  ../vim -u unix.vim -U NONE --noplugin -s dotest.in test_options.in
Vim: Warning: Output is not to a terminal
[?1049h[?1h=[1;24r[?12;25h[?12l[?25h[27m[m[H[2J[?25l[24;1H"test_options.in" 17 lines, 213 characters[1;1HTest for ":options".

STARTTEST
:so small.vim
:let caught = 'ok'
:try
  :options
:catch
  :let caught = v:throwpoint . "\n" . v:exception
:endtry
:buf 1
:$put =caught
:/^result/,$w! test.out
:qa!
ENDTEST

result
[1m[34m~                                                                               [19;1H~                                                                               [20;1H~                                                                               [21;1H~                                                                               [22;1H~                                                                               [23;1H~                                                                               [1;1H[?12l[?25h[?25l[m[24;1H[K[24;1H:[?12l[?25hset cp[?25l[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hmap dotest /^STARTTEST^[34m^M[mj:set ff=unix cpo-=A^[34m^M[m:.,/ENDTEST/-1w! Xdotest^[34m^M[m:set f
[23;80Hf[24;1H& cpo+=A^[34m^M[mnj0:so! Xdotest^[34m^M[mdotest[?25l[1;1H[L[1;1HTest for ":options".[24;1H[K[1;1H[?12l[?25h[?25l[24;1H/^STARTTEST[3;1H[?12l[?25h
[?25l[24;1H[K[24;1H:set ff=unix cpo-=A[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:.,/ENDTEST/-1w! Xdotest"Xdotest" [24;11H[K[24;11H[New File] 11 lines, 165 characters written[4;1H[?12l[?25h[?25l[24;1H[K[24;1H:set ff& cpo+=A[4;1H[?12l[?25h[?25l[24;1H/ENDTEST[24;10H[K[24;1H[15;1H[?12l[?25h
[?25l[24;1H[K[24;1H:so! Xdotest[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hso small.vim[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hlet caught = 'ok'[?25l[16;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25htry[?25l
:  [?12l[?25h  :options
[?25l"option-window" [New File]
:  [?12l[?25h:catch 
[?25l:  [?12l[?25h  :let caught = v:throwpoint . "\n" . v:exception
[?25l:  [?12l[?25h:endtry[1;1H[5L[?25l[1;1H" Each "set" line shows the current value of an option (on the left).
" Hit <CR> on a "set" line to execute it.
"[12CA boolean option will be toggled.
"[12CFor other options you can edit the value.
" Hit <CR> on a help line to open a help window on this option.
" Hit <CR> on an index line to jump there.
" Hit <Space> on a "set" line to refresh it.[8;1H[K[9;1H[35m 1 important[m[9;13H[K[10;1H[35m 2 moving around, searching and patterns
 3 tags[m
[1m[7moption-window                                                                   [m[13;1H  :let caught = v:throwpoint . "\n" . v:exception
:endtry
:buf 1[15;7H[K[16;1H:$put =caught
:/^result/,$w! test.out
:qa![18;5H[K[19;1HENDTEST[19;8H[K[20;1H[K[21;1Hresult[21;7H[K[23;1H[7mtest_options.in                                                                 [m[24;1H[K[1;1H[?12l[?25h[?25l[24;1H:[?12l[?25hbuf 1[?25l[1;1HTest for ":options".[1;21H[K[2;1H[K[3;1HSTARTTEST[3;14H[K[4;1H:so small.vim[4;14H[K[5;1H:let caught = 'ok'[5;19H[K[6;1H:try[6;5H[K[7;1H  :options[7;11H[K[8;1H:catch
  :let caught = v:throwpoint . "\n" . v:exception
:endtry[10;8H[K[11;1H:buf 1[11;7H[K[12;1H[1m[7mtest_options.in[m[24;1H"test_options.in" line 1 of 17 --5%-- col 1[1;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25h$put =caught[?25l[1;11r[1;1H[7M[1;24r[5;1H:$put =caught
:/^result/,$w! test.out
:qa!
ENDTEST

result
ok[12;17H[1m[7m[+][m[22;1Hok[22;3H[K[23;17H[7m[+][m[24;1H[K[11;1H[?12l[?25h[?25l[24;1H:[?12l[?25h/^result/,$w! test.out[?25l[31msearch hit BOTTOM, continuing at TOP[m"test.out" [24;12H[K[24;12H[New File] 2 lines, 10 characters written[11;1H[?12l[?25h[?25l[24;1H[K[24;1H:[?12l[?25hqa![?25l[24;1H[K[24;1H[?1l>[?12l[?25h[?1049l# For flaky tests retry one time.
# Check if the test.out file matches test.ok.
rm -rf X* test.ok viminfo

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     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -o objects/memfile_test.o memfile_test.c
gcc -c -I. -Iproto -DHAVE_CONFIG_H     -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'
