Mercurial > hg > RemoteEditor > vim7
comparison runtime/syntax/kconfig.vim @ 0:76efa0be13f1
Initial revision
author | atsuki |
---|---|
date | Sat, 10 Nov 2007 15:07:22 +0900 |
parents | |
children | c16898406ff2 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:76efa0be13f1 |
---|---|
1 " Vim syntax file | |
2 " Maintainer: Nikolai Weibull <now@bitwi.se> | |
3 " Latest Revision: 2006-04-14 | |
4 | |
5 if exists("b:current_syntax") | |
6 finish | |
7 endif | |
8 | |
9 let s:cpo_save = &cpo | |
10 set cpo&vim | |
11 | |
12 if exists("g:kconfig_syntax_heavy") | |
13 | |
14 syn match kconfigBegin '^' nextgroup=kconfigKeyword | |
15 \ skipwhite | |
16 | |
17 syn keyword kconfigTodo contained TODO FIXME XXX NOTE | |
18 | |
19 syn match kconfigComment display '#.*$' contains=kconfigTodo | |
20 | |
21 syn keyword kconfigKeyword config nextgroup=kconfigSymbol | |
22 \ skipwhite | |
23 | |
24 syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol | |
25 \ skipwhite | |
26 | |
27 syn keyword kconfigKeyword comment menu mainmenu | |
28 \ nextgroup=kconfigKeywordPrompt | |
29 \ skipwhite | |
30 | |
31 syn keyword kconfigKeyword choice | |
32 \ nextgroup=@kconfigConfigOptions | |
33 \ skipwhite skipnl | |
34 | |
35 syn keyword kconfigKeyword endmenu endchoice | |
36 | |
37 syn keyword kconfigPreProc source | |
38 \ nextgroup=kconfigPath | |
39 \ skipwhite | |
40 | |
41 " TODO: This is a hack. The who .*Expr stuff should really be generated so | |
42 " that we can reuse it for various nextgroups. | |
43 syn keyword kconfigConditional if endif | |
44 \ nextgroup=@kconfigConfigOptionIfExpr | |
45 \ skipwhite | |
46 | |
47 syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
48 \ contained | |
49 \ nextgroup=@kconfigConfigOptions | |
50 \ skipwhite skipnl | |
51 | |
52 syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+' | |
53 \ contained | |
54 | |
55 syn match kconfigSymbol '\<\k\+\>' | |
56 \ contained | |
57 \ nextgroup=@kconfigConfigOptions | |
58 \ skipwhite skipnl | |
59 | |
60 " FIXME: There is – probably – no reason to cluster these instead of just | |
61 " defining them in the same group. | |
62 syn cluster kconfigConfigOptions contains=kconfigTypeDefinition, | |
63 \ kconfigInputPrompt, | |
64 \ kconfigDefaultValue, | |
65 \ kconfigDependencies, | |
66 \ kconfigReverseDependencies, | |
67 \ kconfigNumericalRanges, | |
68 \ kconfigHelpText, | |
69 \ kconfigDefBool, | |
70 \ kconfigOptional | |
71 | |
72 syn keyword kconfigTypeDefinition bool boolean tristate string hex int | |
73 \ contained | |
74 \ nextgroup=kconfigTypeDefPrompt, | |
75 \ @kconfigConfigOptions | |
76 \ skipwhite skipnl | |
77 | |
78 syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
79 \ contained | |
80 \ nextgroup=kconfigConfigOptionIf, | |
81 \ @kconfigConfigOptions | |
82 \ skipwhite skipnl | |
83 | |
84 syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
85 \ contained | |
86 \ nextgroup=kconfigConfigOptionIf, | |
87 \ @kconfigConfigOptions | |
88 \ skipwhite skipnl | |
89 | |
90 syn keyword kconfigInputPrompt prompt | |
91 \ contained | |
92 \ nextgroup=kconfigPromptPrompt | |
93 \ skipwhite | |
94 | |
95 syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
96 \ contained | |
97 \ nextgroup=kconfigConfigOptionIf, | |
98 \ @kconfigConfigOptions | |
99 \ skipwhite skipnl | |
100 | |
101 syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
102 \ contained | |
103 \ nextgroup=kconfigConfigOptionIf, | |
104 \ @kconfigConfigOptions | |
105 \ skipwhite skipnl | |
106 | |
107 syn keyword kconfigDefaultValue default | |
108 \ contained | |
109 \ nextgroup=@kconfigConfigOptionExpr | |
110 \ skipwhite | |
111 | |
112 syn match kconfigDependencies 'depends on\|requires' | |
113 \ contained | |
114 \ nextgroup=@kconfigConfigOptionIfExpr | |
115 \ skipwhite | |
116 | |
117 syn keyword kconfigReverseDependencies select | |
118 \ contained | |
119 \ nextgroup=@kconfigRevDepSymbol | |
120 \ skipwhite | |
121 | |
122 syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol, | |
123 \ kconfigRevDepNCSymbol | |
124 | |
125 syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
126 \ contained | |
127 \ nextgroup=kconfigConfigOptionIf, | |
128 \ @kconfigConfigOptions | |
129 \ skipwhite skipnl | |
130 | |
131 syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
132 \ contained | |
133 \ nextgroup=kconfigConfigOptionIf, | |
134 \ @kconfigConfigOptions | |
135 \ skipwhite skipnl | |
136 | |
137 syn match kconfigRevDepNCSymbol '\<\k\+\>' | |
138 \ contained | |
139 \ nextgroup=kconfigConfigOptionIf, | |
140 \ @kconfigConfigOptions | |
141 \ skipwhite skipnl | |
142 | |
143 syn keyword kconfigNumericalRanges range | |
144 \ contained | |
145 \ nextgroup=@kconfigRangeSymbol | |
146 \ skipwhite | |
147 | |
148 syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol, | |
149 \ kconfigRangeNCSymbol | |
150 | |
151 syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
152 \ contained | |
153 \ nextgroup=@kconfigRangeSymbol2 | |
154 \ skipwhite skipnl | |
155 | |
156 syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
157 \ contained | |
158 \ nextgroup=@kconfigRangeSymbol2 | |
159 \ skipwhite skipnl | |
160 | |
161 syn match kconfigRangeNCSymbol '\<\k\+\>' | |
162 \ contained | |
163 \ nextgroup=@kconfigRangeSymbol2 | |
164 \ skipwhite skipnl | |
165 | |
166 syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2, | |
167 \ kconfigRangeNCSymbol2 | |
168 | |
169 syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
170 \ contained | |
171 \ nextgroup=kconfigConfigOptionIf, | |
172 \ @kconfigConfigOptions | |
173 \ skipwhite skipnl | |
174 | |
175 syn match kconfigRangeNCSymbol2 '\<\k\+\>' | |
176 \ contained | |
177 \ nextgroup=kconfigConfigOptionIf, | |
178 \ @kconfigConfigOptions | |
179 \ skipwhite skipnl | |
180 | |
181 syn region kconfigHelpText contained | |
182 \ matchgroup=kconfigConfigOption | |
183 \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' | |
184 \ skip='^$' | |
185 \ end='^\z1\@!' | |
186 \ nextgroup=@kconfigConfigOptions | |
187 \ skipwhite skipnl | |
188 | |
189 " XXX: Undocumented | |
190 syn keyword kconfigDefBool def_bool | |
191 \ contained | |
192 \ nextgroup=@kconfigDefBoolSymbol | |
193 \ skipwhite | |
194 | |
195 syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol, | |
196 \ kconfigDefBoolNCSymbol | |
197 | |
198 syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
199 \ contained | |
200 \ nextgroup=kconfigConfigOptionIf, | |
201 \ @kconfigConfigOptions | |
202 \ skipwhite skipnl | |
203 | |
204 syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
205 \ contained | |
206 \ nextgroup=kconfigConfigOptionIf, | |
207 \ @kconfigConfigOptions | |
208 \ skipwhite skipnl | |
209 | |
210 syn match kconfigDefBoolNCSymbol '\<\k\+\>' | |
211 \ contained | |
212 \ nextgroup=kconfigConfigOptionIf, | |
213 \ @kconfigConfigOptions | |
214 \ skipwhite skipnl | |
215 | |
216 " XXX: This is actually only a valid option for “choice”, but treating it | |
217 " specially would require a lot of extra groups. | |
218 syn keyword kconfigOptional optional | |
219 \ contained | |
220 \ nextgroup=@kconfigConfigOptions | |
221 \ skipwhite skipnl | |
222 | |
223 syn keyword kconfigConfigOptionIf if | |
224 \ contained | |
225 \ nextgroup=@kconfigConfigOptionIfExpr | |
226 \ skipwhite | |
227 | |
228 syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym, | |
229 \ kconfigConfOptIfExprNeg, | |
230 \ kconfigConfOptIfExprGroup | |
231 | |
232 syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym, | |
233 \ kconfigConfOptIfExprNCSym | |
234 | |
235 syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
236 \ contained | |
237 \ nextgroup=@kconfigConfigOptions, | |
238 \ kconfigConfOptIfExprAnd, | |
239 \ kconfigConfOptIfExprOr, | |
240 \ kconfigConfOptIfExprEq, | |
241 \ kconfigConfOptIfExprNEq | |
242 \ skipwhite skipnl | |
243 | |
244 syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
245 \ contained | |
246 \ nextgroup=@kconfigConfigOptions, | |
247 \ kconfigConfOptIfExprAnd, | |
248 \ kconfigConfOptIfExprOr, | |
249 \ kconfigConfOptIfExprEq, | |
250 \ kconfigConfOptIfExprNEq | |
251 \ skipwhite skipnl | |
252 | |
253 syn match kconfigConfOptIfExprNCSym '\<\k\+\>' | |
254 \ contained | |
255 \ nextgroup=@kconfigConfigOptions, | |
256 \ kconfigConfOptIfExprAnd, | |
257 \ kconfigConfOptIfExprOr, | |
258 \ kconfigConfOptIfExprEq, | |
259 \ kconfigConfOptIfExprNEq | |
260 \ skipwhite skipnl | |
261 | |
262 syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2, | |
263 \ kconfigConfOptIfExprNCSym2 | |
264 | |
265 syn match kconfigConfOptIfExprEq '=' | |
266 \ contained | |
267 \ nextgroup=@kconfigConfOptIfExprSym2 | |
268 \ skipwhite | |
269 | |
270 syn match kconfigConfOptIfExprNEq '!=' | |
271 \ contained | |
272 \ nextgroup=@kconfigConfOptIfExprSym2 | |
273 \ skipwhite | |
274 | |
275 syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
276 \ contained | |
277 \ nextgroup=@kconfigConfigOptions, | |
278 \ kconfigConfOptIfExprAnd, | |
279 \ kconfigConfOptIfExprOr | |
280 \ skipwhite skipnl | |
281 | |
282 syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>' | |
283 \ contained | |
284 \ nextgroup=@kconfigConfigOptions, | |
285 \ kconfigConfOptIfExprAnd, | |
286 \ kconfigConfOptIfExprOr | |
287 \ skipwhite skipnl | |
288 | |
289 syn match kconfigConfOptIfExprNeg '!' | |
290 \ contained | |
291 \ nextgroup=@kconfigConfigOptionIfExpr | |
292 \ skipwhite | |
293 | |
294 syn match kconfigConfOptIfExprAnd '&&' | |
295 \ contained | |
296 \ nextgroup=@kconfigConfigOptionIfExpr | |
297 \ skipwhite | |
298 | |
299 syn match kconfigConfOptIfExprOr '||' | |
300 \ contained | |
301 \ nextgroup=@kconfigConfigOptionIfExpr | |
302 \ skipwhite | |
303 | |
304 syn match kconfigConfOptIfExprGroup '(' | |
305 \ contained | |
306 \ nextgroup=@kconfigConfigOptionIfGExp | |
307 \ skipwhite | |
308 | |
309 " TODO: hm, this kind of recursion doesn't work right. We need another set of | |
310 " expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher | |
311 " for '(' that sets it all off. | |
312 syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym, | |
313 \ kconfigConfOptIfGExpNeg, | |
314 \ kconfigConfOptIfExprGroup | |
315 | |
316 syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym, | |
317 \ kconfigConfOptIfGExpNCSym | |
318 | |
319 syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
320 \ contained | |
321 \ nextgroup=@kconfigConfigIf, | |
322 \ kconfigConfOptIfGExpAnd, | |
323 \ kconfigConfOptIfGExpOr, | |
324 \ kconfigConfOptIfGExpEq, | |
325 \ kconfigConfOptIfGExpNEq | |
326 \ skipwhite skipnl | |
327 | |
328 syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
329 \ contained | |
330 \ nextgroup=@kconfigConfigIf, | |
331 \ kconfigConfOptIfGExpAnd, | |
332 \ kconfigConfOptIfGExpOr, | |
333 \ kconfigConfOptIfGExpEq, | |
334 \ kconfigConfOptIfGExpNEq | |
335 \ skipwhite skipnl | |
336 | |
337 syn match kconfigConfOptIfGExpNCSym '\<\k\+\>' | |
338 \ contained | |
339 \ nextgroup=kconfigConfOptIfExprGrpE, | |
340 \ kconfigConfOptIfGExpAnd, | |
341 \ kconfigConfOptIfGExpOr, | |
342 \ kconfigConfOptIfGExpEq, | |
343 \ kconfigConfOptIfGExpNEq | |
344 \ skipwhite skipnl | |
345 | |
346 syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2, | |
347 \ kconfigConfOptIfGExpNCSym2 | |
348 | |
349 syn match kconfigConfOptIfGExpEq '=' | |
350 \ contained | |
351 \ nextgroup=@kconfigConfOptIfGExpSym2 | |
352 \ skipwhite | |
353 | |
354 syn match kconfigConfOptIfGExpNEq '!=' | |
355 \ contained | |
356 \ nextgroup=@kconfigConfOptIfGExpSym2 | |
357 \ skipwhite | |
358 | |
359 syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
360 \ contained | |
361 \ nextgroup=kconfigConfOptIfExprGrpE, | |
362 \ kconfigConfOptIfGExpAnd, | |
363 \ kconfigConfOptIfGExpOr | |
364 \ skipwhite skipnl | |
365 | |
366 syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
367 \ contained | |
368 \ nextgroup=kconfigConfOptIfExprGrpE, | |
369 \ kconfigConfOptIfGExpAnd, | |
370 \ kconfigConfOptIfGExpOr | |
371 \ skipwhite skipnl | |
372 | |
373 syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>' | |
374 \ contained | |
375 \ nextgroup=kconfigConfOptIfExprGrpE, | |
376 \ kconfigConfOptIfGExpAnd, | |
377 \ kconfigConfOptIfGExpOr | |
378 \ skipwhite skipnl | |
379 | |
380 syn match kconfigConfOptIfGExpNeg '!' | |
381 \ contained | |
382 \ nextgroup=@kconfigConfigOptionIfGExp | |
383 \ skipwhite | |
384 | |
385 syn match kconfigConfOptIfGExpAnd '&&' | |
386 \ contained | |
387 \ nextgroup=@kconfigConfigOptionIfGExp | |
388 \ skipwhite | |
389 | |
390 syn match kconfigConfOptIfGExpOr '||' | |
391 \ contained | |
392 \ nextgroup=@kconfigConfigOptionIfGExp | |
393 \ skipwhite | |
394 | |
395 syn match kconfigConfOptIfExprGrpE ')' | |
396 \ contained | |
397 \ nextgroup=@kconfigConfigOptions, | |
398 \ kconfigConfOptIfExprAnd, | |
399 \ kconfigConfOptIfExprOr | |
400 \ skipwhite skipnl | |
401 | |
402 | |
403 syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym, | |
404 \ kconfigConfOptExprNeg, | |
405 \ kconfigConfOptExprGroup | |
406 | |
407 syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym, | |
408 \ kconfigConfOptExprNCSym | |
409 | |
410 syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
411 \ contained | |
412 \ nextgroup=kconfigConfigOptionIf, | |
413 \ kconfigConfOptExprAnd, | |
414 \ kconfigConfOptExprOr, | |
415 \ kconfigConfOptExprEq, | |
416 \ kconfigConfOptExprNEq, | |
417 \ @kconfigConfigOptions | |
418 \ skipwhite skipnl | |
419 | |
420 syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
421 \ contained | |
422 \ nextgroup=kconfigConfigOptionIf, | |
423 \ kconfigConfOptExprAnd, | |
424 \ kconfigConfOptExprOr, | |
425 \ kconfigConfOptExprEq, | |
426 \ kconfigConfOptExprNEq, | |
427 \ @kconfigConfigOptions | |
428 \ skipwhite skipnl | |
429 | |
430 syn match kconfigConfOptExprNCSym '\<\k\+\>' | |
431 \ contained | |
432 \ nextgroup=kconfigConfigOptionIf, | |
433 \ kconfigConfOptExprAnd, | |
434 \ kconfigConfOptExprOr, | |
435 \ kconfigConfOptExprEq, | |
436 \ kconfigConfOptExprNEq, | |
437 \ @kconfigConfigOptions | |
438 \ skipwhite skipnl | |
439 | |
440 syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2, | |
441 \ kconfigConfOptExprNCSym2 | |
442 | |
443 syn match kconfigConfOptExprEq '=' | |
444 \ contained | |
445 \ nextgroup=@kconfigConfOptExprSym2 | |
446 \ skipwhite | |
447 | |
448 syn match kconfigConfOptExprNEq '!=' | |
449 \ contained | |
450 \ nextgroup=@kconfigConfOptExprSym2 | |
451 \ skipwhite | |
452 | |
453 syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
454 \ contained | |
455 \ nextgroup=kconfigConfigOptionIf, | |
456 \ kconfigConfOptExprAnd, | |
457 \ kconfigConfOptExprOr, | |
458 \ @kconfigConfigOptions | |
459 \ skipwhite skipnl | |
460 | |
461 syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
462 \ contained | |
463 \ nextgroup=kconfigConfigOptionIf, | |
464 \ kconfigConfOptExprAnd, | |
465 \ kconfigConfOptExprOr, | |
466 \ @kconfigConfigOptions | |
467 \ skipwhite skipnl | |
468 | |
469 syn match kconfigConfOptExprNCSym2 '\<\k\+\>' | |
470 \ contained | |
471 \ nextgroup=kconfigConfigOptionIf, | |
472 \ kconfigConfOptExprAnd, | |
473 \ kconfigConfOptExprOr, | |
474 \ @kconfigConfigOptions | |
475 \ skipwhite skipnl | |
476 | |
477 syn match kconfigConfOptExprNeg '!' | |
478 \ contained | |
479 \ nextgroup=@kconfigConfigOptionExpr | |
480 \ skipwhite | |
481 | |
482 syn match kconfigConfOptExprAnd '&&' | |
483 \ contained | |
484 \ nextgroup=@kconfigConfigOptionExpr | |
485 \ skipwhite | |
486 | |
487 syn match kconfigConfOptExprOr '||' | |
488 \ contained | |
489 \ nextgroup=@kconfigConfigOptionExpr | |
490 \ skipwhite | |
491 | |
492 syn match kconfigConfOptExprGroup '(' | |
493 \ contained | |
494 \ nextgroup=@kconfigConfigOptionGExp | |
495 \ skipwhite | |
496 | |
497 syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym, | |
498 \ kconfigConfOptGExpNeg, | |
499 \ kconfigConfOptGExpGroup | |
500 | |
501 syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym, | |
502 \ kconfigConfOptGExpNCSym | |
503 | |
504 syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
505 \ contained | |
506 \ nextgroup=kconfigConfOptExprGrpE, | |
507 \ kconfigConfOptGExpAnd, | |
508 \ kconfigConfOptGExpOr, | |
509 \ kconfigConfOptGExpEq, | |
510 \ kconfigConfOptGExpNEq | |
511 \ skipwhite skipnl | |
512 | |
513 syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
514 \ contained | |
515 \ nextgroup=kconfigConfOptExprGrpE, | |
516 \ kconfigConfOptGExpAnd, | |
517 \ kconfigConfOptGExpOr, | |
518 \ kconfigConfOptGExpEq, | |
519 \ kconfigConfOptGExpNEq | |
520 \ skipwhite skipnl | |
521 | |
522 syn match kconfigConfOptGExpNCSym '\<\k\+\>' | |
523 \ contained | |
524 \ nextgroup=kconfigConfOptExprGrpE, | |
525 \ kconfigConfOptGExpAnd, | |
526 \ kconfigConfOptGExpOr, | |
527 \ kconfigConfOptGExpEq, | |
528 \ kconfigConfOptGExpNEq | |
529 \ skipwhite skipnl | |
530 | |
531 syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2, | |
532 \ kconfigConfOptGExpNCSym2 | |
533 | |
534 syn match kconfigConfOptGExpEq '=' | |
535 \ contained | |
536 \ nextgroup=@kconfigConfOptGExpSym2 | |
537 \ skipwhite | |
538 | |
539 syn match kconfigConfOptGExpNEq '!=' | |
540 \ contained | |
541 \ nextgroup=@kconfigConfOptGExpSym2 | |
542 \ skipwhite | |
543 | |
544 syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' | |
545 \ contained | |
546 \ nextgroup=kconfigConfOptExprGrpE, | |
547 \ kconfigConfOptGExpAnd, | |
548 \ kconfigConfOptGExpOr | |
549 \ skipwhite skipnl | |
550 | |
551 syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" | |
552 \ contained | |
553 \ nextgroup=kconfigConfOptExprGrpE, | |
554 \ kconfigConfOptGExpAnd, | |
555 \ kconfigConfOptGExpOr | |
556 \ skipwhite skipnl | |
557 | |
558 syn match kconfigConfOptGExpNCSym2 '\<\k\+\>' | |
559 \ contained | |
560 \ nextgroup=kconfigConfOptExprGrpE, | |
561 \ kconfigConfOptGExpAnd, | |
562 \ kconfigConfOptGExpOr | |
563 \ skipwhite skipnl | |
564 | |
565 syn match kconfigConfOptGExpNeg '!' | |
566 \ contained | |
567 \ nextgroup=@kconfigConfigOptionGExp | |
568 \ skipwhite | |
569 | |
570 syn match kconfigConfOptGExpAnd '&&' | |
571 \ contained | |
572 \ nextgroup=@kconfigConfigOptionGExp | |
573 \ skipwhite | |
574 | |
575 syn match kconfigConfOptGExpOr '||' | |
576 \ contained | |
577 \ nextgroup=@kconfigConfigOptionGExp | |
578 \ skipwhite | |
579 | |
580 syn match kconfigConfOptExprGrpE ')' | |
581 \ contained | |
582 \ nextgroup=kconfigConfigOptionIf, | |
583 \ kconfigConfOptExprAnd, | |
584 \ kconfigConfOptExprOr | |
585 \ skipwhite skipnl | |
586 | |
587 syn sync minlines=50 | |
588 | |
589 hi def link kconfigTodo Todo | |
590 hi def link kconfigComment Comment | |
591 hi def link kconfigKeyword Keyword | |
592 hi def link kconfigPreProc PreProc | |
593 hi def link kconfigConditional Conditional | |
594 hi def link kconfigPrompt String | |
595 hi def link kconfigKeywordPrompt kconfigPrompt | |
596 hi def link kconfigPath String | |
597 hi def link kconfigSymbol String | |
598 hi def link kconfigConstantSymbol Constant | |
599 hi def link kconfigConfigOption Type | |
600 hi def link kconfigTypeDefinition kconfigConfigOption | |
601 hi def link kconfigTypeDefPrompt kconfigPrompt | |
602 hi def link kconfigInputPrompt kconfigConfigOption | |
603 hi def link kconfigPromptPrompt kconfigPrompt | |
604 hi def link kconfigDefaultValue kconfigConfigOption | |
605 hi def link kconfigDependencies kconfigConfigOption | |
606 hi def link kconfigReverseDependencies kconfigConfigOption | |
607 hi def link kconfigRevDepCSymbol kconfigConstantSymbol | |
608 hi def link kconfigRevDepNCSymbol kconfigSymbol | |
609 hi def link kconfigNumericalRanges kconfigConfigOption | |
610 hi def link kconfigRangeCSymbol kconfigConstantSymbol | |
611 hi def link kconfigRangeNCSymbol kconfigSymbol | |
612 hi def link kconfigRangeCSymbol2 kconfigConstantSymbol | |
613 hi def link kconfigRangeNCSymbol2 kconfigSymbol | |
614 hi def link kconfigHelpText Normal | |
615 hi def link kconfigDefBool kconfigConfigOption | |
616 hi def link kconfigDefBoolCSymbol kconfigConstantSymbol | |
617 hi def link kconfigDefBoolNCSymbol kconfigSymbol | |
618 hi def link kconfigOptional kconfigConfigOption | |
619 hi def link kconfigConfigOptionIf Conditional | |
620 hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol | |
621 hi def link kconfigConfOptIfExprNCSym kconfigSymbol | |
622 hi def link kconfigOperator Operator | |
623 hi def link kconfigConfOptIfExprEq kconfigOperator | |
624 hi def link kconfigConfOptIfExprNEq kconfigOperator | |
625 hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol | |
626 hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol | |
627 hi def link kconfigConfOptIfExprNeg kconfigOperator | |
628 hi def link kconfigConfOptIfExprAnd kconfigOperator | |
629 hi def link kconfigConfOptIfExprOr kconfigOperator | |
630 hi def link kconfigDelimiter Delimiter | |
631 hi def link kconfigConfOptIfExprGroup kconfigDelimiter | |
632 hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol | |
633 hi def link kconfigConfOptIfGExpNCSym kconfigSymbol | |
634 hi def link kconfigConfOptIfGExpEq kconfigOperator | |
635 hi def link kconfigConfOptIfGExpNEq kconfigOperator | |
636 hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol | |
637 hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol | |
638 hi def link kconfigConfOptIfGExpNeg kconfigOperator | |
639 hi def link kconfigConfOptIfGExpAnd kconfigOperator | |
640 hi def link kconfigConfOptIfGExpOr kconfigOperator | |
641 hi def link kconfigConfOptIfExprGrpE kconfigDelimiter | |
642 hi def link kconfigConfOptExprCSym kconfigConstantSymbol | |
643 hi def link kconfigConfOptExprNCSym kconfigSymbol | |
644 hi def link kconfigConfOptExprEq kconfigOperator | |
645 hi def link kconfigConfOptExprNEq kconfigOperator | |
646 hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol | |
647 hi def link kconfigConfOptExprNCSym2 kconfigSymbol | |
648 hi def link kconfigConfOptExprNeg kconfigOperator | |
649 hi def link kconfigConfOptExprAnd kconfigOperator | |
650 hi def link kconfigConfOptExprOr kconfigOperator | |
651 hi def link kconfigConfOptExprGroup kconfigDelimiter | |
652 hi def link kconfigConfOptGExpCSym kconfigConstantSymbol | |
653 hi def link kconfigConfOptGExpNCSym kconfigSymbol | |
654 hi def link kconfigConfOptGExpEq kconfigOperator | |
655 hi def link kconfigConfOptGExpNEq kconfigOperator | |
656 hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol | |
657 hi def link kconfigConfOptGExpNCSym2 kconfigSymbol | |
658 hi def link kconfigConfOptGExpNeg kconfigOperator | |
659 hi def link kconfigConfOptGExpAnd kconfigOperator | |
660 hi def link kconfigConfOptGExpOr kconfigOperator | |
661 hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup | |
662 | |
663 else | |
664 | |
665 syn keyword kconfigTodo contained TODO FIXME XXX NOTE | |
666 | |
667 syn match kconfigComment display '#.*$' contains=kconfigTodo | |
668 | |
669 syn keyword kconfigKeyword config menuconfig comment menu mainmenu | |
670 | |
671 syn keyword kconfigConditional choice endchoice if endif | |
672 | |
673 syn keyword kconfigPreProc source | |
674 \ nextgroup=kconfigPath | |
675 \ skipwhite | |
676 | |
677 syn keyword kconfigTriState y m n | |
678 | |
679 syn match kconfigSpecialChar contained '\\.' | |
680 syn match kconfigSpecialChar '\\$' | |
681 | |
682 syn region kconfigPath matchgroup=kconfigPath | |
683 \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ | |
684 \ contains=kconfigSpecialChar | |
685 | |
686 syn region kconfigPath matchgroup=kconfigPath | |
687 \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ | |
688 \ contains=kconfigSpecialChar | |
689 | |
690 syn match kconfigPath '\S\+' | |
691 \ contained | |
692 | |
693 syn region kconfigString matchgroup=kconfigString | |
694 \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ | |
695 \ contains=kconfigSpecialChar | |
696 | |
697 syn region kconfigString matchgroup=kconfigString | |
698 \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ | |
699 \ contains=kconfigSpecialChar | |
700 | |
701 syn keyword kconfigType bool boolean tristate string hex int | |
702 | |
703 syn keyword kconfigOption prompt default requires select range | |
704 \ optional | |
705 syn match kconfigOption 'depends\%( on\)\=' | |
706 | |
707 syn keyword kconfigMacro def_bool def_tristate | |
708 | |
709 syn region kconfigHelpText | |
710 \ matchgroup=kconfigOption | |
711 \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' | |
712 \ skip='^$' | |
713 \ end='^\z1\@!' | |
714 | |
715 syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---' | |
716 | |
717 hi def link kconfigTodo Todo | |
718 hi def link kconfigComment Comment | |
719 hi def link kconfigKeyword Keyword | |
720 hi def link kconfigConditional Conditional | |
721 hi def link kconfigPreProc PreProc | |
722 hi def link kconfigTriState Boolean | |
723 hi def link kconfigSpecialChar SpecialChar | |
724 hi def link kconfigPath String | |
725 hi def link kconfigString String | |
726 hi def link kconfigType Type | |
727 hi def link kconfigOption Identifier | |
728 hi def link kconfigHelpText Normal | |
729 hi def link kconfigmacro Macro | |
730 | |
731 endif | |
732 | |
733 let b:current_syntax = "kconfig" | |
734 | |
735 let &cpo = s:cpo_save | |
736 unlet s:cpo_save |