| 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("<afile>")) |
| :au BufReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) |
| :au BufReadPost *.gz call rename(expand("<afile>"), expand("<afile>:r")) |
| :au BufReadPost *.gz exe '!gzip ' . shellescape(expand("<afile>:r")) |
| :e! Xtestfile.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("<afile>"), expand("<afile>") . ".t") |
| :au FilterReadPre *.out exe 'silent !sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>")) |
| :au FilterReadPre *.out exe 'silent !rm ' . shellescape(expand("<afile>")) . '.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 'silent !gzip -d ' . shellescape(expand("<afile>")) |
| :au FileReadPre *.gz call rename(expand("<afile>:r"), expand("<afile>")) |
| :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 |