named.vim 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. " Vim syntax file
  2. " Language: BIND configuration file
  3. " Maintainer: Nick Hibma <nick@van-laarhoven.org>
  4. " Last Change: 2007-01-30
  5. " Filenames: named.conf, rndc.conf
  6. " Location: http://www.van-laarhoven.org/vim/syntax/named.vim
  7. "
  8. " Previously maintained by glory hump <rnd@web-drive.ru> and updated by Marcin
  9. " Dalecki.
  10. "
  11. " This file could do with a lot of improvements, so comments are welcome.
  12. " Please submit the named.conf (segment) with any comments.
  13. "
  14. " quit when a syntax file was already loaded
  15. if exists("b:current_syntax")
  16. finish
  17. endif
  18. syn case match
  19. setlocal iskeyword=.,-,48-58,A-Z,a-z,_
  20. syn sync match namedSync grouphere NONE "^(zone|controls|acl|key)"
  21. let s:save_cpo = &cpo
  22. set cpo-=C
  23. " BIND configuration file
  24. syn match namedComment "//.*"
  25. syn match namedComment "#.*"
  26. syn region namedComment start="/\*" end="\*/"
  27. syn region namedString start=/"/ end=/"/ contained
  28. " --- omitted trailing semicolon
  29. syn match namedError /[^;{#]$/
  30. " --- top-level keywords
  31. syn keyword namedInclude include nextgroup=namedString skipwhite
  32. syn keyword namedKeyword acl key nextgroup=namedIntIdent skipwhite
  33. syn keyword namedKeyword server nextgroup=namedIdentifier skipwhite
  34. syn keyword namedKeyword controls nextgroup=namedSection skipwhite
  35. syn keyword namedKeyword trusted-keys nextgroup=namedIntSection skipwhite
  36. syn keyword namedKeyword logging nextgroup=namedLogSection skipwhite
  37. syn keyword namedKeyword options nextgroup=namedOptSection skipwhite
  38. syn keyword namedKeyword zone nextgroup=namedZoneString skipwhite
  39. " --- Identifier: name of following { ... } Section
  40. syn match namedIdentifier contained /\k\+/ nextgroup=namedSection skipwhite
  41. " --- IntIdent: name of following IntSection
  42. syn match namedIntIdent contained /"\=\k\+"\=/ nextgroup=namedIntSection skipwhite
  43. " --- Section: { ... } clause
  44. syn region namedSection contained start=+{+ end=+};+ contains=namedSection,namedIntKeyword
  45. " --- IntSection: section that does not contain other sections
  46. syn region namedIntSection contained start=+{+ end=+}+ contains=namedIntKeyword,namedError
  47. " --- IntKeyword: keywords contained within `{ ... }' sections only
  48. " + these keywords are contained within `key' and `acl' sections
  49. syn keyword namedIntKeyword contained key algorithm
  50. syn keyword namedIntKeyword contained secret nextgroup=namedString skipwhite
  51. " + these keywords are contained within `server' section only
  52. syn keyword namedIntKeyword contained bogus support-ixfr nextgroup=namedBool,namedNotBool skipwhite
  53. syn keyword namedIntKeyword contained transfers nextgroup=namedNumber,namedNotNumber skipwhite
  54. syn keyword namedIntKeyword contained transfer-format
  55. syn keyword namedIntKeyword contained keys nextgroup=namedIntSection skipwhite
  56. " + these keywords are contained within `controls' section only
  57. syn keyword namedIntKeyword contained inet nextgroup=namedIPaddr,namedIPerror skipwhite
  58. syn keyword namedIntKeyword contained unix nextgroup=namedString skipwhite
  59. syn keyword namedIntKeyword contained port perm owner group nextgroup=namedNumber,namedNotNumber skipwhite
  60. syn keyword namedIntKeyword contained allow nextgroup=namedIntSection skipwhite
  61. " + these keywords are contained within `update-policy' section only
  62. syn keyword namedIntKeyword contained grant nextgroup=namedString skipwhite
  63. syn keyword namedIntKeyword contained name self subdomain wildcard nextgroup=namedString skipwhite
  64. syn keyword namedIntKeyword TXT A PTR NS SOA A6 CNAME MX ANY skipwhite
  65. " --- options
  66. syn region namedOptSection contained start=+{+ end=+};+ contains=namedOption,namedCNOption,namedComment,namedParenError
  67. syn keyword namedOption contained version directory
  68. \ nextgroup=namedString skipwhite
  69. syn keyword namedOption contained named-xfer dump-file pid-file
  70. \ nextgroup=namedString skipwhite
  71. syn keyword namedOption contained mem-statistics-file statistics-file
  72. \ nextgroup=namedString skipwhite
  73. syn keyword namedOption contained auth-nxdomain deallocate-on-exit
  74. \ nextgroup=namedBool,namedNotBool skipwhite
  75. syn keyword namedOption contained dialup fake-iquery fetch-glue
  76. \ nextgroup=namedBool,namedNotBool skipwhite
  77. syn keyword namedOption contained has-old-clients host-statistics
  78. \ nextgroup=namedBool,namedNotBool skipwhite
  79. syn keyword namedOption contained maintain-ixfr-base multiple-cnames
  80. \ nextgroup=namedBool,namedNotBool skipwhite
  81. syn keyword namedOption contained notify recursion rfc2308-type1
  82. \ nextgroup=namedBool,namedNotBool skipwhite
  83. syn keyword namedOption contained use-id-pool treat-cr-as-space
  84. \ nextgroup=namedBool,namedNotBool skipwhite
  85. syn keyword namedOption contained also-notify forwarders
  86. \ nextgroup=namedIPlist skipwhite
  87. syn keyword namedOption contained forward check-names
  88. syn keyword namedOption contained allow-query allow-transfer allow-recursion
  89. \ nextgroup=namedAML skipwhite
  90. syn keyword namedOption contained blackhole listen-on
  91. \ nextgroup=namedIntSection skipwhite
  92. syn keyword namedOption contained lame-ttl max-transfer-time-in
  93. \ nextgroup=namedNumber,namedNotNumber skipwhite
  94. syn keyword namedOption contained max-ncache-ttl min-roots
  95. \ nextgroup=namedNumber,namedNotNumber skipwhite
  96. syn keyword namedOption contained serial-queries transfers-in
  97. \ nextgroup=namedNumber,namedNotNumber skipwhite
  98. syn keyword namedOption contained transfers-out transfers-per-ns
  99. syn keyword namedOption contained transfer-format
  100. syn keyword namedOption contained transfer-source
  101. \ nextgroup=namedIPaddr,namedIPerror skipwhite
  102. syn keyword namedOption contained max-ixfr-log-size
  103. \ nextgroup=namedNumber,namedNotNumber skipwhite
  104. syn keyword namedOption contained coresize datasize files stacksize
  105. syn keyword namedOption contained cleaning-interval interface-interval statistics-interval heartbeat-interval
  106. \ nextgroup=namedNumber,namedNotNumber skipwhite
  107. syn keyword namedOption contained topology sortlist rrset-order
  108. \ nextgroup=namedIntSection skipwhite
  109. syn match namedOption contained /\<query-source\s\+.*;/he=s+12 contains=namedQSKeywords
  110. syn keyword namedQSKeywords contained address port
  111. syn match namedCNOption contained /\<check-names\s\+.*;/he=s+11 contains=namedCNKeywords
  112. syn keyword namedCNKeywords contained fail warn ignore master slave response
  113. " --- logging facilities
  114. syn region namedLogSection contained start=+{+ end=+};+ contains=namedLogOption
  115. syn keyword namedLogOption contained channel nextgroup=namedIntIdent skipwhite
  116. syn keyword namedLogOption contained category nextgroup=namedIntIdent skipwhite
  117. syn keyword namedIntKeyword contained syslog null versions size severity
  118. syn keyword namedIntKeyword contained file nextgroup=namedString skipwhite
  119. syn keyword namedIntKeyword contained print-category print-severity print-time nextgroup=namedBool,namedNotBool skipwhite
  120. " --- zone section
  121. syn region namedZoneString contained oneline start=+"+ end=+"+ skipwhite
  122. \ contains=namedDomain,namedIllegalDom
  123. \ nextgroup=namedZoneClass,namedZoneSection
  124. syn keyword namedZoneClass contained in hs hesiod chaos
  125. \ IN HS HESIOD CHAOS
  126. \ nextgroup=namedZoneSection skipwhite
  127. syn region namedZoneSection contained start=+{+ end=+};+ contains=namedZoneOpt,namedCNOption,namedComment,namedMasters,namedParenError
  128. syn keyword namedZoneOpt contained file ixfr-base
  129. \ nextgroup=namedString skipwhite
  130. syn keyword namedZoneOpt contained notify dialup
  131. \ nextgroup=namedBool,namedNotBool skipwhite
  132. syn keyword namedZoneOpt contained pubkey forward
  133. syn keyword namedZoneOpt contained max-transfer-time-in
  134. \ nextgroup=namedNumber,namedNotNumber skipwhite
  135. syn keyword namedZoneOpt contained type nextgroup=namedZoneType skipwhite
  136. syn keyword namedZoneType contained master slave stub forward hint
  137. syn keyword namedZoneOpt contained masters forwarders
  138. \ nextgroup=namedIPlist skipwhite
  139. syn region namedIPlist contained start=+{+ end=+};+ contains=namedIPaddr,namedIPerror,namedParenError,namedComment
  140. syn keyword namedZoneOpt contained allow-update allow-query allow-transfer
  141. \ nextgroup=namedAML skipwhite
  142. syn keyword namedZoneOpt contained update-policy
  143. \ nextgroup=namedIntSection skipwhite
  144. " --- boolean parameter
  145. syn match namedNotBool contained "[^ ;]\+"
  146. syn keyword namedBool contained yes no true false 1 0
  147. " --- number parameter
  148. syn match namedNotNumber contained "[^ 0-9;]\+"
  149. syn match namedNumber contained "\d\+"
  150. " --- address match list
  151. syn region namedAML contained start=+{+ end=+};+ contains=namedParenError,namedComment,namedString
  152. " --- IPs & Domains
  153. syn match namedIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{3};/he=e-1
  154. syn match namedDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ nextgroup=namedSpareDot
  155. syn match namedDomain contained /"\."/ms=s+1,me=e-1
  156. syn match namedSpareDot contained /\./
  157. " --- syntax errors
  158. syn match namedIllegalDom contained /"\S*[^-A-Za-z0-9.[:space:]]\S*"/ms=s+1,me=e-1
  159. syn match namedIPerror contained /\<\S*[^0-9.[:space:];]\S*/
  160. syn match namedEParenError contained +{+
  161. syn match namedParenError +}\([^;]\|$\)+
  162. " Define the default highlighting.
  163. " Only when an item doesn't have highlighting yet
  164. hi def link namedComment Comment
  165. hi def link namedInclude Include
  166. hi def link namedKeyword Keyword
  167. hi def link namedIntKeyword Keyword
  168. hi def link namedIdentifier Identifier
  169. hi def link namedIntIdent Identifier
  170. hi def link namedString String
  171. hi def link namedBool Type
  172. hi def link namedNotBool Error
  173. hi def link namedNumber Number
  174. hi def link namedNotNumber Error
  175. hi def link namedOption namedKeyword
  176. hi def link namedLogOption namedKeyword
  177. hi def link namedCNOption namedKeyword
  178. hi def link namedQSKeywords Type
  179. hi def link namedCNKeywords Type
  180. hi def link namedLogCategory Type
  181. hi def link namedIPaddr Number
  182. hi def link namedDomain Identifier
  183. hi def link namedZoneOpt namedKeyword
  184. hi def link namedZoneType Type
  185. hi def link namedParenError Error
  186. hi def link namedEParenError Error
  187. hi def link namedIllegalDom Error
  188. hi def link namedIPerror Error
  189. hi def link namedSpareDot Error
  190. hi def link namedError Error
  191. let &cpo = s:save_cpo
  192. unlet s:save_cpo
  193. let b:current_syntax = "named"
  194. " vim: ts=17