updated for version 7.2a
This commit is contained in:
147
runtime/syntax/hostconf.vim
Normal file
147
runtime/syntax/hostconf.vim
Normal file
@ -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
|
||||
Reference in New Issue
Block a user