1" Vim syntax file 2" Language: BIND zone files (RFC 1035) 3" Maintainer: Julian Mehnle <[email protected]> 4" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/ 5" Last Change: Thu 2011-07-16 20:42:00 UTC 6" 7" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with 8" heavy modifications. 9" 10" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $ 11 12" For version 5.x: Clear all syntax items 13" For version 6.x: Quit when a syntax file was already loaded 14if version < 600 15 syntax clear 16elseif exists("b:current_syntax") 17 finish 18endif 19 20syn case match 21 22" Directives 23syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown 24 25syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown 26syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown 27syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown 28syn match zoneDirective /^\$GENERATE\s/ 29 30syn match zoneUnknown contained /\S\+/ 31 32syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite 33syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 34syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 35 36syn match zoneSpecial contained /^[@*.]\s/ 37syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite 38syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite 39syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite 40syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown 41 42syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ 43 44" Plain IPv6 address IPv6-embedded-IPv4 address 45" 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1 46syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 47" ::[...:]8 ::[...:]127.0.0.1 48syn match zoneIP6Addr contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 49" 1111::[...:]8 1111::[...:]127.0.0.1 50syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 51" 1111:2::[...:]8 1111:2::[...:]127.0.0.1 52syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 53" 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1 54syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 55" 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1 56syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 57" 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1 58syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 59" 1111:2:3:4:5:6::8 - 60syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/ 61" 1111[:...]:: - 62syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/ 63 64syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/ 65syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/ 66syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/ 67 68syn match zoneErrParen /)/ 69syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment 70syn match zoneComment /;.*/ 71 72" Define the default highlighting. 73" For version 5.7 and earlier: only when not done already 74" For version 5.8 and later: only when an item doesn't have highlighting yet 75if version >= 508 || !exists("did_bind_zone_syn_inits") 76 if version < 508 77 let did_bind_zone_syn_inits = 1 78 command -nargs=+ HiLink hi link <args> 79 else 80 command -nargs=+ HiLink hi def link <args> 81 endif 82 83 HiLink zoneDirective Macro 84 85 HiLink zoneUnknown Error 86 87 HiLink zoneOrigin Statement 88 HiLink zoneOwnerName Statement 89 HiLink zoneDomain Identifier 90 91 HiLink zoneSpecial Special 92 HiLink zoneTTL Constant 93 HiLink zoneClass Include 94 HiLink zoneRRType Type 95 96 HiLink zoneIPAddr Number 97 HiLink zoneIP6Addr Number 98 HiLink zoneText String 99 HiLink zoneNumber Number 100 HiLink zoneSerial Special 101 102 HiLink zoneErrParen Error 103 HiLink zoneComment Comment 104 105 delcommand HiLink 106endif 107 108let b:current_syntax = "bindzone" 109 110" vim:sts=2 sw=2 111