updated for version 7.2a
diff --git a/runtime/syntax/hostconf.vim b/runtime/syntax/hostconf.vim
new file mode 100644
index 0000000..4fc8af0
--- /dev/null
+++ b/runtime/syntax/hostconf.vim
@@ -0,0 +1,147 @@
+" Vim syntax file
+" Language:         host.conf(5) configuration file
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2007-06-25
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn keyword hostconfTodo
+      \ contained
+      \ TODO
+      \ FIXME
+      \ XXX
+      \ NOTE
+
+syn match   hostconfComment
+      \ display
+      \ contained
+      \ '\s*#.*'
+      \ contains=hostconfTodo,
+      \          @Spell
+
+syn match   hostconfBegin
+      \ display
+      \ '^'
+      \ nextgroup=hostconfComment,hostconfKeyword
+      \ skipwhite
+
+syn keyword hostconfKeyword
+      \ contained
+      \ order
+      \ nextgroup=hostconfLookupOrder
+      \ skipwhite
+
+let s:orders = ['bind', 'hosts', 'nis']
+
+function s:permute_suffixes(list)
+  if empty(a:list)
+    return []
+  elseif len(a:list) == 1
+    return a:list[0]
+  else
+    let i = 0
+    let n = len(a:list)
+    let sub_permutations = []
+    while i < n
+      let list_copy = copy(a:list)
+      let removed = list_copy[i]
+      call remove(list_copy, i)
+      call add(sub_permutations, [removed, s:permute_suffixes(list_copy)])
+      let i += 1
+    endwhile
+    return sub_permutations
+  endif
+endfunction
+
+function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context)
+  for order_of_orders in a:list_of_order_of_orders
+    let order = order_of_orders[0]
+    let trailing_context = a:trailing_context . toupper(order[0]) . order[1:]
+    let nextgroup = 'hostconfLookupOrder' . trailing_context
+    let nextgroup_delimiter = nextgroup . 'Delimiter'
+    let group = 'hostconfLookupOrder' . a:context
+    execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite'
+    execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite'
+    if a:context != ""
+      execute 'hi def link' group 'hostconfLookupOrder'
+    endif
+    execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter'
+    let context = trailing_context
+    if type(order_of_orders[1]) == type([])
+      call s:generate_suffix_groups(order_of_orders[1], context, trailing_context)
+    else
+      execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1]
+      execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder'
+    endif
+  endfor
+endfunction
+
+call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "")
+
+delfunction s:generate_suffix_groups
+delfunction s:permute_suffixes
+
+syn keyword hostconfKeyword
+      \ contained
+      \ trim
+      \ nextgroup=hostconfDomain
+      \ skipwhite
+
+syn match   hostconfDomain
+      \ contained
+      \ '\.[^:;,[:space:]]\+'
+      \ nextgroup=hostconfDomainDelimiter
+      \ skipwhite
+
+syn match   hostconfDomainDelimiter
+      \ contained
+      \ display
+      \ '[:;,]'
+      \ nextgroup=hostconfDomain
+      \ skipwhite
+
+syn keyword hostconfKeyword
+      \ contained
+      \ multi
+      \ nospoof
+      \ spoofalert
+      \ reorder
+      \ nextgroup=hostconfBoolean
+      \ skipwhite
+
+syn keyword hostconfBoolean
+      \ contained
+      \ on
+      \ off
+
+syn keyword hostconfKeyword
+      \ contained
+      \ spoof
+      \ nextgroup=hostconfSpoofValue
+      \ skipwhite
+
+syn keyword hostconfSpoofValue
+      \ contained
+      \ off
+      \ nowarn
+      \ warn
+
+hi def link hostconfTodo                  Todo
+hi def link hostconfComment               Comment
+hi def link hostconfKeyword               Keyword
+hi def link hostconfLookupOrder           Identifier
+hi def link hostconfLookupOrderDelimiter  Delimiter
+hi def link hostconfDomain                String
+hi def link hostconfDomainDelimiter       Delimiter
+hi def link hostconfBoolean               Boolean
+hi def link hostconfSpoofValue            hostconfBoolean
+
+let b:current_syntax = "hostconf"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save