]>
Commit | Line | Data |
---|---|---|
3964de95 ER |
1 | " Vim syntax file |
2 | " Filename: vcl.vim | |
a8ad06df | 3 | " Language: Varnish configuation Language, http://www.varnish-cache.org/wiki/VCL |
3964de95 | 4 | " Maintainer: Elan Ruusamäe <glen@delfi.ee> |
61b38f6f | 5 | " URL: http://cvs.pld-linux.org/packages/vim-syntax-vcl/vcl.vim |
3964de95 ER |
6 | " Version Info: $Revision$ |
7 | " Last Change: $Date$ UTC | |
8 | ||
9 | " For version 5.x: Clear all syntax items | |
10 | " For version 6.x: Quit when a syntax file was already loaded | |
11 | if version < 600 | |
12 | syntax clear | |
13 | elseif exists("b:current_syntax") | |
14 | finish | |
15 | endif | |
16 | ||
180ee5d7 ER |
17 | " TODO |
18 | " - sub ... | |
19 | " - backend/director/... | |
20 | " - acl ... | |
21 | " - error when invalid operator used in if (...) | |
22 | " - +=, = operators | |
23 | " - functions | |
3964de95 ER |
24 | |
25 | " Code Blocks | |
26 | " sub NAME { | |
27 | " backend NAME { | |
28 | " director NAME FLAGS { | |
29 | " acl NAME { | |
868a0fb9 ER |
30 | "syn region vclCodeBlock start="\s*\<sub\|backend\|director\|acl\>" end="{"he=e-1 contains=vclCodeBlockName,vclFunctionName |
31 | "syn match vclCodeBlockName "\<sub\|backend\|director\|acl\>" contained | |
3964de95 | 32 | "syn match vclFunctionName "\h[[:alnum:]_:]*" contained |
868a0fb9 ER |
33 | "syn match vclFunctionName "\h\w*[^:]" contained |
34 | " | |
fbda5df2 | 35 | syn keyword vclOperator set call return error esi synthetic include remove unset |
180ee5d7 | 36 | " return modes |
10957cb0 | 37 | syn keyword vclModes deliver pipe pass hash lookup discard fetch restart |
868a0fb9 ER |
38 | |
39 | " C strings | |
40 | syn region vclString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=vclSpecial | |
41 | syn match vclSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" | |
42 | syn match vclSpecialError "L\='\\[^'\"?\\abfnrtv]'" | |
43 | syn match vclSpecialCharacter "L\='\\['\"?\\abfnrtv]'" | |
44 | syn match vclSpecialCharacter display "L\='\\\o\{1,3}'" | |
45 | syn match vclSpecialCharacter display "'\\x\x\{1,2}'" | |
46 | syn match vclSpecialCharacter display "L'\\x\x\+'" | |
47 | ||
fbda5df2 | 48 | syn keyword vclConditional if else elsif elseif |
180ee5d7 ER |
49 | |
50 | " Numbers | |
51 | syn match vclNumbers display transparent "\<\d\|\.\d" contains=vclNumber,vclNumberTime | |
52 | syn match vclNumber display contained "\d\+" | |
53 | " set obj.ttl = 0s, 0m; | |
54 | syn match vclNumberTime display contained "\d\+[dhsm]" | |
55 | ||
56 | " client | |
57 | syn match vclOption /client\.ip/ | |
58 | " server | |
59 | syn match vclOption /server\.\(ip\|port\)/ | |
60 | " req | |
10957cb0 | 61 | syn match vclOption /req\.\(hash\|request\|url\|proto\|backend\.healthy\|backend\|grace\|xid\|restarts\)/ |
180ee5d7 ER |
62 | " bereq. |
63 | syn match vclOption /bereq\.\(request\|url\|proto\|connect_timeout\|first_byte_timeout\|between_bytes_timeout\)/ | |
64 | " obj | |
65 | syn match vclOption /obj\.\(proto\|status\|response\|cacheable\|ttl\|lastuse\|hits\|hash\|grace\|prefetch\)/ | |
fa340069 ER |
66 | " beresp |
67 | syn match vclOption /beresp\.\(do_stream\|do_esi\|do_gzip\|do_gunzip\|proto\|status\|response\|ttl\)/ | |
180ee5d7 ER |
68 | " resp |
69 | syn match vclOption /resp\.\(proto\|status\|response\)/ | |
70 | " common: http.HEADERNAME | |
71 | syn match vclOption /\(req\|bereq\|resp\|obj\)\.http\.[A-Za-z][-_A-Za-z0-9]*/ | |
3964de95 ER |
72 | |
73 | " Highlight the C block | |
74 | syn include @vclC syntax/c.vim | |
75 | unlet b:current_syntax | |
868a0fb9 | 76 | |
3964de95 ER |
77 | " Mark block tags itself as comment |
78 | syn region vclCBlock matchgroup=vclComment start=/C{/ end=/}C/ contains=@vclC keepend | |
79 | ||
868a0fb9 | 80 | " Synthetic |
0ad3ea52 ER |
81 | syn region vclSynthetic start=/{"/hs=s+2 end=/"}/he=e-2 contains=@vclHTML keepend |
82 | ||
83 | " Allow html in synthetic | |
84 | syn include @vclHTML syntax/html.vim | |
85 | unlet b:current_syntax | |
868a0fb9 | 86 | |
180ee5d7 ER |
87 | syn match vclComment '#.*' |
88 | syn match vclComment "//.*" | |
89 | syn region vclComment start="/\*" end="\*/" | |
90 | ||
91 | syn sync ccomment vclComment | |
92 | ||
93 | hi link vclCodeBlock Function | |
94 | hi link vclComment Comment | |
95 | hi link vclStatement Statement | |
96 | hi link vclFunctionName Identifier | |
97 | hi link vclCodeBlockName Statement | |
868a0fb9 ER |
98 | hi link vclSpecial SpecialChar |
99 | hi link vclString String | |
180ee5d7 ER |
100 | hi link vclConditional Conditional |
101 | hi link vclSynthetic vclString | |
102 | hi link vclSpecialCharacter vclSpecialSpecial | |
103 | hi link vclOperator Operator | |
104 | hi link vclModes Operator | |
105 | hi link vclOption Identifier | |
106 | hi link vclNumber Number | |
107 | hi link vclNumberTime Number |