Mercurial > vim
comparison runtime/syntax/hostconf.vim @ 1624:18ee39301b82 v7.2a
updated for version 7.2a
author | vimboss |
---|---|
date | Tue, 24 Jun 2008 22:58:06 +0000 |
parents | |
children | 1218c5353e2b |
comparison
equal
deleted
inserted
replaced
1623:53938adac247 | 1624:18ee39301b82 |
---|---|
1 " Vim syntax file | |
2 " Language: host.conf(5) configuration file | |
3 " Maintainer: Nikolai Weibull <now@bitwi.se> | |
4 " Latest Revision: 2007-06-25 | |
5 | |
6 if exists("b:current_syntax") | |
7 finish | |
8 endif | |
9 | |
10 let s:cpo_save = &cpo | |
11 set cpo&vim | |
12 | |
13 syn keyword hostconfTodo | |
14 \ contained | |
15 \ TODO | |
16 \ FIXME | |
17 \ XXX | |
18 \ NOTE | |
19 | |
20 syn match hostconfComment | |
21 \ display | |
22 \ contained | |
23 \ '\s*#.*' | |
24 \ contains=hostconfTodo, | |
25 \ @Spell | |
26 | |
27 syn match hostconfBegin | |
28 \ display | |
29 \ '^' | |
30 \ nextgroup=hostconfComment,hostconfKeyword | |
31 \ skipwhite | |
32 | |
33 syn keyword hostconfKeyword | |
34 \ contained | |
35 \ order | |
36 \ nextgroup=hostconfLookupOrder | |
37 \ skipwhite | |
38 | |
39 let s:orders = ['bind', 'hosts', 'nis'] | |
40 | |
41 function s:permute_suffixes(list) | |
42 if empty(a:list) | |
43 return [] | |
44 elseif len(a:list) == 1 | |
45 return a:list[0] | |
46 else | |
47 let i = 0 | |
48 let n = len(a:list) | |
49 let sub_permutations = [] | |
50 while i < n | |
51 let list_copy = copy(a:list) | |
52 let removed = list_copy[i] | |
53 call remove(list_copy, i) | |
54 call add(sub_permutations, [removed, s:permute_suffixes(list_copy)]) | |
55 let i += 1 | |
56 endwhile | |
57 return sub_permutations | |
58 endif | |
59 endfunction | |
60 | |
61 function s:generate_suffix_groups(list_of_order_of_orders, context, trailing_context) | |
62 for order_of_orders in a:list_of_order_of_orders | |
63 let order = order_of_orders[0] | |
64 let trailing_context = a:trailing_context . toupper(order[0]) . order[1:] | |
65 let nextgroup = 'hostconfLookupOrder' . trailing_context | |
66 let nextgroup_delimiter = nextgroup . 'Delimiter' | |
67 let group = 'hostconfLookupOrder' . a:context | |
68 execute 'syn keyword' group 'contained' order 'nextgroup=' . nextgroup_delimiter 'skipwhite' | |
69 execute 'syn match' nextgroup_delimiter 'contained display "," nextgroup=' . nextgroup 'skipwhite' | |
70 if a:context != "" | |
71 execute 'hi def link' group 'hostconfLookupOrder' | |
72 endif | |
73 execute 'hi def link' nextgroup_delimiter 'hostconfLookupOrderDelimiter' | |
74 let context = trailing_context | |
75 if type(order_of_orders[1]) == type([]) | |
76 call s:generate_suffix_groups(order_of_orders[1], context, trailing_context) | |
77 else | |
78 execute 'syn keyword hostconfLookupOrder' . context 'contained' order_of_orders[-1] | |
79 execute 'hi def link hostconfLookupOrder' . context 'hostconfLookupOrder' | |
80 endif | |
81 endfor | |
82 endfunction | |
83 | |
84 call s:generate_suffix_groups(s:permute_suffixes(s:orders), "", "") | |
85 | |
86 delfunction s:generate_suffix_groups | |
87 delfunction s:permute_suffixes | |
88 | |
89 syn keyword hostconfKeyword | |
90 \ contained | |
91 \ trim | |
92 \ nextgroup=hostconfDomain | |
93 \ skipwhite | |
94 | |
95 syn match hostconfDomain | |
96 \ contained | |
97 \ '\.[^:;,[:space:]]\+' | |
98 \ nextgroup=hostconfDomainDelimiter | |
99 \ skipwhite | |
100 | |
101 syn match hostconfDomainDelimiter | |
102 \ contained | |
103 \ display | |
104 \ '[:;,]' | |
105 \ nextgroup=hostconfDomain | |
106 \ skipwhite | |
107 | |
108 syn keyword hostconfKeyword | |
109 \ contained | |
110 \ multi | |
111 \ nospoof | |
112 \ spoofalert | |
113 \ reorder | |
114 \ nextgroup=hostconfBoolean | |
115 \ skipwhite | |
116 | |
117 syn keyword hostconfBoolean | |
118 \ contained | |
119 \ on | |
120 \ off | |
121 | |
122 syn keyword hostconfKeyword | |
123 \ contained | |
124 \ spoof | |
125 \ nextgroup=hostconfSpoofValue | |
126 \ skipwhite | |
127 | |
128 syn keyword hostconfSpoofValue | |
129 \ contained | |
130 \ off | |
131 \ nowarn | |
132 \ warn | |
133 | |
134 hi def link hostconfTodo Todo | |
135 hi def link hostconfComment Comment | |
136 hi def link hostconfKeyword Keyword | |
137 hi def link hostconfLookupOrder Identifier | |
138 hi def link hostconfLookupOrderDelimiter Delimiter | |
139 hi def link hostconfDomain String | |
140 hi def link hostconfDomainDelimiter Delimiter | |
141 hi def link hostconfBoolean Boolean | |
142 hi def link hostconfSpoofValue hostconfBoolean | |
143 | |
144 let b:current_syntax = "hostconf" | |
145 | |
146 let &cpo = s:cpo_save | |
147 unlet s:cpo_save |