1
Tests 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
11
Note: This test is skipped if "gzip" is not available.
12
$GZIP is made empty, "-v" would cause trouble.
13
Use a FileChangedShell autocommand to avoid a prompt for "Xtestfile.gz" being
14
modified outside of Vim (noticed on Solaris).
18
:" drop out when there is no gzip program
19
:if !executable("gzip")
25
:au FileChangedShell * echo "caught FileChangedShell"
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
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 'silent !sed s/e/E/ ' . shellescape(expand("<afile>")) . ".t >" . shellescape(expand("<afile>"))
50
:au FilterReadPre *.out exe 'silent !rm ' . shellescape(expand("<afile>")) . '.t'
51
:au FilterReadPost *.out '[,']s/x/X/g
52
:e! test.out " Edit the output file
54
:23,$s/\r$// " remove CR for when sed adds them
55
:au! FileReadPre *.gz exe 'silent !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
69
line 2 Abcdefghijklmnopqrstuvwxyz
70
line 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
71
line 4 Abcdefghijklmnopqrstuvwxyz
72
line 5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
73
line 6 Abcdefghijklmnopqrstuvwxyz
74
line 7 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
75
line 8 Abcdefghijklmnopqrstuvwxyz
76
line 9 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
77
line 10 Abcdefghijklmnopqrstuvwxyz
82
* Here is a new .c file