xref: /vim-8.2.3635/runtime/syntax/bindzone.vim (revision 071d4279)
1" Vim syntax file
2" Language:	BIND 8.x zone files (RFC1035)
3" Maintainer:	glory hump <[email protected]>
4" Last change:	Thu Apr 26 02:16:18 SAMST 2001
5" Filenames:	/var/named/*
6" URL:	http://rnd.web-drive.ru/vim/syntax/bindzone.vim
7" $Id$
8
9" For version 5.x: Clear all syntax items
10" For version 6.x: Quit when a syntax file was already loaded
11if version < 600
12  syntax clear
13elseif exists("b:current_syntax")
14  finish
15endif
16
17syn case match
18
19if version >= 600
20  setlocal iskeyword=.,-,48-58,A-Z,a-z,_
21else
22  set iskeyword=.,-,48-58,A-Z,a-z,_
23endif
24
25
26" Master File Format (rfc 1035)
27
28" directives
29syn region	zoneRRecord	start=+^+ end=+$+ contains=zoneLHSDomain,zoneLHSIP,zoneIllegalDom,zoneWhitespace,zoneComment,zoneParen,zoneSpecial
30syn match	zoneDirective	/\$ORIGIN\s\+/ nextgroup=zoneDomain,zoneIllegalDom
31syn match	zoneDirective	/\$TTL\s\+/ nextgroup=zoneTTL
32syn match	zoneDirective	/\$INCLUDE\s\+/
33syn match	zoneDirective	/\$GENERATE\s/
34
35syn match	zoneWhitespace	contained /^\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
36syn match	zoneError	"\s\+$"
37syn match	zoneSpecial	contained /^[@.]\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
38syn match	zoneSpecial	contained /@$/
39
40" domains and IPs
41syn match	zoneLHSDomain	contained /^[-0-9A-Za-z.]\+\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
42syn match	zoneLHSIP	contained /^[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType
43syn match	zoneIPaddr	contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
44syn match	zoneDomain	contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/
45
46syn match	zoneIllegalDom	contained /\S*[^-A-Za-z0-9.[:space:]]\S*\>/
47"syn match	zoneIllegalDom	contained /[0-9]\S*[-A-Za-z]\S*/
48
49" keywords
50syn keyword	zoneClass	IN CHAOS nextgroup=zoneRRType
51
52syn match	zoneTTL	contained /\<[0-9HhWwDd]\+\s\+/ nextgroup=zoneClass,zoneRRType
53syn match	zoneRRType	contained /\s*\<\(NS\|HINFO\)\s\+/ nextgroup=zoneSpecial,zoneDomain
54syn match	zoneRRType	contained /\s*\<CNAME\s\+/ nextgroup=zoneDomain,zoneSpecial
55syn match	zoneRRType	contained /\s*\<SOA\s\+/ nextgroup=zoneDomain,zoneIllegalDom
56syn match	zoneRRType	contained /\s*\<PTR\s\+/ nextgroup=zoneDomain,zoneIllegalDom
57syn match	zoneRRType	contained /\s*\<MX\s\+/ nextgroup=zoneMailPrio
58syn match	zoneRRType	contained /\s*\<A\s\+/ nextgroup=zoneIPaddr,zoneIllegalDom
59
60" FIXME: catchup serial number
61syn match	zoneSerial	contained /\<[0-9]\{9}\>/
62
63syn match	zoneMailPrio	contained /\<[0-9]\+\s*/ nextgroup=zoneDomain,zoneIllegalDom
64syn match	zoneErrParen	/)/
65syn region	zoneParen	contained start=+(+ end=+)+ contains=zoneSerial,zoneTTL,zoneComment
66syn match	zoneComment	";.*"
67
68" Define the default highlighting.
69" For version 5.7 and earlier: only when not done already
70" For version 5.8 and later: only when an item doesn't have highlighting yet
71if version >= 508 || !exists("did_bind_zone_syn_inits")
72  if version < 508
73    let did_bind_zone_syn_inits = 1
74    command -nargs=+ HiLink hi link <args>
75  else
76    command -nargs=+ HiLink hi def link <args>
77  endif
78
79  HiLink zoneComment	Comment
80  HiLink zoneDirective	Macro
81  HiLink zoneLHSDomain	Statement
82  HiLink zoneLHSIP	Statement
83  HiLink zoneClass	Include
84  HiLink zoneSpecial	Special
85  HiLink zoneRRType	Type
86  HiLink zoneError	Error
87  HiLink zoneErrParen	Error
88  HiLink zoneIllegalDom	Error
89  HiLink zoneSerial	Todo
90  HiLink zoneIPaddr	Number
91  HiLink zoneDomain	Identifier
92
93  delcommand HiLink
94endif
95
96let b:current_syntax = "bindzone"
97
98" vim: ts=17
99