From da51dc9cf202772f60bd2da975dbef257bd9237c Mon Sep 17 00:00:00 2001 From: Eliseo Martínez Date: Mon, 12 May 2014 02:25:17 +0200 Subject: Introduce nvim namespace: Move files. Move files from src/ to src/nvim/. - src/nvim/ becomes the new root dir for nvim executable sources. - src/libnvim/ is planned to become root dir of the neovim library. --- src/nvim/testdir/Makefile | 156 + src/nvim/testdir/dotest.in | 3 + src/nvim/testdir/sautest/autoload/Test104.vim | 1 + src/nvim/testdir/sautest/autoload/footest.vim | 5 + src/nvim/testdir/test1.in | 57 + src/nvim/testdir/test1.ok | 1 + src/nvim/testdir/test10.in | 114 + src/nvim/testdir/test10.ok | 23 + src/nvim/testdir/test100.in | 42 + src/nvim/testdir/test100.ok | 41 + src/nvim/testdir/test101.in | 45 + src/nvim/testdir/test101.ok | 11 + src/nvim/testdir/test102.in | 12 + src/nvim/testdir/test102.ok | 3 + src/nvim/testdir/test103.in | 37 + src/nvim/testdir/test103.ok | 2 + src/nvim/testdir/test104.in | 30 + src/nvim/testdir/test104.ok | 13 + src/nvim/testdir/test105.in | 45 + src/nvim/testdir/test105.ok | 29 + src/nvim/testdir/test106.in | 16 + src/nvim/testdir/test106.ok | 4 + src/nvim/testdir/test10a.in | 73 + src/nvim/testdir/test10a.ok | 23 + src/nvim/testdir/test11.in | 84 + src/nvim/testdir/test11.ok | 61 + src/nvim/testdir/test12.in | 52 + src/nvim/testdir/test12.ok | 10 + src/nvim/testdir/test13.in | 58 + src/nvim/testdir/test13.ok | 30 + src/nvim/testdir/test14.in | 99 + src/nvim/testdir/test14.ok | 26 + src/nvim/testdir/test15.in | 136 + src/nvim/testdir/test15.ok | 111 + src/nvim/testdir/test16.in | 15 + src/nvim/testdir/test16.ok | 2 + src/nvim/testdir/test17.in | 141 + src/nvim/testdir/test17.ok | 33 + src/nvim/testdir/test17a.in | 3 + src/nvim/testdir/test18.in | 16 + src/nvim/testdir/test18.ok | 4 + src/nvim/testdir/test19.in | 33 + src/nvim/testdir/test19.ok | 10 + src/nvim/testdir/test2.in | 29 + src/nvim/testdir/test2.ok | 4 + src/nvim/testdir/test20.in | 28 + src/nvim/testdir/test20.ok | 10 + src/nvim/testdir/test21.in | 19 + src/nvim/testdir/test21.ok | 2 + src/nvim/testdir/test22.in | 13 + src/nvim/testdir/test22.ok | 4 + src/nvim/testdir/test23.in | 15 + src/nvim/testdir/test23.ok | 2 + src/nvim/testdir/test24.in | Bin 0 -> 1301 bytes src/nvim/testdir/test24.ok | 32 + src/nvim/testdir/test25.in | 31 + src/nvim/testdir/test25.ok | 1 + src/nvim/testdir/test26.in | 44 + src/nvim/testdir/test26.ok | 10 + src/nvim/testdir/test27.in | 20 + src/nvim/testdir/test27.ok | 2 + src/nvim/testdir/test28.in | Bin 0 -> 364 bytes src/nvim/testdir/test28.ok | 2 + src/nvim/testdir/test29.in | 230 + src/nvim/testdir/test29.ok | 97 + src/nvim/testdir/test3.in | 2056 ++++++ src/nvim/testdir/test3.ok | 1820 +++++ src/nvim/testdir/test30.in | 222 + src/nvim/testdir/test30.ok | 121 + src/nvim/testdir/test31.in | 75 + src/nvim/testdir/test31.ok | 12 + src/nvim/testdir/test32.in | 60 + src/nvim/testdir/test32.ok | 15 + src/nvim/testdir/test33.in | 34 + src/nvim/testdir/test33.ok | 23 + src/nvim/testdir/test34.in | 87 + src/nvim/testdir/test34.ok | 10 + src/nvim/testdir/test35.in | 21 + src/nvim/testdir/test35.ok | 4 + src/nvim/testdir/test36.in | 105 + src/nvim/testdir/test36.ok | 96 + src/nvim/testdir/test37.in | 116 + src/nvim/testdir/test37.ok | 33 + src/nvim/testdir/test38.in | 35 + src/nvim/testdir/test38.ok | 13 + src/nvim/testdir/test39.in | 93 + src/nvim/testdir/test39.ok | Bin 0 -> 481 bytes src/nvim/testdir/test4.in | 31 + src/nvim/testdir/test4.ok | 17 + src/nvim/testdir/test40.in | 63 + src/nvim/testdir/test40.ok | 11 + src/nvim/testdir/test41.in | 24 + src/nvim/testdir/test41.ok | 3 + src/nvim/testdir/test42.in | Bin 0 -> 2368 bytes src/nvim/testdir/test42.ok | Bin 0 -> 409 bytes src/nvim/testdir/test43.in | 34 + src/nvim/testdir/test43.ok | 11 + src/nvim/testdir/test44.in | 68 + src/nvim/testdir/test44.ok | 24 + src/nvim/testdir/test45.in | 80 + src/nvim/testdir/test45.ok | 18 + src/nvim/testdir/test46.in | 27 + src/nvim/testdir/test46.ok | 13 + src/nvim/testdir/test47.in | 62 + src/nvim/testdir/test47.ok | 4 + src/nvim/testdir/test48.in | 78 + src/nvim/testdir/test48.ok | 22 + src/nvim/testdir/test49.in | 30 + src/nvim/testdir/test49.ok | 99 + src/nvim/testdir/test49.vim | 9852 +++++++++++++++++++++++++ src/nvim/testdir/test5.in | 29 + src/nvim/testdir/test5.ok | 9 + src/nvim/testdir/test50.in | 90 + src/nvim/testdir/test50.ok | 14 + src/nvim/testdir/test51.in | 36 + src/nvim/testdir/test51.ok | 20 + src/nvim/testdir/test52.in | 65 + src/nvim/testdir/test52.ok | 18 + src/nvim/testdir/test53.in | 123 + src/nvim/testdir/test53.ok | 64 + src/nvim/testdir/test54.in | 22 + src/nvim/testdir/test54.ok | 1 + src/nvim/testdir/test55.in | 404 + src/nvim/testdir/test55.ok | 128 + src/nvim/testdir/test56.in | 21 + src/nvim/testdir/test56.ok | 2 + src/nvim/testdir/test57.in | 500 ++ src/nvim/testdir/test57.ok | 459 ++ src/nvim/testdir/test58.in | 639 ++ src/nvim/testdir/test58.ok | 283 + src/nvim/testdir/test59.in | 626 ++ src/nvim/testdir/test59.ok | 270 + src/nvim/testdir/test6.in | 24 + src/nvim/testdir/test6.ok | 18 + src/nvim/testdir/test60.in | 610 ++ src/nvim/testdir/test60.ok | 211 + src/nvim/testdir/test60.vim | 98 + src/nvim/testdir/test61.in | 113 + src/nvim/testdir/test61.ok | 49 + src/nvim/testdir/test62.in | 191 + src/nvim/testdir/test62.ok | 88 + src/nvim/testdir/test63.in | 157 + src/nvim/testdir/test63.ok | 11 + src/nvim/testdir/test64.in | 633 ++ src/nvim/testdir/test64.ok | 1084 +++ src/nvim/testdir/test65.in | 95 + src/nvim/testdir/test65.ok | 73 + src/nvim/testdir/test66.in | 33 + src/nvim/testdir/test66.ok | 16 + src/nvim/testdir/test67.in | 33 + src/nvim/testdir/test67.ok | 10 + src/nvim/testdir/test68.in | 131 + src/nvim/testdir/test68.ok | 77 + src/nvim/testdir/test69.in | 185 + src/nvim/testdir/test69.ok | 162 + src/nvim/testdir/test7.in | 26 + src/nvim/testdir/test7.ok | 12 + src/nvim/testdir/test70.in | 63 + src/nvim/testdir/test70.ok | 6 + src/nvim/testdir/test71.in | 67 + src/nvim/testdir/test71.ok | 10 + src/nvim/testdir/test71a.in | 14 + src/nvim/testdir/test72.in | 115 + src/nvim/testdir/test72.ok | 27 + src/nvim/testdir/test73.in | 176 + src/nvim/testdir/test73.ok | 21 + src/nvim/testdir/test74.in | 36 + src/nvim/testdir/test74.ok | 5 + src/nvim/testdir/test75.in | 41 + src/nvim/testdir/test75.ok | 7 + src/nvim/testdir/test76.in | 46 + src/nvim/testdir/test76.ok | 4 + src/nvim/testdir/test77.in | 30 + src/nvim/testdir/test77.ok | 1 + src/nvim/testdir/test78.in | 46 + src/nvim/testdir/test78.ok | 3 + src/nvim/testdir/test79.in | Bin 0 -> 3381 bytes src/nvim/testdir/test79.ok | Bin 0 -> 574 bytes src/nvim/testdir/test8.in | 46 + src/nvim/testdir/test8.ok | 7 + src/nvim/testdir/test80.in | 201 + src/nvim/testdir/test80.ok | 131 + src/nvim/testdir/test81.in | 22 + src/nvim/testdir/test81.ok | 6 + src/nvim/testdir/test82.in | 103 + src/nvim/testdir/test82.ok | 5 + src/nvim/testdir/test83-tags2 | 2 + src/nvim/testdir/test83-tags3 | 102 + src/nvim/testdir/test83.in | 76 + src/nvim/testdir/test83.ok | 4 + src/nvim/testdir/test84.in | 35 + src/nvim/testdir/test84.ok | 3 + src/nvim/testdir/test85.in | 85 + src/nvim/testdir/test85.ok | 7 + src/nvim/testdir/test86.in | 1429 ++++ src/nvim/testdir/test86.ok | 1266 ++++ src/nvim/testdir/test87.in | 1406 ++++ src/nvim/testdir/test87.ok | 1266 ++++ src/nvim/testdir/test88.in | 88 + src/nvim/testdir/test88.ok | 24 + src/nvim/testdir/test89.in | 71 + src/nvim/testdir/test89.ok | 28 + src/nvim/testdir/test9.in | 12 + src/nvim/testdir/test9.ok | 2 + src/nvim/testdir/test90.in | 53 + src/nvim/testdir/test90.ok | 6 + src/nvim/testdir/test91.in | 111 + src/nvim/testdir/test91.ok | 48 + src/nvim/testdir/test92.in | 48 + src/nvim/testdir/test92.ok | 26 + src/nvim/testdir/test93.in | 48 + src/nvim/testdir/test93.ok | 26 + src/nvim/testdir/test94.in | 95 + src/nvim/testdir/test94.ok | 20 + src/nvim/testdir/test95.in | 135 + src/nvim/testdir/test95.ok | 122 + src/nvim/testdir/test96.in | 142 + src/nvim/testdir/test96.ok | 9 + src/nvim/testdir/test97.in | 17 + src/nvim/testdir/test97.ok | 5 + src/nvim/testdir/test98.in | 43 + src/nvim/testdir/test98.ok | 1 + src/nvim/testdir/test99.in | 68 + src/nvim/testdir/test99.ok | 24 + src/nvim/testdir/test_eval.in | 57 + src/nvim/testdir/test_eval.ok | 11 + src/nvim/testdir/test_eval_func.vim | 12 + src/nvim/testdir/unix.vim | 3 + 228 files changed, 34165 insertions(+) create mode 100644 src/nvim/testdir/Makefile create mode 100644 src/nvim/testdir/dotest.in create mode 100644 src/nvim/testdir/sautest/autoload/Test104.vim create mode 100644 src/nvim/testdir/sautest/autoload/footest.vim create mode 100644 src/nvim/testdir/test1.in create mode 100644 src/nvim/testdir/test1.ok create mode 100644 src/nvim/testdir/test10.in create mode 100644 src/nvim/testdir/test10.ok create mode 100644 src/nvim/testdir/test100.in create mode 100644 src/nvim/testdir/test100.ok create mode 100644 src/nvim/testdir/test101.in create mode 100644 src/nvim/testdir/test101.ok create mode 100644 src/nvim/testdir/test102.in create mode 100644 src/nvim/testdir/test102.ok create mode 100644 src/nvim/testdir/test103.in create mode 100644 src/nvim/testdir/test103.ok create mode 100644 src/nvim/testdir/test104.in create mode 100644 src/nvim/testdir/test104.ok create mode 100644 src/nvim/testdir/test105.in create mode 100644 src/nvim/testdir/test105.ok create mode 100644 src/nvim/testdir/test106.in create mode 100644 src/nvim/testdir/test106.ok create mode 100644 src/nvim/testdir/test10a.in create mode 100644 src/nvim/testdir/test10a.ok create mode 100644 src/nvim/testdir/test11.in create mode 100644 src/nvim/testdir/test11.ok create mode 100644 src/nvim/testdir/test12.in create mode 100644 src/nvim/testdir/test12.ok create mode 100644 src/nvim/testdir/test13.in create mode 100644 src/nvim/testdir/test13.ok create mode 100644 src/nvim/testdir/test14.in create mode 100644 src/nvim/testdir/test14.ok create mode 100644 src/nvim/testdir/test15.in create mode 100644 src/nvim/testdir/test15.ok create mode 100644 src/nvim/testdir/test16.in create mode 100644 src/nvim/testdir/test16.ok create mode 100644 src/nvim/testdir/test17.in create mode 100644 src/nvim/testdir/test17.ok create mode 100644 src/nvim/testdir/test17a.in create mode 100644 src/nvim/testdir/test18.in create mode 100644 src/nvim/testdir/test18.ok create mode 100644 src/nvim/testdir/test19.in create mode 100644 src/nvim/testdir/test19.ok create mode 100644 src/nvim/testdir/test2.in create mode 100644 src/nvim/testdir/test2.ok create mode 100644 src/nvim/testdir/test20.in create mode 100644 src/nvim/testdir/test20.ok create mode 100644 src/nvim/testdir/test21.in create mode 100644 src/nvim/testdir/test21.ok create mode 100644 src/nvim/testdir/test22.in create mode 100644 src/nvim/testdir/test22.ok create mode 100644 src/nvim/testdir/test23.in create mode 100644 src/nvim/testdir/test23.ok create mode 100644 src/nvim/testdir/test24.in create mode 100644 src/nvim/testdir/test24.ok create mode 100644 src/nvim/testdir/test25.in create mode 100644 src/nvim/testdir/test25.ok create mode 100644 src/nvim/testdir/test26.in create mode 100644 src/nvim/testdir/test26.ok create mode 100644 src/nvim/testdir/test27.in create mode 100644 src/nvim/testdir/test27.ok create mode 100644 src/nvim/testdir/test28.in create mode 100644 src/nvim/testdir/test28.ok create mode 100644 src/nvim/testdir/test29.in create mode 100644 src/nvim/testdir/test29.ok create mode 100644 src/nvim/testdir/test3.in create mode 100644 src/nvim/testdir/test3.ok create mode 100644 src/nvim/testdir/test30.in create mode 100644 src/nvim/testdir/test30.ok create mode 100644 src/nvim/testdir/test31.in create mode 100644 src/nvim/testdir/test31.ok create mode 100644 src/nvim/testdir/test32.in create mode 100644 src/nvim/testdir/test32.ok create mode 100644 src/nvim/testdir/test33.in create mode 100644 src/nvim/testdir/test33.ok create mode 100644 src/nvim/testdir/test34.in create mode 100644 src/nvim/testdir/test34.ok create mode 100644 src/nvim/testdir/test35.in create mode 100644 src/nvim/testdir/test35.ok create mode 100644 src/nvim/testdir/test36.in create mode 100644 src/nvim/testdir/test36.ok create mode 100644 src/nvim/testdir/test37.in create mode 100644 src/nvim/testdir/test37.ok create mode 100644 src/nvim/testdir/test38.in create mode 100644 src/nvim/testdir/test38.ok create mode 100644 src/nvim/testdir/test39.in create mode 100644 src/nvim/testdir/test39.ok create mode 100644 src/nvim/testdir/test4.in create mode 100644 src/nvim/testdir/test4.ok create mode 100644 src/nvim/testdir/test40.in create mode 100644 src/nvim/testdir/test40.ok create mode 100644 src/nvim/testdir/test41.in create mode 100644 src/nvim/testdir/test41.ok create mode 100644 src/nvim/testdir/test42.in create mode 100644 src/nvim/testdir/test42.ok create mode 100644 src/nvim/testdir/test43.in create mode 100644 src/nvim/testdir/test43.ok create mode 100644 src/nvim/testdir/test44.in create mode 100644 src/nvim/testdir/test44.ok create mode 100644 src/nvim/testdir/test45.in create mode 100644 src/nvim/testdir/test45.ok create mode 100644 src/nvim/testdir/test46.in create mode 100644 src/nvim/testdir/test46.ok create mode 100644 src/nvim/testdir/test47.in create mode 100644 src/nvim/testdir/test47.ok create mode 100644 src/nvim/testdir/test48.in create mode 100644 src/nvim/testdir/test48.ok create mode 100644 src/nvim/testdir/test49.in create mode 100644 src/nvim/testdir/test49.ok create mode 100644 src/nvim/testdir/test49.vim create mode 100644 src/nvim/testdir/test5.in create mode 100644 src/nvim/testdir/test5.ok create mode 100644 src/nvim/testdir/test50.in create mode 100644 src/nvim/testdir/test50.ok create mode 100644 src/nvim/testdir/test51.in create mode 100644 src/nvim/testdir/test51.ok create mode 100644 src/nvim/testdir/test52.in create mode 100644 src/nvim/testdir/test52.ok create mode 100644 src/nvim/testdir/test53.in create mode 100644 src/nvim/testdir/test53.ok create mode 100644 src/nvim/testdir/test54.in create mode 100644 src/nvim/testdir/test54.ok create mode 100644 src/nvim/testdir/test55.in create mode 100644 src/nvim/testdir/test55.ok create mode 100644 src/nvim/testdir/test56.in create mode 100644 src/nvim/testdir/test56.ok create mode 100644 src/nvim/testdir/test57.in create mode 100644 src/nvim/testdir/test57.ok create mode 100644 src/nvim/testdir/test58.in create mode 100644 src/nvim/testdir/test58.ok create mode 100644 src/nvim/testdir/test59.in create mode 100644 src/nvim/testdir/test59.ok create mode 100644 src/nvim/testdir/test6.in create mode 100644 src/nvim/testdir/test6.ok create mode 100644 src/nvim/testdir/test60.in create mode 100644 src/nvim/testdir/test60.ok create mode 100644 src/nvim/testdir/test60.vim create mode 100644 src/nvim/testdir/test61.in create mode 100644 src/nvim/testdir/test61.ok create mode 100644 src/nvim/testdir/test62.in create mode 100644 src/nvim/testdir/test62.ok create mode 100644 src/nvim/testdir/test63.in create mode 100644 src/nvim/testdir/test63.ok create mode 100644 src/nvim/testdir/test64.in create mode 100644 src/nvim/testdir/test64.ok create mode 100644 src/nvim/testdir/test65.in create mode 100644 src/nvim/testdir/test65.ok create mode 100644 src/nvim/testdir/test66.in create mode 100644 src/nvim/testdir/test66.ok create mode 100644 src/nvim/testdir/test67.in create mode 100644 src/nvim/testdir/test67.ok create mode 100644 src/nvim/testdir/test68.in create mode 100644 src/nvim/testdir/test68.ok create mode 100644 src/nvim/testdir/test69.in create mode 100644 src/nvim/testdir/test69.ok create mode 100644 src/nvim/testdir/test7.in create mode 100644 src/nvim/testdir/test7.ok create mode 100644 src/nvim/testdir/test70.in create mode 100644 src/nvim/testdir/test70.ok create mode 100644 src/nvim/testdir/test71.in create mode 100644 src/nvim/testdir/test71.ok create mode 100644 src/nvim/testdir/test71a.in create mode 100644 src/nvim/testdir/test72.in create mode 100644 src/nvim/testdir/test72.ok create mode 100644 src/nvim/testdir/test73.in create mode 100644 src/nvim/testdir/test73.ok create mode 100644 src/nvim/testdir/test74.in create mode 100644 src/nvim/testdir/test74.ok create mode 100644 src/nvim/testdir/test75.in create mode 100644 src/nvim/testdir/test75.ok create mode 100644 src/nvim/testdir/test76.in create mode 100644 src/nvim/testdir/test76.ok create mode 100644 src/nvim/testdir/test77.in create mode 100644 src/nvim/testdir/test77.ok create mode 100644 src/nvim/testdir/test78.in create mode 100644 src/nvim/testdir/test78.ok create mode 100644 src/nvim/testdir/test79.in create mode 100644 src/nvim/testdir/test79.ok create mode 100644 src/nvim/testdir/test8.in create mode 100644 src/nvim/testdir/test8.ok create mode 100644 src/nvim/testdir/test80.in create mode 100644 src/nvim/testdir/test80.ok create mode 100644 src/nvim/testdir/test81.in create mode 100644 src/nvim/testdir/test81.ok create mode 100644 src/nvim/testdir/test82.in create mode 100644 src/nvim/testdir/test82.ok create mode 100644 src/nvim/testdir/test83-tags2 create mode 100644 src/nvim/testdir/test83-tags3 create mode 100644 src/nvim/testdir/test83.in create mode 100644 src/nvim/testdir/test83.ok create mode 100644 src/nvim/testdir/test84.in create mode 100644 src/nvim/testdir/test84.ok create mode 100644 src/nvim/testdir/test85.in create mode 100644 src/nvim/testdir/test85.ok create mode 100644 src/nvim/testdir/test86.in create mode 100644 src/nvim/testdir/test86.ok create mode 100644 src/nvim/testdir/test87.in create mode 100644 src/nvim/testdir/test87.ok create mode 100644 src/nvim/testdir/test88.in create mode 100644 src/nvim/testdir/test88.ok create mode 100644 src/nvim/testdir/test89.in create mode 100644 src/nvim/testdir/test89.ok create mode 100644 src/nvim/testdir/test9.in create mode 100644 src/nvim/testdir/test9.ok create mode 100644 src/nvim/testdir/test90.in create mode 100644 src/nvim/testdir/test90.ok create mode 100644 src/nvim/testdir/test91.in create mode 100644 src/nvim/testdir/test91.ok create mode 100644 src/nvim/testdir/test92.in create mode 100644 src/nvim/testdir/test92.ok create mode 100644 src/nvim/testdir/test93.in create mode 100644 src/nvim/testdir/test93.ok create mode 100644 src/nvim/testdir/test94.in create mode 100644 src/nvim/testdir/test94.ok create mode 100644 src/nvim/testdir/test95.in create mode 100644 src/nvim/testdir/test95.ok create mode 100644 src/nvim/testdir/test96.in create mode 100644 src/nvim/testdir/test96.ok create mode 100644 src/nvim/testdir/test97.in create mode 100644 src/nvim/testdir/test97.ok create mode 100644 src/nvim/testdir/test98.in create mode 100644 src/nvim/testdir/test98.ok create mode 100644 src/nvim/testdir/test99.in create mode 100644 src/nvim/testdir/test99.ok create mode 100644 src/nvim/testdir/test_eval.in create mode 100644 src/nvim/testdir/test_eval.ok create mode 100644 src/nvim/testdir/test_eval_func.vim create mode 100644 src/nvim/testdir/unix.vim (limited to 'src/nvim/testdir') diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile new file mode 100644 index 0000000000..f720d7a2b4 --- /dev/null +++ b/src/nvim/testdir/Makefile @@ -0,0 +1,156 @@ +# +# Makefile to run all tests for Vim +# + +export SHELL := sh + +VIMPROG := ../../build/bin/nvim + +SCRIPTS := test_eval.out \ + test1.out test2.out test3.out test4.out test5.out \ + test6.out test7.out test8.out test9.out test10.out \ + test11.out test12.out test13.out test14.out test15.out \ + test17.out test18.out test19.out test20.out \ + test21.out test22.out test23.out test24.out test25.out \ + test26.out test27.out test28.out test29.out test30.out \ + test31.out test32.out test33.out test34.out test35.out \ + test36.out test37.out test38.out test39.out test40.out \ + test41.out test42.out test43.out test44.out test45.out \ + test46.out test47.out test48.out test49.out \ + test51.out test52.out test53.out test54.out test55.out \ + test56.out test57.out test58.out test59.out test60.out \ + test61.out test62.out test63.out test64.out test65.out \ + test66.out test67.out test68.out test69.out test70.out \ + test71.out test72.out test73.out test74.out test75.out \ + test76.out test77.out test78.out test79.out test80.out \ + test81.out test82.out test83.out test84.out test85.out \ + test86.out test87.out test88.out test89.out test90.out \ + test91.out test92.out test93.out test94.out test95.out \ + test96.out test97.out test98.out test99.out test100.out \ + test101.out test102.out test103.out test104.out test105.out \ + test106.out + +SCRIPTS_GUI := test16.out + + +ifdef VALGRIND_GDB + VGDB := --vgdb=yes \ + --vgdb-error=0 +endif + +ifdef USE_VALGRIND + VALGRIND_TOOL := --tool=memcheck \ + --leak-check=yes \ + --track-origins=yes +# VALGRIND_TOOL := exp-sgcheck + TOOL := valgrind -q \ + -q \ + $(VALGRIND_TOOL) \ + --suppressions=../../.valgrind.supp \ + --error-exitcode=123 \ + --log-file=valgrind.\%p.$* \ + $(VGDB) \ + --trace-children=yes +else + ifdef USE_GDB + TOOL = gdb --args + endif +endif + +ifdef TESTNUM + SCRIPTS := test$(TESTNUM).out +endif + +nongui: nolog $(SCRIPTS) report + +gui: nolog $(SCRIPTS) $(SCRIPTS_GUI) report + +.gdbinit: + echo 'set $$_exitcode = -1\nrun\nif $$_exitcode != -1\n quit\nend' > .gdbinit + +report: + @echo + @echo 'Test results:' + @/bin/sh -c "if test -f test.log; then \ + cat test.log; \ + echo TEST FAILURE; \ + exit 1; \ + else \ + echo ALL DONE; \ + fi" + +$(SCRIPTS) $(SCRIPTS_GUI): $(VIMPROG) + +RM_ON_RUN := test.out X* viminfo +RM_ON_START := tiny.vim small.vim mbyte.vim mzscheme.vim lua.vim test.ok +RUN_VIM := $(TOOL) $(VIMPROG) -u unix.vim -U NONE --noplugin -s dotest.in + +clean: + -rm -rf *.out \ + *.failed \ + *.rej \ + *.orig \ + test.log \ + $(RM_ON_RUN) \ + $(RM_ON_START) \ + valgrind.* \ + .*.swp \ + .*.swo + +test1.out: .gdbinit test1.in + -rm -rf $*.failed $(RM_ON_RUN) $(RM_ON_START) wrongtermsize + $(RUN_VIM) $*.in + @/bin/sh -c "if test -e wrongtermsize; then \ + echo; \ + echo test1 FAILED - terminal size must be 80x24 or larger; \ + echo; exit 1; \ + elif diff test.out $*.ok; then \ + mv -f test.out $*.out; \ + else \ + echo; \ + echo test1 FAILED - Something basic is wrong; \ + echo; \ + exit 1; \ + fi" + -rm -rf X* viminfo + +%.out: %.in .gdbinit + -rm -rf $*.failed test.ok $(RM_ON_RUN) + cp $*.ok test.ok + # Sleep a moment to avoid that the xterm title is messed up. + # 200 msec is sufficient, but only modern sleep supports a fraction of + # a second, fall back to a second if it fails. + @-/bin/sh -c "sleep .2 > /dev/null 2>&1 || sleep 1" + $(RUN_VIM) $*.in + + # For flaky tests retry one time. + @/bin/sh -c "if test -f test.out -a $* = test61; then \ + if diff test.out $*.ok; then \ + echo flaky test ok first time; \ + else rm -rf $*.failed $(RM_ON_RUN); \ + $(RUN_VIM) $*.in; \ + fi; \ + fi" + + # Check if the test.out file matches test.ok. + @/bin/sh -c "if test -f test.out; then \ + if diff test.out $*.ok; then \ + mv -f test.out $*.out; \ + else \ + echo $* FAILED >> test.log; \ + mv -f test.out $*.failed; \ + fi; \ + else \ + echo $* NO OUTPUT >>test.log; \ + fi" + @/bin/sh -c "if test -f valgrind; then \ + mv -f valgrind valgrind.$*; \ + fi" + -rm -rf X* test.ok viminfo + +test49.out: test49.vim + +test60.out: test60.vim + +nolog: + -rm -f test.log diff --git a/src/nvim/testdir/dotest.in b/src/nvim/testdir/dotest.in new file mode 100644 index 0000000000..b2a0e1a68e --- /dev/null +++ b/src/nvim/testdir/dotest.in @@ -0,0 +1,3 @@ +:set cp +:map dotest /^STARTTEST j:set ff=unix cpo-=A :.,/ENDTEST/-1w! Xdotest :set ff& cpo+=A nj0:so! Xdotest dotest +dotest diff --git a/src/nvim/testdir/sautest/autoload/Test104.vim b/src/nvim/testdir/sautest/autoload/Test104.vim new file mode 100644 index 0000000000..d1e0e17a3b --- /dev/null +++ b/src/nvim/testdir/sautest/autoload/Test104.vim @@ -0,0 +1 @@ +let Test104#numvar = 123 diff --git a/src/nvim/testdir/sautest/autoload/footest.vim b/src/nvim/testdir/sautest/autoload/footest.vim new file mode 100644 index 0000000000..f467bc376d --- /dev/null +++ b/src/nvim/testdir/sautest/autoload/footest.vim @@ -0,0 +1,5 @@ +" Autoload script used by test55 and test60 +let footest#x = 1 +func footest#F() + return 0 +endfunc diff --git a/src/nvim/testdir/test1.in b/src/nvim/testdir/test1.in new file mode 100644 index 0000000000..735d539673 --- /dev/null +++ b/src/nvim/testdir/test1.in @@ -0,0 +1,57 @@ + +First a simple test to check if the test script works. + +If Vim was not compiled with the +eval feature, the small.vim script will be +set to copy the test.ok file to test.out, so that it looks like the test +succeeded. Otherwise an empty small.vim is written. small.vim is sourced by +tests that require the +eval feature or other features that are missing in the +small version. + +If Vim was not compiled with the +windows feature, the tiny.vim script will be +set like small.vim above. tiny.vim is sourced by tests that require the ++windows feature or other features that are missing in the tiny version. + +If Vim was not compiled with the +multi_byte feature, the mbyte.vim script will +be set like small.vim above. mbyte.vim is sourced by tests that require the ++multi_byte feature. +Similar logic is applied to the +mzscheme feature, using mzscheme.vim. +Similar logic is applied to the +lua feature, using lua.vim. + +STARTTEST +:" If columns or lines are too small, create wrongtermsize. +:" (Some tests will fail. When columns and/or lines are small) +:if &lines < 24 || &columns < 80 | sp another | w! wrongtermsize | qa! | endif +:" +:" Write a single line to test.out to check if testing works at all. +:%d +athis is a test:w! test.out +:" Create small.vim and tiny.vim empty, create mbyte.vim to skip the test. +0D:w! small.vim +:w! tiny.vim +ae! test.ok +w! test.out +qa! +:w! mbyte.vim +:w! mzscheme.vim +:w! lua.vim +:" +:" If +multi_byte feature supported, make mbyte.vim empty. +:if has("multi_byte") | sp another | w! mbyte.vim | q | endif +:" +:" If +mzscheme feature supported, make mzscheme.vim empty. +:if has("mzscheme") | sp another | w! mzscheme.vim | q | endif +:" +:" If +lua feature supported, make lua.vim empty. +:if has("lua") | sp another | w! lua.vim | q | endif +:" +:" If +eval feature supported quit here, leaving tiny.vim and small.vim empty. +:" Otherwise write small.vim to skip the test. +:if 1 | q! | endif +:w! small.vim +:" If +windows feature not supported :sp will fail and tiny.vim will be +:" written to skip the test. +:sp another +:wq! tiny.vim +:qa! +ENDTEST + diff --git a/src/nvim/testdir/test1.ok b/src/nvim/testdir/test1.ok new file mode 100644 index 0000000000..90bfcb5106 --- /dev/null +++ b/src/nvim/testdir/test1.ok @@ -0,0 +1 @@ +this is a test diff --git a/src/nvim/testdir/test10.in b/src/nvim/testdir/test10.in new file mode 100644 index 0000000000..2d0d546606 --- /dev/null +++ b/src/nvim/testdir/test10.in @@ -0,0 +1,114 @@ +Test for 'errorformat'. This will fail if the quickfix feature was disabled. + +STARTTEST +:so small.vim +:" Also test a BOM is ignored. +:so mbyte.vim +:set encoding=utf-8 +:7/start of errorfile/,/end of errorfile/w! Xerrorfile1 +:7/start of errorfile/,/end of errorfile/-1w! Xerrorfile2 +:/start of testfile/,/end of testfile/w! Xtestfile +:set efm+==%f=\\,\ line\ %l%*\\D%v%*[^\ ]\ %m +:set efm^=%AError\ in\ \"%f\"\ at\ line\ %l:,%Z%p^,%C%m +:cf Xerrorfile2 +:clast +:copen +:let a=w:quickfix_title +:wincmd p +lgR=a  +:cf Xerrorfile1 +grA +:cn +gRLINE 6, COL 19 +:cn +gRNO COLUMN SPECIFIED +:cn +gRAGAIN NO COLUMN +:cn +gRCOL 1 +:cn +gRCOL 2 +:cn +gRCOL 10 +:cn +gRVCOL 10 +:cn +grI +:cn +gR. SPACE POINTER +:cn +gR. DOT POINTER +:cn +gR. DASH POINTER +:cn +gR. TAB-SPACE POINTER +:clast +:cprev +:cprev +:wincmd w +:let a=w:quickfix_title +:wincmd p +lgR=a  +:w! test.out " Write contents of this file +:qa! +ENDTEST + +start of errorfile +"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set. +"Xtestfile", line 6 col 19; this is an error +gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c +Xtestfile:9: parse error before `asd' +make: *** [vim] Error 1 +in file "Xtestfile" linenr 10: there is an error + +2 returned +"Xtestfile", line 11 col 1; this is an error +"Xtestfile", line 12 col 2; this is another error +"Xtestfile", line 14:10; this is an error in column 10 +=Xtestfile=, line 15:10; this is another error, but in vcol 10 this time +"Xtestfile", linenr 16: yet another problem +Error in "Xtestfile" at line 17: +x should be a dot + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 + ^ +Error in "Xtestfile" at line 18: +x should be a dot + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 +.............^ +Error in "Xtestfile" at line 19: +x should be a dot + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 +--------------^ +Error in "Xtestfile" at line 20: +x should be a dot + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 + ^ + +Does anyone know what is the problem and how to correction it? +"Xtestfile", line 21 col 9: What is the title of the quickfix window? +"Xtestfile", line 22 col 9: What is the title of the quickfix window? +end of errorfile + +start of testfile + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 4 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 6 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 9 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 10 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 12 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 14 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 15 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 17 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 18 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 19 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 20 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 21 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 22 +end of testfile diff --git a/src/nvim/testdir/test10.ok b/src/nvim/testdir/test10.ok new file mode 100644 index 0000000000..76a02f40b4 --- /dev/null +++ b/src/nvim/testdir/test10.ok @@ -0,0 +1,23 @@ +start of testfile + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 2 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 3 + xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx line 4 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 5 + xxxxxxxxxxxxxxxxxLINE 6, COL 19 line 6 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 7 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 8 + NO COLUMN SPECIFIEDxxxxxxxxxxx line 9 + AGAIN NO COLUMNxxxxxxxxxxxxxxx line 10 +COL 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 11 + COL 2xxxxxxxxxxxxxxxxxxxxxxxxx line 12 + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 13 + xxxxxxxxCOL 10xxxxxxxxxxxxxxxx line 14 + xVCOL 10xxxxxxxxxxxxxxxxxxxxxx line 15 + Ixxxxxxxxxxxxxxxxxxxxxxxxxxxxx line 16 + xxxx. SPACE POINTERxxxxxxxxxxx line 17 + xxxxx. DOT POINTERxxxxxxxxxxxx line 18 + xxxxxx. DASH POINTERxxxxxxxxxx line 19 + xxxxxxx. TAB-SPACE POINTERxxxx line 20 + xxxxxxxx:cf Xerrorfile1xxxxxxx line 21 + xxxxxxxx:cf Xerrorfile2xxxxxxx line 22 +end of testfile diff --git a/src/nvim/testdir/test100.in b/src/nvim/testdir/test100.in new file mode 100644 index 0000000000..e42331946c --- /dev/null +++ b/src/nvim/testdir/test100.in @@ -0,0 +1,42 @@ +Tests for 'undolevel' setting being global-local + +STARTTEST +:so small.vim +:set nocompatible viminfo+=nviminfo ul=5 +:fu! FillBuffer() + :for i in range(1,13) + :put=i + :exe "setg ul=" . &g:ul + :endfor +:endfu +:fu! UndoLevel() + :redir @a | setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |redir end + :$put a +:endfu +:new one +:0put ='ONE: expecting global undolevels: 5, local undolevels: -123456 (default)' +:call FillBuffer() +:call feedkeys(":earlier 10\n", 't') +:call UndoLevel() +:%w! test.out +:new two +:0put ='TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards)' +:setlocal ul=2 +:call FillBuffer() +:call feedkeys(":earlier 10\n", 't') +:call UndoLevel() +:setlocal ul=10 +:call UndoLevel() +:%w >> test.out +:wincmd p +:redir >>test.out | echo "global value shouldn't be changed and still be 5!" | echo 'ONE: expecting global undolevels: 5, local undolevels: -123456 (default)'|:setglobal undolevels? | echon ' global' | setlocal undolevels? | echon ' local' |echo "" |redir end +:new three +:setglobal ul=50 +:1put ='global value should be changed to 50' +:2put ='THREE: expecting global undolevels: 50, local undolevels: -123456 (default)' +:call UndoLevel() +:%w >> test.out +:"sleep 10 +:qa! +ENDTEST + diff --git a/src/nvim/testdir/test100.ok b/src/nvim/testdir/test100.ok new file mode 100644 index 0000000000..95b318461c --- /dev/null +++ b/src/nvim/testdir/test100.ok @@ -0,0 +1,41 @@ +ONE: expecting global undolevels: 5, local undolevels: -123456 (default) +1 +2 +3 +4 +5 +6 +7 + + + undolevels=5 global + undolevels=-123456 local +TWO: expecting global undolevels: 5, local undolevels: 2 (first) then 10 (afterwards) +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 + + + undolevels=5 global + undolevels=2 local + + undolevels=5 global + undolevels=10 local + +global value shouldn't be changed and still be 5! +ONE: expecting global undolevels: 5, local undolevels: -123456 (default) + undolevels=5 global + undolevels=-123456 local + +global value should be changed to 50 +THREE: expecting global undolevels: 50, local undolevels: -123456 (default) + + undolevels=50 global + undolevels=-123456 local diff --git a/src/nvim/testdir/test101.in b/src/nvim/testdir/test101.in new file mode 100644 index 0000000000..04c934f2c5 --- /dev/null +++ b/src/nvim/testdir/test101.in @@ -0,0 +1,45 @@ +Test for v:hlsearch vim: set ft=vim : + +STARTTEST +:" Last abc: Q +:so small.vim +:new +:call setline(1, repeat(['aaa'], 10)) +:set hlsearch nolazyredraw +:let r=[] +:command -nargs=0 -bar AddR :call add(r, [screenattr(1, 1), v:hlsearch]) +/aaa +:AddR +:nohlsearch +:AddR +:let v:hlsearch=1 +:AddR +:let v:hlsearch=0 +:AddR +:set hlsearch +:AddR +:let v:hlsearch=0 +:AddR +n:AddR +:let v:hlsearch=0 +:AddR +/ +:AddR +:let r1=r[0][0] +:" I guess it is not guaranteed that screenattr outputs always the same character +:call map(r, 'v:val[1].":".(v:val[0]==r1?"highlighted":"not highlighted")') +:try +: let v:hlsearch=[] +:catch +: call add(r, matchstr(v:exception,'^Vim(let):E\d\+:')) +:endtry +:bwipeout! +:$put=r +:call garbagecollect(1) +:" +:/^start:/,$wq! test.out +:" vim: et ts=4 isk-=\: +:call getchar() +ENDTEST + +start: diff --git a/src/nvim/testdir/test101.ok b/src/nvim/testdir/test101.ok new file mode 100644 index 0000000000..3ed7436cf7 --- /dev/null +++ b/src/nvim/testdir/test101.ok @@ -0,0 +1,11 @@ +start: +1:highlighted +0:not highlighted +1:highlighted +0:not highlighted +1:highlighted +0:not highlighted +1:highlighted +0:not highlighted +1:highlighted +Vim(let):E706: diff --git a/src/nvim/testdir/test102.in b/src/nvim/testdir/test102.in new file mode 100644 index 0000000000..35e9f6c2cf --- /dev/null +++ b/src/nvim/testdir/test102.in @@ -0,0 +1,12 @@ +Test if fnameescape is correct for special chars like ! + +STARTTEST +:%d +:let fname = 'Xspa ce' +:try | exe "w! " . fnameescape(fname) | put='Space' | endtry +:let fname = 'Xemark!' +:try | exe "w! " . fnameescape(fname) | put='ExclamationMark' | endtry +:w! test.out +:qa! +ENDTEST + diff --git a/src/nvim/testdir/test102.ok b/src/nvim/testdir/test102.ok new file mode 100644 index 0000000000..a25fea192c --- /dev/null +++ b/src/nvim/testdir/test102.ok @@ -0,0 +1,3 @@ + +Space +ExclamationMark diff --git a/src/nvim/testdir/test103.in b/src/nvim/testdir/test103.in new file mode 100644 index 0000000000..7c7591e3b9 --- /dev/null +++ b/src/nvim/testdir/test103.in @@ -0,0 +1,37 @@ +Test for visual mode not being reset causing E315 error. +STARTTEST +:so small.vim +:enew +:let g:msg="Everything's fine." +:function! TriggerTheProblem() +: " At this point there is no visual selection because :call reset it. +: " Let's restore the selection: +: normal gv +: '<,'>del _ +: try +: exe "normal \" +: catch /^Vim\%((\a\+)\)\=:E315/ +: echom 'Snap! E315 error!' +: let g:msg='Snap! E315 error!' +: endtry +:endfunction +:enew +:setl buftype=nofile +:call append(line('$'), 'Delete this line.') +:" +:" +:" NOTE: this has to be done by a call to a function because executing :del the +:" ex-way will require the colon operator which resets the visual mode thus +:" preventing the problem: +:" +GV:call TriggerTheProblem() +:%del _ +:call append(line('$'), g:msg) +:w! test.out +:brewind +ENDTEST + +STARTTEST +:qa! +ENDTEST + diff --git a/src/nvim/testdir/test103.ok b/src/nvim/testdir/test103.ok new file mode 100644 index 0000000000..9ea6dd6eea --- /dev/null +++ b/src/nvim/testdir/test103.ok @@ -0,0 +1,2 @@ + +Everything's fine. diff --git a/src/nvim/testdir/test104.in b/src/nvim/testdir/test104.in new file mode 100644 index 0000000000..fd847131e9 --- /dev/null +++ b/src/nvim/testdir/test104.in @@ -0,0 +1,30 @@ +Tests for :let. vim: set ft=vim ts=8 : + +STARTTEST +:so small.vim +:set runtimepath+=./sautest +:" Test to not autoload when assigning. It causes internal error. +:try +: let Test104#numvar = function('tr') +: $put ='OK: ' . string(Test104#numvar) +:catch +: $put ='FAIL: ' . v:exception +:endtry +:let a = 1 +:let b = 2 +:for letargs in ['a b', '{0 == 1 ? "a" : "b"}', '{0 == 1 ? "a" : "b"} a', 'a {0 == 1 ? "a" : "b"}'] +: try +: redir => messages +: execute 'let' letargs +: redir END +: $put ='OK:' +: $put =split(substitute(messages, '\n', '\0 ', 'g'), '\n') +: catch +: $put ='FAIL: ' . v:exception +: redir END +: endtry +:endfor +:/^Results/,$wq! test.out +ENDTEST + +Results of test104: diff --git a/src/nvim/testdir/test104.ok b/src/nvim/testdir/test104.ok new file mode 100644 index 0000000000..5fb20945c3 --- /dev/null +++ b/src/nvim/testdir/test104.ok @@ -0,0 +1,13 @@ +Results of test104: +OK: function('tr') +OK: + a #1 + b #2 +OK: + b #2 +OK: + b #2 + a #1 +OK: + a #1 + b #2 diff --git a/src/nvim/testdir/test105.in b/src/nvim/testdir/test105.in new file mode 100644 index 0000000000..284f3bf4eb --- /dev/null +++ b/src/nvim/testdir/test105.in @@ -0,0 +1,45 @@ +Test filename modifiers vim: set ft=vim : + +STARTTEST +:source small.vim +:%delete _ +:set shell=sh +:set shellslash +:let tab="\t" +:command -nargs=1 Put :let expr= | $put =expr.tab.strtrans(string(eval(expr))) +:let $HOME=fnamemodify('.', ':p:h:h:h') +:Put fnamemodify('.', ':p' )[-1:] +:Put fnamemodify('.', ':p:h' )[-1:] +:Put fnamemodify('test.out', ':p' )[-1:] +:Put fnamemodify('test.out', ':.' ) +:Put fnamemodify('../testdir/a', ':.' ) +:Put fnamemodify('test.out', ':~' ) +:Put fnamemodify('../testdir/a', ':~' ) +:Put fnamemodify('../testdir/a', ':t' ) +:Put fnamemodify('.', ':p:t' ) +:Put fnamemodify('test.out', ':p:t' ) +:Put fnamemodify('test.out', ':p:e' ) +:Put fnamemodify('test.out', ':p:t:e' ) +:Put fnamemodify('abc.fb2.tar.gz', ':r' ) +:Put fnamemodify('abc.fb2.tar.gz', ':r:r' ) +:Put fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) +:Put substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') +:Put fnamemodify('abc.fb2.tar.gz', ':e' ) +:Put fnamemodify('abc.fb2.tar.gz', ':e:e' ) +:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) +:Put fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') +:Put fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) +:Put fnamemodify('abc def', ':S' ) +:Put fnamemodify('abc" "def', ':S' ) +:Put fnamemodify('abc"%"def', ':S' ) +:Put fnamemodify('abc'' ''def', ':S' ) +:Put fnamemodify('abc''%''def', ':S' ) +:Put fnamemodify("abc\ndef", ':S' ) +:set shell=tcsh +:Put fnamemodify("abc\ndef", ':S' ) +:$put ='vim: ts=8' +:1 delete _ +:w! test.out +:qa! +ENDTEST + diff --git a/src/nvim/testdir/test105.ok b/src/nvim/testdir/test105.ok new file mode 100644 index 0000000000..0681597c05 --- /dev/null +++ b/src/nvim/testdir/test105.ok @@ -0,0 +1,29 @@ +fnamemodify('.', ':p' )[-1:] '/' +fnamemodify('.', ':p:h' )[-1:] 'r' +fnamemodify('test.out', ':p' )[-1:] 't' +fnamemodify('test.out', ':.' ) 'test.out' +fnamemodify('../testdir/a', ':.' ) 'a' +fnamemodify('test.out', ':~' ) '~/src/testdir/test.out' +fnamemodify('../testdir/a', ':~' ) '~/src/testdir/a' +fnamemodify('../testdir/a', ':t' ) 'a' +fnamemodify('.', ':p:t' ) '' +fnamemodify('test.out', ':p:t' ) 'test.out' +fnamemodify('test.out', ':p:e' ) 'out' +fnamemodify('test.out', ':p:t:e' ) 'out' +fnamemodify('abc.fb2.tar.gz', ':r' ) 'abc.fb2.tar' +fnamemodify('abc.fb2.tar.gz', ':r:r' ) 'abc.fb2' +fnamemodify('abc.fb2.tar.gz', ':r:r:r' ) 'abc' +substitute(fnamemodify('abc.fb2.tar.gz', ':p:r:r'), '.*\(src/testdir/.*\)', '\1', '') 'src/testdir/abc.fb2' +fnamemodify('abc.fb2.tar.gz', ':e' ) 'gz' +fnamemodify('abc.fb2.tar.gz', ':e:e' ) 'tar.gz' +fnamemodify('abc.fb2.tar.gz', ':e:e:e' ) 'fb2.tar.gz' +fnamemodify('abc.fb2.tar.gz', ':e:e:e:e') 'fb2.tar.gz' +fnamemodify('abc.fb2.tar.gz', ':e:e:r' ) 'tar' +fnamemodify('abc def', ':S' ) '''abc def''' +fnamemodify('abc" "def', ':S' ) '''abc" "def''' +fnamemodify('abc"%"def', ':S' ) '''abc"%"def''' +fnamemodify('abc'' ''def', ':S' ) '''abc''\'''' ''\''''def''' +fnamemodify('abc''%''def', ':S' ) '''abc''\''''%''\''''def''' +fnamemodify("abc\ndef", ':S' ) '''abc^@def''' +fnamemodify("abc\ndef", ':S' ) '''abc\^@def''' +vim: ts=8 diff --git a/src/nvim/testdir/test106.in b/src/nvim/testdir/test106.in new file mode 100644 index 0000000000..eb99e650ae --- /dev/null +++ b/src/nvim/testdir/test106.in @@ -0,0 +1,16 @@ +Tests for errorformat. vim: set ft=vim ts=8 : + +STARTTEST +:so small.vim +:if !has('quickfix') | e! test.ok | wq! test.out | endif +:set efm=%EEEE%m,%WWWW%m,%+CCCC%.%#,%-GGGG%.%# +:cgetexpr ['WWWW', 'EEEE', 'CCCC'] +:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) +:cgetexpr ['WWWW', 'GGGG', 'EEEE', 'CCCC'] +:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) +:cgetexpr ['WWWW', 'GGGG', 'ZZZZ', 'EEEE', 'CCCC', 'YYYY'] +:$put =strtrans(string(map(getqflist(), '[v:val.text, v:val.valid]'))) +:/^Results/,$wq! test.out +ENDTEST + +Results of test106: diff --git a/src/nvim/testdir/test106.ok b/src/nvim/testdir/test106.ok new file mode 100644 index 0000000000..0a18cecf1c --- /dev/null +++ b/src/nvim/testdir/test106.ok @@ -0,0 +1,4 @@ +Results of test106: +[['W', 1], ['E^@CCCC', 1]] +[['W', 1], ['E^@CCCC', 1]] +[['W', 1], ['ZZZZ', 0], ['E^@CCCC', 1], ['YYYY', 0]] diff --git a/src/nvim/testdir/test10a.in b/src/nvim/testdir/test10a.in new file mode 100644 index 0000000000..19e8652fe5 --- /dev/null +++ b/src/nvim/testdir/test10a.in @@ -0,0 +1,73 @@ +Test for 'errorformat'. + +STARTTEST +:so small.vim +:/start of errorfile/,/end of errorfile/w! Xerrorfile +:/start of testfile/,/end of testfile/w! Xtestfile +:cf Xerrorfile +rA +:cn +rB +:cn +rC +:cn +rD +:cn +rE +:w! test.out " Write contents of this file +:qa! +ENDTEST + +start of errorfile + + printf(" %d \n", (number/other)%10 ); +..................^ +%CC-E-NOSEMI, Missing ";". +at line number 4 in file SYS$DISK:XTESTFILE + + other=10000000; +.............^ +%CC-E-UNDECLARED, In this statement, "oszt" is not declared. +at line number 7 in file SYS$DISK:XTESTFILE + + for (i = 0; i<7 ; i++ ){ +..................^ +%CC-E-UNDECLARED, In this statement, "i" is not declared. +at line number 16 in file SYS$DISK:XTESTFILE + +some other error somewhere here. +...........................^ +%CC-W-WARRING, Sorry, but no expalnation for such an warring. +at line number 19 in file SYS$DISK:XTESTFILE + +and finally some other error exactly here. +.....................................^ +%CC-I-INFORMATIONAL, It should be some informational message. +at line number 20 in file SYS$DISK:XTESTFILE + +Does anyone know what is the problem and how to correct ?? :) +end of errorfile + +start of testfile +01234567890123456789012345678901234567 +line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 16 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 19 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +end of testfile diff --git a/src/nvim/testdir/test10a.ok b/src/nvim/testdir/test10a.ok new file mode 100644 index 0000000000..10e78c9239 --- /dev/null +++ b/src/nvim/testdir/test10a.ok @@ -0,0 +1,23 @@ +start of testfile +01234567890123456789012345678901234567 +line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 4 xxxxxxxxxxAxxxxxxxxxxxxxxxxxxx +line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 7 xxxxxBxxxxxxxxxxxxxxxxxxxxxxxx +line 8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 10 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 11 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 12 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 14 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 15 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 16 xxxxxxxxxxCxxxxxxxxxxxxxxxxxxx +line 17 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 18 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 19 xxxxxxxxxxxxxxxxxxxDxxxxxxxxxx +line 20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxE +line 21 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 22 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +end of testfile diff --git a/src/nvim/testdir/test11.in b/src/nvim/testdir/test11.in new file mode 100644 index 0000000000..47de470a2d --- /dev/null +++ b/src/nvim/testdir/test11.in @@ -0,0 +1,84 @@ +Tests for autocommands: +- FileWritePre writing a compressed file +- FileReadPost reading a compressed file +- BufNewFile reading a file template +- BufReadPre decompressing the file to be read +- FilterReadPre substituting characters in the temp file +- FilterReadPost substituting characters after filtering +- FileReadPre set options for decompression +- FileReadPost decompress the file + +Note: This test is skipped if "gzip" is not available. +$GZIP is made empty, "-v" would cause trouble. +Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being +modified outside of Vim (noticed on Solaris). + +STARTTEST +:so small.vim +:" drop out when there is no gzip program +:if !executable("gzip") +: e! test.ok +: w! test.out +: qa! +:endif +:let $GZIP = "" +:au FileChangedShell * echo "caught FileChangedShell" +:set bin +:au FileWritePre *.gz '[,']!gzip +:au FileWritePost *.gz undo +:/^start of testfile/,/^end of testfile/w! Xtestfile.gz +:au FileReadPost *.gz '[,']!gzip -d +:$r Xtestfile.gz " Read and decompress the testfile +:?startstart?,$w! test.out " Write contents of this file +:au BufNewFile *.c read Xtest.c +:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c +:e! foo.c " Will load Xtest.c +:au FileAppendPre *.out '[,']s/new/NEW/ +:au FileAppendPost *.out !cat Xtest.c >>test.out +:w>>test.out " Append it to the output file +:au! FileAppendPre +:" setup autocommands to decompress before reading and re-compress afterwards +:au BufReadPre *.gz exe '!gzip -d ' . shellescape(expand("")) +:au BufReadPre *.gz call rename(expand(":r"), expand("")) +:au BufReadPost *.gz call rename(expand(""), expand(":r")) +:au BufReadPost *.gz exe '!gzip ' . shellescape(expand(":r")) +:e! Xtestfile.gz " Edit compressed file +:w>>test.out " Append it to the output file +:set shelltemp " need temp files here +:au FilterReadPre *.out call rename(expand(""), expand("") . ".t") +:au FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("")) . ".t >" . shellescape(expand("")) +:au FilterReadPre *.out exe '!rm ' . shellescape(expand("")) . '.t' +:au FilterReadPost *.out '[,']s/x/X/g +:e! test.out " Edit the output file +:23,$!cat +:23,$s/\r$// " remove CR for when sed adds them +:au! FileReadPre *.gz exe '!gzip -d ' . shellescape(expand("")) +:au FileReadPre *.gz call rename(expand(":r"), expand("")) +:au! FileReadPost *.gz '[,']s/l/L/ +:$r Xtestfile.gz " Read compressed file +:w " write it, after filtering +:au! " remove all autocommands +:e " Edit test.out again +:set nobin ff& " use the default fileformat for writing +:w +:qa! +ENDTEST + +startstart +start of testfile +line 2 Abcdefghijklmnopqrstuvwxyz +line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 4 Abcdefghijklmnopqrstuvwxyz +line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 6 Abcdefghijklmnopqrstuvwxyz +line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 8 Abcdefghijklmnopqrstuvwxyz +line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 10 Abcdefghijklmnopqrstuvwxyz +end of testfile + +start of test.c +/* + * Here is a new .c file + */ +end of test.c diff --git a/src/nvim/testdir/test11.ok b/src/nvim/testdir/test11.ok new file mode 100644 index 0000000000..af8c5ce261 --- /dev/null +++ b/src/nvim/testdir/test11.ok @@ -0,0 +1,61 @@ +startstart +start of testfile +line 2 Abcdefghijklmnopqrstuvwxyz +line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 4 Abcdefghijklmnopqrstuvwxyz +line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 6 Abcdefghijklmnopqrstuvwxyz +line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 8 Abcdefghijklmnopqrstuvwxyz +line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 10 Abcdefghijklmnopqrstuvwxyz +end of testfile + +start of test.c +/* + * Here is a new .c file + */ +end of test.c +start of testfile +line 2 Abcdefghijklmnopqrstuvwxyz +line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +line 4 Abcdefghijklmnopqrstuvwxyz +linE 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 6 AbcdefghijklmnopqrstuvwXyz +linE 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 8 AbcdefghijklmnopqrstuvwXyz +linE 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 10 AbcdefghijklmnopqrstuvwXyz +End of testfile + +/* + * HEre is a NEW .c file + */ +/* + * HEre is a new .c file + */ +start of tEstfile +linE 2 AbcdefghijklmnopqrstuvwXyz +linE 3 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 4 AbcdefghijklmnopqrstuvwXyz +linE 5 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 6 AbcdefghijklmnopqrstuvwXyz +linE 7 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 8 AbcdefghijklmnopqrstuvwXyz +linE 9 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +linE 10 AbcdefghijklmnopqrstuvwXyz +End of testfile +/* + * HEre is a new .c file + */ +start of testfiLe +Line 2 Abcdefghijklmnopqrstuvwxyz +Line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Line 4 Abcdefghijklmnopqrstuvwxyz +Line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Line 6 Abcdefghijklmnopqrstuvwxyz +Line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Line 8 Abcdefghijklmnopqrstuvwxyz +Line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +Line 10 Abcdefghijklmnopqrstuvwxyz +end of testfiLe diff --git a/src/nvim/testdir/test12.in b/src/nvim/testdir/test12.in new file mode 100644 index 0000000000..46e9c45b80 --- /dev/null +++ b/src/nvim/testdir/test12.in @@ -0,0 +1,52 @@ +Tests for 'directory' option. +- ".", in same dir as file +- "./dir", in directory relative to file +- "dir", in directory relative to current dir + +STARTTEST +:so small.vim +:set nocompatible viminfo+=nviminfo +:set dir=.,~ +:/start of testfile/,/end of testfile/w! Xtest1 +:" do an ls of the current dir to find the swap file (should not be there) +:if has("unix") +: !ls .X*.swp >test.out +:else +: r !ls X*.swp >test.out +:endif +:!echo first line >>test.out +:e Xtest1 +:if has("unix") +:" Do an ls of the current dir to find the swap file, remove the leading dot +:" to make the result the same for all systems. +: r!ls .X*.swp +: s/\.*X/X/ +: .w >>test.out +: undo +:else +: !ls X*.swp >>test.out +:endif +:!echo under Xtest1.swp >>test.out +:!mkdir Xtest2 +:set dir=./Xtest2,.,~ +:e Xtest1 +:!ls X*.swp >>test.out +:!echo under under >>test.out +:!ls Xtest2 >>test.out +:!echo under Xtest1.swp >>test.out +:!mkdir Xtest.je +:/start of testfile/,/end of testfile/w! Xtest2/Xtest3 +:set dir=Xtest.je,~ +:e Xtest2/Xtest3 +:swap +:!ls Xtest2 >>test.out +:!echo under Xtest3 >>test.out +:!ls Xtest.je >>test.out +:!echo under Xtest3.swp >>test.out +:qa! +ENDTEST + +start of testfile +line 2 Abcdefghij +line 3 Abcdefghij +end of testfile diff --git a/src/nvim/testdir/test12.ok b/src/nvim/testdir/test12.ok new file mode 100644 index 0000000000..605623b117 --- /dev/null +++ b/src/nvim/testdir/test12.ok @@ -0,0 +1,10 @@ +first line +Xtest1.swp +under Xtest1.swp +under under +Xtest1.swp +under Xtest1.swp +Xtest3 +under Xtest3 +Xtest3.swp +under Xtest3.swp diff --git a/src/nvim/testdir/test13.in b/src/nvim/testdir/test13.in new file mode 100644 index 0000000000..cb8a6fff89 --- /dev/null +++ b/src/nvim/testdir/test13.in @@ -0,0 +1,58 @@ +Tests for autocommands on :close command + +Write three files and open them, each in a window. +Then go to next window, with autocommand that deletes the previous one. +Do this twice, writing the file. + +Also test deleting the buffer on a Unload event. If this goes wrong there +will be the ATTENTION prompt. + +Also test changing buffers in a BufDel autocommand. If this goes wrong there +are ml_line errors and/or a Crash. + +STARTTEST +:so small.vim +:/^start of testfile/,/^end of testfile/w! Xtestje1 +:/^start of testfile/,/^end of testfile/w! Xtestje2 +:/^start of testfile/,/^end of testfile/w! Xtestje3 +:e Xtestje1 +otestje1 +:w +:sp Xtestje2 +otestje2 +:w +:sp Xtestje3 +otestje3 +:w + +:au WinLeave Xtestje2 bwipe + +:w! test.out +:au WinLeave Xtestje1 bwipe Xtestje3 +:close +:w >>test.out +:e Xtestje1 +:bwipe Xtestje2 Xtestje3 test.out +:au! +:au! BufUnload Xtestje1 bwipe +:e Xtestje3 +:w >>test.out +:e Xtestje2 +:sp Xtestje1 +:e +:w >>test.out +:au! +:only +:e Xtestje1 +:bwipe Xtestje2 Xtestje3 test.out test13.in +:au BufWipeout Xtestje1 buf Xtestje1 +:bwipe +:w >>test.out +:qa! +ENDTEST + +start of testfile + contents + contents + contents +end of testfile diff --git a/src/nvim/testdir/test13.ok b/src/nvim/testdir/test13.ok new file mode 100644 index 0000000000..0f1fc347a4 --- /dev/null +++ b/src/nvim/testdir/test13.ok @@ -0,0 +1,30 @@ +start of testfile +testje1 + contents + contents + contents +end of testfile +start of testfile +testje1 + contents + contents + contents +end of testfile +start of testfile +testje3 + contents + contents + contents +end of testfile +start of testfile +testje2 + contents + contents + contents +end of testfile +start of testfile +testje1 + contents + contents + contents +end of testfile diff --git a/src/nvim/testdir/test14.in b/src/nvim/testdir/test14.in new file mode 100644 index 0000000000..fb987ebc88 --- /dev/null +++ b/src/nvim/testdir/test14.in @@ -0,0 +1,99 @@ +Tests for "vaBiB", end could be wrong. +Also test ":s/pat/sub/" with different ~s in sub. +Also test for ^Vxff and ^Vo123 in Insert mode. +Also test "[m", "]m", "[M" and "]M" +Also test search() + +STARTTEST +:so small.vim +/Start cursor here +vaBiBD:?Bug?,/Piece/-2w! test.out +/^- Bug +:s/u/~u~/ +:s/i/~u~/ +:s/o/~~~/ +:.w >>test.out +:if has("ebcdic") +: let tt = "o\193\xc2\o303 \90a\xfg\o578\" +:else +: let tt = "o\65\x42\o103 \33a\xfg\o78\" +:endif +:exe "normal " . tt +:unlet tt +:.w >>test.out +:set vb +/^Piece +2]maA:.w >>test.out +j]maB:.w >>test.out +]maC:.w >>test.out +[maD:.w >>test.out +k2[maE:.w >>test.out +3[maF:.w >>test.out +]MaG:.w >>test.out +j2]MaH:.w >>test.out +]M]MaI:.w >>test.out +2[MaJ:.w >>test.out +k[MaK:.w >>test.out +3[MaL:.w >>test.out +:" +/^foobar +:let startline = line('.') +:call search('foobar', 'c') +:call append(line('$'), line('.') - startline) +j:call search('^$', 'c') +:call append(line('$'), line('.') - startline) +:call search('^$', 'bc') +:call append(line('$'), line('.') - startline) +/two +:call search('.', 'c') +:call append(line('$'), getline('.')[col('.') - 1:]) +:" +/^substitute +:s/foo/bar/ +:$put =@/ +/^substitute +:keeppatterns s/asdf/xyz/ +:$put =@/ +/^substitute +Y:$put =@0 +/bar /e +:$put =@0 +-:keeppatterns /xyz +0dn:/^search()/,$w >>test.out +:qa! +ENDTEST + +- Bug in "vPPPP" on this text (Webb): + { + cmd; + { + cmd; /* <-- Start cursor here */ + { + } + } + } + +Piece of Java +{ + tt m1 { + t1; + } e1 + + tt m2 { + t2; + } e2 + + tt m3 { + if (x) + { + t3; + } + } e3 +} + +foobar + +substitute foo asdf + +one two +search() diff --git a/src/nvim/testdir/test14.ok b/src/nvim/testdir/test14.ok new file mode 100644 index 0000000000..0aa2db3f97 --- /dev/null +++ b/src/nvim/testdir/test14.ok @@ -0,0 +1,26 @@ +- Bug in "vPPPP" on this text (Webb): + { + } +- Bug uuun "vPPPP" uuuuuuuuun this text (Webb): +ABC !ag8 + tt m1 {A + tt m2 {B + tt m3 {C + tt m3 {DC + tt m1 {EA +{F + }G e1 + }H e3 +}I + }JH e3 + }K e2 +{LF +search() +0 +1