xref: /vim-8.2.3635/runtime/syntax/hostconf.vim (revision 214641f7)
18c8de839SBram Moolenaar" Vim syntax file
28c8de839SBram Moolenaar" Language:             host.conf(5) configuration file
3*214641f7SBram Moolenaar" Previous Maintainer:  Nikolai Weibull <[email protected]>
48c8de839SBram Moolenaar" Latest Revision:      2007-06-25
58c8de839SBram Moolenaar
68c8de839SBram Moolenaarif exists("b:current_syntax")
78c8de839SBram Moolenaar  finish
88c8de839SBram Moolenaarendif
98c8de839SBram Moolenaar
108c8de839SBram Moolenaarlet s:cpo_save = &cpo
118c8de839SBram Moolenaarset cpo&vim
128c8de839SBram Moolenaar
138c8de839SBram Moolenaarsyn keyword hostconfTodo
148c8de839SBram Moolenaar      \ contained
158c8de839SBram Moolenaar      \ TODO
168c8de839SBram Moolenaar      \ FIXME
178c8de839SBram Moolenaar      \ XXX
188c8de839SBram Moolenaar      \ NOTE
198c8de839SBram Moolenaar
208c8de839SBram Moolenaarsyn match   hostconfComment
218c8de839SBram Moolenaar      \ display
228c8de839SBram Moolenaar      \ contained
238c8de839SBram Moolenaar      \ '\s*#.*'
248c8de839SBram Moolenaar      \ contains=hostconfTodo,
258c8de839SBram Moolenaar      \          @Spell
268c8de839SBram Moolenaar
278c8de839SBram Moolenaarsyn match   hostconfBegin
288c8de839SBram Moolenaar      \ display
298c8de839SBram Moolenaar      \ '^'
308c8de839SBram Moolenaar      \ nextgroup=hostconfComment,hostconfKeyword
318c8de839SBram Moolenaar      \ skipwhite
328c8de839SBram Moolenaar
338c8de839SBram Moolenaarsyn keyword hostconfKeyword
348c8de839SBram Moolenaar      \ contained
358c8de839SBram Moolenaar      \ order
368c8de839SBram Moolenaar      \ nextgroup=hostconfLookupOrder
378c8de839SBram Moolenaar      \ skipwhite
388c8de839SBram Moolenaar
398c8de839SBram Moolenaarlet s:orders = ['bind', 'hosts', 'nis']
408c8de839SBram Moolenaar
418c8de839SBram Moolenaarfunction s:permute_suffixes(list)
428c8de839SBram Moolenaar  if empty(a:list)
438c8de839SBram Moolenaar    return []
448c8de839SBram Moolenaar  elseif len(a:list) == 1
458c8de839SBram Moolenaar    return a:list[0]
468c8de839SBram Moolenaar  else
478c8de839SBram Moolenaar    let i = 0
488c8de839SBram Moolenaar    let n = len(a:list)
498c8de839SBram Moolenaar    let sub_permutations = []
508c8de839SBram Moolenaar    while i < n
518c8de839SBram Moolenaar      let list_copy = copy(a:list)
528c8de839SBram Moolenaar      let removed = list_copy[i]
538c8de839SBram Moolenaar      call remove(list_copy, i)
548c8de839SBram Moolenaar      call add(sub_permutations, [removed, s:permute_suffixes(list_copy)])
558c8de839SBram Moolenaar      let i += 1
568c8de839SBram Moolenaar    endwhile
578c8de839SBram Moolenaar    return sub_permutations
588c8de839SBram Moolenaar  endif
598c8de839SBram Moolenaarendfunction
608c8de839SBram Moolenaar
618c8de839SBram Moolenaarfunction s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context)
628c8de839SBram Moolenaar  for order_of_orders in a:list_of_order_of_orders
638c8de839SBram Moolenaar    let order = order_of_orders[0]
648c8de839SBram Moolenaar    let trailing_context = a:trailing_context . toupper(order[0]) . order[1:]
658c8de839SBram Moolenaar    let nextgroup = 'hostconfLookupOrder' . trailing_context
668c8de839SBram Moolenaar    let nextgroup_delimiter = nextgroup . 'Delimiter'
678c8de839SBram Moolenaar    let group = 'hostconfLookupOrder' . a:context
688c8de839SBram Moolenaar    execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite'
698c8de839SBram Moolenaar    execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite'
708c8de839SBram Moolenaar    if a:context != ""
718c8de839SBram Moolenaar      execute 'hi def link' group 'hostconfLookupOrder'
728c8de839SBram Moolenaar    endif
738c8de839SBram Moolenaar    execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter'
748c8de839SBram Moolenaar    let context = trailing_context
758c8de839SBram Moolenaar    if type(order_of_orders[1]) == type([])
768c8de839SBram Moolenaar      call s:generate_suffix_groups(order_of_orders[1], context, trailing_context)
778c8de839SBram Moolenaar    else
788c8de839SBram Moolenaar      execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1]
798c8de839SBram Moolenaar      execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder'
808c8de839SBram Moolenaar    endif
818c8de839SBram Moolenaar  endfor
828c8de839SBram Moolenaarendfunction
838c8de839SBram Moolenaar
848c8de839SBram Moolenaarcall s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "")
858c8de839SBram Moolenaar
868c8de839SBram Moolenaardelfunction s:generate_suffix_groups
878c8de839SBram Moolenaardelfunction s:permute_suffixes
888c8de839SBram Moolenaar
898c8de839SBram Moolenaarsyn keyword hostconfKeyword
908c8de839SBram Moolenaar      \ contained
918c8de839SBram Moolenaar      \ trim
928c8de839SBram Moolenaar      \ nextgroup=hostconfDomain
938c8de839SBram Moolenaar      \ skipwhite
948c8de839SBram Moolenaar
958c8de839SBram Moolenaarsyn match   hostconfDomain
968c8de839SBram Moolenaar      \ contained
978c8de839SBram Moolenaar      \ '\.[^:;,[:space:]]\+'
988c8de839SBram Moolenaar      \ nextgroup=hostconfDomainDelimiter
998c8de839SBram Moolenaar      \ skipwhite
1008c8de839SBram Moolenaar
1018c8de839SBram Moolenaarsyn match   hostconfDomainDelimiter
1028c8de839SBram Moolenaar      \ contained
1038c8de839SBram Moolenaar      \ display
1048c8de839SBram Moolenaar      \ '[:;,]'
1058c8de839SBram Moolenaar      \ nextgroup=hostconfDomain
1068c8de839SBram Moolenaar      \ skipwhite
1078c8de839SBram Moolenaar
1088c8de839SBram Moolenaarsyn keyword hostconfKeyword
1098c8de839SBram Moolenaar      \ contained
1108c8de839SBram Moolenaar      \ multi
1118c8de839SBram Moolenaar      \ nospoof
1128c8de839SBram Moolenaar      \ spoofalert
1138c8de839SBram Moolenaar      \ reorder
1148c8de839SBram Moolenaar      \ nextgroup=hostconfBoolean
1158c8de839SBram Moolenaar      \ skipwhite
1168c8de839SBram Moolenaar
1178c8de839SBram Moolenaarsyn keyword hostconfBoolean
1188c8de839SBram Moolenaar      \ contained
1198c8de839SBram Moolenaar      \ on
1208c8de839SBram Moolenaar      \ off
1218c8de839SBram Moolenaar
1228c8de839SBram Moolenaarsyn keyword hostconfKeyword
1238c8de839SBram Moolenaar      \ contained
1248c8de839SBram Moolenaar      \ spoof
1258c8de839SBram Moolenaar      \ nextgroup=hostconfSpoofValue
1268c8de839SBram Moolenaar      \ skipwhite
1278c8de839SBram Moolenaar
1288c8de839SBram Moolenaarsyn keyword hostconfSpoofValue
1298c8de839SBram Moolenaar      \ contained
1308c8de839SBram Moolenaar      \ off
1318c8de839SBram Moolenaar      \ nowarn
1328c8de839SBram Moolenaar      \ warn
1338c8de839SBram Moolenaar
1348c8de839SBram Moolenaarhi def link hostconfTodo                  Todo
1358c8de839SBram Moolenaarhi def link hostconfComment               Comment
1368c8de839SBram Moolenaarhi def link hostconfKeyword               Keyword
1378c8de839SBram Moolenaarhi def link hostconfLookupOrder           Identifier
1388c8de839SBram Moolenaarhi def link hostconfLookupOrderDelimiter  Delimiter
1398c8de839SBram Moolenaarhi def link hostconfDomain                String
1408c8de839SBram Moolenaarhi def link hostconfDomainDelimiter       Delimiter
1418c8de839SBram Moolenaarhi def link hostconfBoolean               Boolean
1428c8de839SBram Moolenaarhi def link hostconfSpoofValue            hostconfBoolean
1438c8de839SBram Moolenaar
1448c8de839SBram Moolenaarlet b:current_syntax = "hostconf"
1458c8de839SBram Moolenaar
1468c8de839SBram Moolenaarlet &cpo = s:cpo_save
1478c8de839SBram Moolenaarunlet s:cpo_save
148