1Tests for autocommands: 2- FileWritePre writing a compressed file 3- FileReadPost reading a compressed file 4- BufNewFile reading a file template 5- BufReadPre decompressing the file to be read 6- FilterReadPre substituting characters in the temp file 7- FilterReadPost substituting characters after filtering 8- FileReadPre set options for decompression 9- FileReadPost decompress the file 10 11Note: This test is skipped if "gzip" is not available. 12$GZIP is made empty, "-v" would cause trouble. 13Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being 14modified outside of Vim (noticed on Solaris). 15 16STARTTEST 17:so small.vim 18:" drop out when there is no gzip program 19:if !executable("gzip") 20: e! test.ok 21: w! test.out 22: qa! 23:endif 24:let $GZIP = "" 25:au FileChangedShell * echo "caught FileChangedShell" 26:set bin 27:au FileWritePre *.gz '[,']!gzip 28:au FileWritePost *.gz undo 29:/^start of testfile/,/^end of testfile/w! Xtestfile.gz 30:au FileReadPost *.gz '[,']!gzip -d 31:$r Xtestfile.gz " Read and decompress the testfile 32:?startstart?,$w! test.out " Write contents of this file 33:au BufNewFile *.c read Xtest.c 34:/^start of test.c/+1,/^end of test.c/-1w! Xtest.c 35:e! foo.c " Will load Xtest.c 36:au FileAppendPre *.out '[,']s/new/NEW/ 37:au FileAppendPost *.out !cat Xtest.c >>test.out 38:w>>test.out " Append it to the output file 39:au! FileAppendPre 40:" setup autocommands to decompress before reading and re-compress afterwards 41:au BufReadPre *.gz exe '!gzip -d ' . shellescape(expand("<afile>")) 42:au BufReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) 43:au BufReadPost *.gz call rename(expand("<afile>"), expand("<afile>:r")) 44:au BufReadPost *.gz exe '!gzip ' . shellescape(expand("<afile>:r")) 45:e! Xtestfile.gz " Edit compressed file 46:w>>test.out " Append it to the output file 47:set shelltemp " need temp files here 48:au FilterReadPre *.out call rename(expand("<afile>"), expand("<afile>") . ".t") 49:au FilterReadPre *.out exe '!sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>")) 50:au FilterReadPre *.out exe '!rm ' . shellescape(expand("<afile>")) . '.t' 51:au FilterReadPost *.out '[,']s/x/X/g 52:e! test.out " Edit the output file 53:23,$!cat 54:23,$s/\r$// " remove CR for when sed adds them 55:au! FileReadPre *.gz exe '!gzip -d ' . shellescape(expand("<afile>")) 56:au FileReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) 57:au! FileReadPost *.gz '[,']s/l/L/ 58:$r Xtestfile.gz " Read compressed file 59:w " write it, after filtering 60:au! " remove all autocommands 61:e " Edit test.out again 62:set nobin ff& " use the default fileformat for writing 63:w 64:qa! 65ENDTEST 66 67startstart 68start of testfile 69line 2 Abcdefghijklmnopqrstuvwxyz 70line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 71line 4 Abcdefghijklmnopqrstuvwxyz 72line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 73line 6 Abcdefghijklmnopqrstuvwxyz 74line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 75line 8 Abcdefghijklmnopqrstuvwxyz 76line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 77line 10 Abcdefghijklmnopqrstuvwxyz 78end of testfile 79 80start of test.c 81/* 82 * Here is a new .c file 83 */ 84end of test.c 85