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