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" quit when a syntax file was already loaded 13if exists("b:current_syntax") 14 finish 15endif 16 17syn case match 18 19" Directives 20syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown 21 22syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown 23syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown 24syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown 25syn match zoneDirective /^\$GENERATE\s/ 26 27syn match zoneUnknown contained /\S\+/ 28 29syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite 30syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 31syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 32 33syn match zoneSpecial contained /^[@*.]\s/ 34syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite 35syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite 36syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite 37syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown 38 39syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ 40 41" Plain IPv6 address IPv6-embedded-IPv4 address 42" 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1 43syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ 44" ::[...:]8 ::[...:]127.0.0.1 45syn 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}\)\>/ 46" 1111::[...:]8 1111::[...:]127.0.0.1 47syn 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}\)\>/ 48" 1111:2::[...:]8 1111:2::[...:]127.0.0.1 49syn 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}\)\>/ 50" 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1 51syn 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}\)\>/ 52" 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1 53syn 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}\)\>/ 54" 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1 55syn 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}\)\>/ 56" 1111:2:3:4:5:6::8 - 57syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/ 58" 1111[:...]:: - 59syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/ 60 61syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/ 62syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/ 63syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/ 64 65syn match zoneErrParen /)/ 66syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment 67syn match zoneComment /;.*/ 68 69" Define the default highlighting. 70" Only when an item doesn't have highlighting yet 71command -nargs=+ HiLink hi def link <args> 72 73HiLink zoneDirective Macro 74 75HiLink zoneUnknown Error 76 77HiLink zoneOrigin Statement 78HiLink zoneOwnerName Statement 79HiLink zoneDomain Identifier 80 81HiLink zoneSpecial Special 82HiLink zoneTTL Constant 83HiLink zoneClass Include 84HiLink zoneRRType Type 85 86HiLink zoneIPAddr Number 87HiLink zoneIP6Addr Number 88HiLink zoneText String 89HiLink zoneNumber Number 90HiLink zoneSerial Special 91 92HiLink zoneErrParen Error 93HiLink zoneComment Comment 94 95delcommand HiLink 96 97let b:current_syntax = "bindzone" 98 99" vim:sts=2 sw=2 100