blob: df258702125fb2ff9ae728ce5693e3d7ea54b303 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: BIND 8.x configuration file
3" Maintainer: glory hump <rnd@web-drive.ru>
4" Last change: Mon May 21 04:51:01 SAMST 2001
Bram Moolenaardfccaf02004-12-31 20:56:11 +00005" Updated: by Martin Dalecki 2004-12-31
Bram Moolenaar071d4272004-06-13 20:20:40 +00006" Filenames: named.conf
Bram Moolenaardfccaf02004-12-31 20:56:11 +00007" URL: http://rnd.web-drive.ru/vim/syntax/named.vim [DEFUNCT]
Bram Moolenaar071d4272004-06-13 20:20:40 +00008" $Id$
9"
10" NOTE
11" it was not widely tested, i just tried it on my simple
12" single-master-single-slave configuration. most syntax was borrowed
13" directly from "BIND Configuration File Guide" without testing.
14
15" For version 5.x: Clear all syntax items
16" For version 6.x: Quit when a syntax file was already loaded
17if version < 600
18 syntax clear
19elseif exists("b:current_syntax")
20 finish
21endif
22
23syn case match
24
25if version >= 600
26 setlocal iskeyword=.,-,48-58,A-Z,a-z,_
27else
28 set iskeyword=.,-,48-58,A-Z,a-z,_
29endif
30
31let s:save_cpo = &cpo
32set cpo-=C
33
34" BIND configuration file
35
36syn match namedComment "//.*"
Bram Moolenaardfccaf02004-12-31 20:56:11 +000037syn match namedComment "#.*"
Bram Moolenaar071d4272004-06-13 20:20:40 +000038syn region namedComment start="/\*" end="\*/"
39syn region namedString start=/"/ end=/"/ contained
Bram Moolenaardfccaf02004-12-31 20:56:11 +000040" --- omitted trailing semicolon
41syn match namedError /[^;{#]$/
Bram Moolenaar071d4272004-06-13 20:20:40 +000042
43" --- top-level keywords
44
45syn keyword namedInclude include nextgroup=namedString skipwhite
46syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
47syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
48syn keyword namedKeyword controls nextgroup=namedSection skipwhite
49syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
50syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
51syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
52syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
53
54" --- Identifier: name of following { ... } Section
55syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
56" --- IntIdent: name of following IntSection
57syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
58
59" --- Section: { ... } clause
60syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
61
62" --- IntSection: section that does not contain other sections
63syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
64
65" --- IntKeyword: keywords contained within `{ ... }' sections only
66" + these keywords are contained within `key' and `acl' sections
67syn keyword namedIntKeyword contained key algorithm
68syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
69
70" + these keywords are contained within `server' section only
71syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
72syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
73syn keyword namedIntKeyword contained transfer-format
74syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
75
76" + these keywords are contained within `controls' section only
77syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
78syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
79syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
80syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
81
82" --- options
83syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
84
85syn keyword namedOption contained version directory
86\ nextgroup=namedString skipwhite
87syn keyword namedOption contained named-xfer dump-file pid-file
88\ nextgroup=namedString skipwhite
89syn keyword namedOption contained mem-statistics-file statistics-file
90\ nextgroup=namedString skipwhite
91syn keyword namedOption contained auth-nxdomain deallocate-on-exit
92\ nextgroup=namedBool,namedNotBool skipwhite
93syn keyword namedOption contained dialup fake-iquery fetch-glue
94\ nextgroup=namedBool,namedNotBool skipwhite
95syn keyword namedOption contained has-old-clients host-statistics
96\ nextgroup=namedBool,namedNotBool skipwhite
97syn keyword namedOption contained maintain-ixfr-base multiple-cnames
98\ nextgroup=namedBool,namedNotBool skipwhite
99syn keyword namedOption contained notify recursion rfc2308-type1
100\ nextgroup=namedBool,namedNotBool skipwhite
101syn keyword namedOption contained use-id-pool treat-cr-as-space
102\ nextgroup=namedBool,namedNotBool skipwhite
103syn keyword namedOption contained also-notify forwarders
104\ nextgroup=namedIntSection skipwhite
105syn keyword namedOption contained forward check-names
106syn keyword namedOption contained allow-query allow-transfer allow-recursion nextgroup=namedAML skipwhite
107syn keyword namedOption contained blackhole listen-on
108\ nextgroup=namedIntSection skipwhite
109syn keyword namedOption contained lame-ttl max-transfer-time-in
110\ nextgroup=namedNumber,namedNotNumber skipwhite
111syn keyword namedOption contained max-ncache-ttl min-roots
112\ nextgroup=namedNumber,namedNotNumber skipwhite
113syn keyword namedOption contained serial-queries transfers-in
114\ nextgroup=namedNumber,namedNotNumber skipwhite
115syn keyword namedOption contained transfers-out transfers-per-ns
116syn keyword namedOption contained transfer-format
117syn keyword namedOption contained transfer-source
118\ nextgroup=namedIPaddr,namedIPerror skipwhite
119syn keyword namedOption contained max-ixfr-log-size
120\ nextgroup=namedNumber,namedNotNumber skipwhite
121syn keyword namedOption contained coresize datasize files stacksize
122syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
123\ nextgroup=namedNumber,namedNotNumber skipwhite
124syn keyword namedOption contained topology sortlist rrset-order
125\ nextgroup=namedIntSection skipwhite
126
127syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
128syn keyword namedQSKeywords contained address port
129syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
130syn keyword namedCNKeywords contained fail warn ignore master slave response
131
132" --- logging facilities
133syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
134syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
135syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
136syn keyword namedIntKeyword contained syslog null versions size severity
137syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
138syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
139
140" --- zone section
141syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
142\ contains=namedDomain,namedIllegalDom
143\ nextgroup=namedZoneClass,namedZoneSection
144syn keyword namedZoneClass contained in hs hesiod chaos
145\ IN HS HESIOD CHAOS
146\ nextgroup=namedZoneSection skipwhite
147
148syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
149syn keyword namedZoneOpt contained file ixfr-base
150\ nextgroup=namedString skipwhite
151syn keyword namedZoneOpt contained notify dialup
152\ nextgroup=namedBool,namedNotBool skipwhite
153syn keyword namedZoneOpt contained pubkey forward
154syn keyword namedZoneOpt contained max-transfer-time-in
155\ nextgroup=namedNumber,namedNotNumber skipwhite
156syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
157syn keyword namedZoneType contained master slave stub forward hint
158
159syn keyword namedZoneOpt contained masters forwarders
160\ nextgroup=namedIPlist skipwhite
161syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
162syn match namedZoneOpt contained "\<allow-\(update\|query\|transfer\)"
163\ nextgroup=namedAML skipwhite
164
165" --- boolean parameter
166syn match namedNotBool contained "[^ ;]\+"
167syn keyword namedBool contained yes no true false 1 0
168
169" --- number parameter
170syn match namedNotNumber contained "[^ 0-9;]\+"
171syn match namedNumber contained "\d\+"
172
173" --- address match list
174syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment
175
176" --- IPs & Domains
177syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
178syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
179syn match namedDomain contained /"\."/ms=s+1,me=e-1
180syn match namedSpareDot contained /\./
181
182" --- syntax errors
183syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
184syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
185syn match namedEParenError contained +{+
186syn match namedParenError +}\([^;]\|$\)+
187
188" Define the default highlighting.
189" For version 5.7 and earlier: only when not done already
190" For version 5.8 and later: only when an item doesn't have highlighting yet
191if version >= 508 || !exists("did_named_syn_inits")
192 if version < 508
193 let did_named_syn_inits = 1
194 command -nargs=+ HiLink hi link <args>
195 else
196 command -nargs=+ HiLink hi def link <args>
197 endif
198
199 HiLink namedComment Comment
200 HiLink namedInclude Include
201 HiLink namedKeyword Keyword
202 HiLink namedIntKeyword Keyword
203 HiLink namedIdentifier Identifier
204 HiLink namedIntIdent Identifier
205
206 HiLink namedString String
207 HiLink namedBool Type
208 HiLink namedNotBool Error
209 HiLink namedNumber Number
210 HiLink namedNotNumber Error
211
212 HiLink namedOption namedKeyword
213 HiLink namedLogOption namedKeyword
214 HiLink namedCNOption namedKeyword
215 HiLink namedQSKeywords Type
216 HiLink namedCNKeywords Type
217 HiLink namedLogCategory Type
218 HiLink namedDomain Identifier
219 HiLink namedZoneOpt namedKeyword
220 HiLink namedZoneType Type
221 HiLink namedParenError Error
222 HiLink namedEParenError Error
223 HiLink namedIllegalDom Error
224 HiLink namedIPerror Error
225 HiLink namedSpareDot Error
226 HiLink namedError Error
227
228 delcommand HiLink
229endif
230
231let &cpo = s:save_cpo
232unlet s:save_cpo
233
234let b:current_syntax = "named"
235
236" vim: ts=17