diff options
Diffstat (limited to 'runtime/syntax/named.vim')
-rw-r--r-- | runtime/syntax/named.vim | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/runtime/syntax/named.vim b/runtime/syntax/named.vim new file mode 100644 index 000000000..0918352f6 --- /dev/null +++ b/runtime/syntax/named.vim @@ -0,0 +1,234 @@ +" Vim syntax file +" Language: BIND 8.x configuration file +" Maintainer: glory hump <rnd@web-drive.ru> +" Last change: Mon May 21 04:51:01 SAMST 2001 +" Filenames: named.conf +" URL: http://rnd.web-drive.ru/vim/syntax/named.vim +" $Id$ +" +" NOTE +" it was not widely tested, i just tried it on my simple +" single-master-single-slave configuration. most syntax was borrowed +" directly from "BIND Configuration File Guide" without testing. + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +if version >= 600 + setlocal iskeyword=.,-,48-58,A-Z,a-z,_ +else + set iskeyword=.,-,48-58,A-Z,a-z,_ +endif + +let s:save_cpo = &cpo +set cpo-=C + +" BIND configuration file + +syn match namedComment "//.*" +syn region namedComment start="/\*" end="\*/" +syn region namedString start=/"/ end=/"/ contained +" --- omitted trailing semicolon FIXME +syn match namedError /[^;{]$/ + +" --- top-level keywords + +syn keyword namedInclude include nextgroup=namedString skipwhite +syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite +syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite +syn keyword namedKeyword controls nextgroup=namedSection skipwhite +syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite +syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite +syn keyword namedKeyword options nextgroup=namedOptSection skipwhite +syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite + +" --- Identifier: name of following { ... } Section +syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite +" --- IntIdent: name of following IntSection +syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite + +" --- Section: { ... } clause +syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword + +" --- IntSection: section that does not contain other sections +syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError + +" --- IntKeyword: keywords contained within `{ ... }' sections only +" + these keywords are contained within `key' and `acl' sections +syn keyword namedIntKeyword contained key algorithm +syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite + +" + these keywords are contained within `server' section only +syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedIntKeyword contained transfer-format +syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite + +" + these keywords are contained within `controls' section only +syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite +syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite +syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite + +" --- options +syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError + +syn keyword namedOption contained version directory +\ nextgroup=namedString skipwhite +syn keyword namedOption contained named-xfer dump-file pid-file +\ nextgroup=namedString skipwhite +syn keyword namedOption contained mem-statistics-file statistics-file +\ nextgroup=namedString skipwhite +syn keyword namedOption contained auth-nxdomain deallocate-on-exit +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained dialup fake-iquery fetch-glue +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained has-old-clients host-statistics +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained maintain-ixfr-base multiple-cnames +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained notify recursion rfc2308-type1 +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained use-id-pool treat-cr-as-space +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedOption contained also-notify forwarders +\ nextgroup=namedIntSection skipwhite +syn keyword namedOption contained forward check-names +syn keyword namedOption contained allow-query allow-transfer allow-recursion nextgroup=namedAML skipwhite +syn keyword namedOption contained blackhole listen-on +\ nextgroup=namedIntSection skipwhite +syn keyword namedOption contained lame-ttl max-transfer-time-in +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedOption contained max-ncache-ttl min-roots +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedOption contained serial-queries transfers-in +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedOption contained transfers-out transfers-per-ns +syn keyword namedOption contained transfer-format +syn keyword namedOption contained transfer-source +\ nextgroup=namedIPaddr,namedIPerror skipwhite +syn keyword namedOption contained max-ixfr-log-size +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedOption contained coresize datasize files stacksize +syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedOption contained topology sortlist rrset-order +\ nextgroup=namedIntSection skipwhite + +syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords +syn keyword namedQSKeywords contained address port +syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords +syn keyword namedCNKeywords contained fail warn ignore master slave response + +" --- logging facilities +syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption +syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite +syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite +syn keyword namedIntKeyword contained syslog null versions size severity +syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite +syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite + +" --- zone section +syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite +\ contains=namedDomain,namedIllegalDom +\ nextgroup=namedZoneClass,namedZoneSection +syn keyword namedZoneClass contained in hs hesiod chaos +\ IN HS HESIOD CHAOS +\ nextgroup=namedZoneSection skipwhite + +syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError +syn keyword namedZoneOpt contained file ixfr-base +\ nextgroup=namedString skipwhite +syn keyword namedZoneOpt contained notify dialup +\ nextgroup=namedBool,namedNotBool skipwhite +syn keyword namedZoneOpt contained pubkey forward +syn keyword namedZoneOpt contained max-transfer-time-in +\ nextgroup=namedNumber,namedNotNumber skipwhite +syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite +syn keyword namedZoneType contained master slave stub forward hint + +syn keyword namedZoneOpt contained masters forwarders +\ nextgroup=namedIPlist skipwhite +syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment +syn match namedZoneOpt contained "\<allow-\(update\|query\|transfer\)" +\ nextgroup=namedAML skipwhite + +" --- boolean parameter +syn match namedNotBool contained "[^ ;]\+" +syn keyword namedBool contained yes no true false 1 0 + +" --- number parameter +syn match namedNotNumber contained "[^ 0-9;]\+" +syn match namedNumber contained "\d\+" + +" --- address match list +syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment + +" --- IPs & Domains +syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1 +syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot +syn match namedDomain contained /"\."/ms=s+1,me=e-1 +syn match namedSpareDot contained /\./ + +" --- syntax errors +syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1 +syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/ +syn match namedEParenError contained +{+ +syn match namedParenError +}\([^;]\|$\)+ + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_named_syn_inits") + if version < 508 + let did_named_syn_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + HiLink namedComment Comment + HiLink namedInclude Include + HiLink namedKeyword Keyword + HiLink namedIntKeyword Keyword + HiLink namedIdentifier Identifier + HiLink namedIntIdent Identifier + + HiLink namedString String + HiLink namedBool Type + HiLink namedNotBool Error + HiLink namedNumber Number + HiLink namedNotNumber Error + + HiLink namedOption namedKeyword + HiLink namedLogOption namedKeyword + HiLink namedCNOption namedKeyword + HiLink namedQSKeywords Type + HiLink namedCNKeywords Type + HiLink namedLogCategory Type + HiLink namedDomain Identifier + HiLink namedZoneOpt namedKeyword + HiLink namedZoneType Type + HiLink namedParenError Error + HiLink namedEParenError Error + HiLink namedIllegalDom Error + HiLink namedIPerror Error + HiLink namedSpareDot Error + HiLink namedError Error + + delcommand HiLink +endif + +let &cpo = s:save_cpo +unlet s:save_cpo + +let b:current_syntax = "named" + +" vim: ts=17 |