2 " Maintainer: Nikolai Weibull <now@bitwi.se>
3 " Latest Revision: 2006-04-14
4 " Extra change: 2009 Feb 22
6 if exists("b:current_syntax")
13 if exists("g:kconfig_syntax_heavy")
15 syn match kconfigBegin '^' nextgroup=kconfigKeyword
18 syn keyword kconfigTodo contained TODO FIXME XXX NOTE
20 syn match kconfigComment display '#.*$' contains=kconfigTodo
22 syn keyword kconfigKeyword config nextgroup=kconfigSymbol
25 syn keyword kconfigKeyword menuconfig nextgroup=kconfigSymbol
28 syn keyword kconfigKeyword comment menu mainmenu
29 \ nextgroup=kconfigKeywordPrompt
32 syn keyword kconfigKeyword choice
33 \ nextgroup=@kconfigConfigOptions
36 syn keyword kconfigKeyword endmenu endchoice
38 syn keyword kconfigPreProc source
39 \ nextgroup=kconfigPath
42 " TODO: This is a hack. The who .*Expr stuff should really be generated so
43 " that we can reuse it for various nextgroups.
44 syn keyword kconfigConditional if endif
45 \ nextgroup=@kconfigConfigOptionIfExpr
48 syn match kconfigKeywordPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
50 \ nextgroup=@kconfigConfigOptions
53 syn match kconfigPath '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+'
56 syn match kconfigSymbol '\<\k\+\>'
58 \ nextgroup=@kconfigConfigOptions
61 " FIXME: There is – probably – no reason to cluster these instead of just
62 " defining them in the same group.
63 syn cluster kconfigConfigOptions contains=kconfigTypeDefinition,
65 \ kconfigDefaultValue,
66 \ kconfigDependencies,
67 \ kconfigReverseDependencies,
68 \ kconfigNumericalRanges,
73 syn keyword kconfigTypeDefinition bool boolean tristate string hex int
75 \ nextgroup=kconfigTypeDefPrompt,
76 \ @kconfigConfigOptions
79 syn match kconfigTypeDefPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
81 \ nextgroup=kconfigConfigOptionIf,
82 \ @kconfigConfigOptions
85 syn match kconfigTypeDefPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
87 \ nextgroup=kconfigConfigOptionIf,
88 \ @kconfigConfigOptions
91 syn keyword kconfigInputPrompt prompt
93 \ nextgroup=kconfigPromptPrompt
96 syn match kconfigPromptPrompt '"[^"\\]*\%(\\.[^"\\]*\)*"'
98 \ nextgroup=kconfigConfigOptionIf,
99 \ @kconfigConfigOptions
102 syn match kconfigPromptPrompt "'[^'\\]*\%(\\.[^'\\]*\)*'"
104 \ nextgroup=kconfigConfigOptionIf,
105 \ @kconfigConfigOptions
108 syn keyword kconfigDefaultValue default
110 \ nextgroup=@kconfigConfigOptionExpr
113 syn match kconfigDependencies 'depends on\|requires'
115 \ nextgroup=@kconfigConfigOptionIfExpr
118 syn keyword kconfigReverseDependencies select
120 \ nextgroup=@kconfigRevDepSymbol
123 syn cluster kconfigRevDepSymbol contains=kconfigRevDepCSymbol,
124 \ kconfigRevDepNCSymbol
126 syn match kconfigRevDepCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
128 \ nextgroup=kconfigConfigOptionIf,
129 \ @kconfigConfigOptions
132 syn match kconfigRevDepCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
134 \ nextgroup=kconfigConfigOptionIf,
135 \ @kconfigConfigOptions
138 syn match kconfigRevDepNCSymbol '\<\k\+\>'
140 \ nextgroup=kconfigConfigOptionIf,
141 \ @kconfigConfigOptions
144 syn keyword kconfigNumericalRanges range
146 \ nextgroup=@kconfigRangeSymbol
149 syn cluster kconfigRangeSymbol contains=kconfigRangeCSymbol,
150 \ kconfigRangeNCSymbol
152 syn match kconfigRangeCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
154 \ nextgroup=@kconfigRangeSymbol2
157 syn match kconfigRangeCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
159 \ nextgroup=@kconfigRangeSymbol2
162 syn match kconfigRangeNCSymbol '\<\k\+\>'
164 \ nextgroup=@kconfigRangeSymbol2
167 syn cluster kconfigRangeSymbol2 contains=kconfigRangeCSymbol2,
168 \ kconfigRangeNCSymbol2
170 syn match kconfigRangeCSymbol2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
172 \ nextgroup=kconfigConfigOptionIf,
173 \ @kconfigConfigOptions
176 syn match kconfigRangeNCSymbol2 '\<\k\+\>'
178 \ nextgroup=kconfigConfigOptionIf,
179 \ @kconfigConfigOptions
182 syn region kconfigHelpText contained
183 \ matchgroup=kconfigConfigOption
184 \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)'
187 \ nextgroup=@kconfigConfigOptions
191 syn keyword kconfigDefBool def_bool
193 \ nextgroup=@kconfigDefBoolSymbol
196 syn cluster kconfigDefBoolSymbol contains=kconfigDefBoolCSymbol,
197 \ kconfigDefBoolNCSymbol
199 syn match kconfigDefBoolCSymbol '"[^"\\]*\%(\\.[^"\\]*\)*"'
201 \ nextgroup=kconfigConfigOptionIf,
202 \ @kconfigConfigOptions
205 syn match kconfigDefBoolCSymbol "'[^'\\]*\%(\\.[^'\\]*\)*'"
207 \ nextgroup=kconfigConfigOptionIf,
208 \ @kconfigConfigOptions
211 syn match kconfigDefBoolNCSymbol '\<\k\+\>'
213 \ nextgroup=kconfigConfigOptionIf,
214 \ @kconfigConfigOptions
217 " XXX: This is actually only a valid option for “choice”, but treating it
218 " specially would require a lot of extra groups.
219 syn keyword kconfigOptional optional
221 \ nextgroup=@kconfigConfigOptions
224 syn keyword kconfigConfigOptionIf if
226 \ nextgroup=@kconfigConfigOptionIfExpr
229 syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym,
230 \ kconfigConfOptIfExprNeg,
231 \ kconfigConfOptIfExprGroup
233 syn cluster kconfigConfOptIfExprSym contains=kconfigConfOptIfExprCSym,
234 \ kconfigConfOptIfExprNCSym
236 syn match kconfigConfOptIfExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
238 \ nextgroup=@kconfigConfigOptions,
239 \ kconfigConfOptIfExprAnd,
240 \ kconfigConfOptIfExprOr,
241 \ kconfigConfOptIfExprEq,
242 \ kconfigConfOptIfExprNEq
245 syn match kconfigConfOptIfExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
247 \ nextgroup=@kconfigConfigOptions,
248 \ kconfigConfOptIfExprAnd,
249 \ kconfigConfOptIfExprOr,
250 \ kconfigConfOptIfExprEq,
251 \ kconfigConfOptIfExprNEq
254 syn match kconfigConfOptIfExprNCSym '\<\k\+\>'
256 \ nextgroup=@kconfigConfigOptions,
257 \ kconfigConfOptIfExprAnd,
258 \ kconfigConfOptIfExprOr,
259 \ kconfigConfOptIfExprEq,
260 \ kconfigConfOptIfExprNEq
263 syn cluster kconfigConfOptIfExprSym2 contains=kconfigConfOptIfExprCSym2,
264 \ kconfigConfOptIfExprNCSym2
266 syn match kconfigConfOptIfExprEq '='
268 \ nextgroup=@kconfigConfOptIfExprSym2
271 syn match kconfigConfOptIfExprNEq '!='
273 \ nextgroup=@kconfigConfOptIfExprSym2
276 syn match kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
278 \ nextgroup=@kconfigConfigOptions,
279 \ kconfigConfOptIfExprAnd,
280 \ kconfigConfOptIfExprOr
283 syn match kconfigConfOptIfExprNCSym2 '\<\k\+\>'
285 \ nextgroup=@kconfigConfigOptions,
286 \ kconfigConfOptIfExprAnd,
287 \ kconfigConfOptIfExprOr
290 syn match kconfigConfOptIfExprNeg '!'
292 \ nextgroup=@kconfigConfigOptionIfExpr
295 syn match kconfigConfOptIfExprAnd '&&'
297 \ nextgroup=@kconfigConfigOptionIfExpr
300 syn match kconfigConfOptIfExprOr '||'
302 \ nextgroup=@kconfigConfigOptionIfExpr
305 syn match kconfigConfOptIfExprGroup '('
307 \ nextgroup=@kconfigConfigOptionIfGExp
310 " TODO: hm, this kind of recursion doesn't work right. We need another set of
311 " expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher
312 " for '(' that sets it all off.
313 syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym,
314 \ kconfigConfOptIfGExpNeg,
315 \ kconfigConfOptIfExprGroup
317 syn cluster kconfigConfOptIfGExpSym contains=kconfigConfOptIfGExpCSym,
318 \ kconfigConfOptIfGExpNCSym
320 syn match kconfigConfOptIfGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
322 \ nextgroup=@kconfigConfigIf,
323 \ kconfigConfOptIfGExpAnd,
324 \ kconfigConfOptIfGExpOr,
325 \ kconfigConfOptIfGExpEq,
326 \ kconfigConfOptIfGExpNEq
329 syn match kconfigConfOptIfGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
331 \ nextgroup=@kconfigConfigIf,
332 \ kconfigConfOptIfGExpAnd,
333 \ kconfigConfOptIfGExpOr,
334 \ kconfigConfOptIfGExpEq,
335 \ kconfigConfOptIfGExpNEq
338 syn match kconfigConfOptIfGExpNCSym '\<\k\+\>'
340 \ nextgroup=kconfigConfOptIfExprGrpE,
341 \ kconfigConfOptIfGExpAnd,
342 \ kconfigConfOptIfGExpOr,
343 \ kconfigConfOptIfGExpEq,
344 \ kconfigConfOptIfGExpNEq
347 syn cluster kconfigConfOptIfGExpSym2 contains=kconfigConfOptIfGExpCSym2,
348 \ kconfigConfOptIfGExpNCSym2
350 syn match kconfigConfOptIfGExpEq '='
352 \ nextgroup=@kconfigConfOptIfGExpSym2
355 syn match kconfigConfOptIfGExpNEq '!='
357 \ nextgroup=@kconfigConfOptIfGExpSym2
360 syn match kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
362 \ nextgroup=kconfigConfOptIfExprGrpE,
363 \ kconfigConfOptIfGExpAnd,
364 \ kconfigConfOptIfGExpOr
367 syn match kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
369 \ nextgroup=kconfigConfOptIfExprGrpE,
370 \ kconfigConfOptIfGExpAnd,
371 \ kconfigConfOptIfGExpOr
374 syn match kconfigConfOptIfGExpNCSym2 '\<\k\+\>'
376 \ nextgroup=kconfigConfOptIfExprGrpE,
377 \ kconfigConfOptIfGExpAnd,
378 \ kconfigConfOptIfGExpOr
381 syn match kconfigConfOptIfGExpNeg '!'
383 \ nextgroup=@kconfigConfigOptionIfGExp
386 syn match kconfigConfOptIfGExpAnd '&&'
388 \ nextgroup=@kconfigConfigOptionIfGExp
391 syn match kconfigConfOptIfGExpOr '||'
393 \ nextgroup=@kconfigConfigOptionIfGExp
396 syn match kconfigConfOptIfExprGrpE ')'
398 \ nextgroup=@kconfigConfigOptions,
399 \ kconfigConfOptIfExprAnd,
400 \ kconfigConfOptIfExprOr
404 syn cluster kconfigConfigOptionExpr contains=@kconfigConfOptExprSym,
405 \ kconfigConfOptExprNeg,
406 \ kconfigConfOptExprGroup
408 syn cluster kconfigConfOptExprSym contains=kconfigConfOptExprCSym,
409 \ kconfigConfOptExprNCSym
411 syn match kconfigConfOptExprCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
413 \ nextgroup=kconfigConfigOptionIf,
414 \ kconfigConfOptExprAnd,
415 \ kconfigConfOptExprOr,
416 \ kconfigConfOptExprEq,
417 \ kconfigConfOptExprNEq,
418 \ @kconfigConfigOptions
421 syn match kconfigConfOptExprCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
423 \ nextgroup=kconfigConfigOptionIf,
424 \ kconfigConfOptExprAnd,
425 \ kconfigConfOptExprOr,
426 \ kconfigConfOptExprEq,
427 \ kconfigConfOptExprNEq,
428 \ @kconfigConfigOptions
431 syn match kconfigConfOptExprNCSym '\<\k\+\>'
433 \ nextgroup=kconfigConfigOptionIf,
434 \ kconfigConfOptExprAnd,
435 \ kconfigConfOptExprOr,
436 \ kconfigConfOptExprEq,
437 \ kconfigConfOptExprNEq,
438 \ @kconfigConfigOptions
441 syn cluster kconfigConfOptExprSym2 contains=kconfigConfOptExprCSym2,
442 \ kconfigConfOptExprNCSym2
444 syn match kconfigConfOptExprEq '='
446 \ nextgroup=@kconfigConfOptExprSym2
449 syn match kconfigConfOptExprNEq '!='
451 \ nextgroup=@kconfigConfOptExprSym2
454 syn match kconfigConfOptExprCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
456 \ nextgroup=kconfigConfigOptionIf,
457 \ kconfigConfOptExprAnd,
458 \ kconfigConfOptExprOr,
459 \ @kconfigConfigOptions
462 syn match kconfigConfOptExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
464 \ nextgroup=kconfigConfigOptionIf,
465 \ kconfigConfOptExprAnd,
466 \ kconfigConfOptExprOr,
467 \ @kconfigConfigOptions
470 syn match kconfigConfOptExprNCSym2 '\<\k\+\>'
472 \ nextgroup=kconfigConfigOptionIf,
473 \ kconfigConfOptExprAnd,
474 \ kconfigConfOptExprOr,
475 \ @kconfigConfigOptions
478 syn match kconfigConfOptExprNeg '!'
480 \ nextgroup=@kconfigConfigOptionExpr
483 syn match kconfigConfOptExprAnd '&&'
485 \ nextgroup=@kconfigConfigOptionExpr
488 syn match kconfigConfOptExprOr '||'
490 \ nextgroup=@kconfigConfigOptionExpr
493 syn match kconfigConfOptExprGroup '('
495 \ nextgroup=@kconfigConfigOptionGExp
498 syn cluster kconfigConfigOptionGExp contains=@kconfigConfOptGExpSym,
499 \ kconfigConfOptGExpNeg,
500 \ kconfigConfOptGExpGroup
502 syn cluster kconfigConfOptGExpSym contains=kconfigConfOptGExpCSym,
503 \ kconfigConfOptGExpNCSym
505 syn match kconfigConfOptGExpCSym '"[^"\\]*\%(\\.[^"\\]*\)*"'
507 \ nextgroup=kconfigConfOptExprGrpE,
508 \ kconfigConfOptGExpAnd,
509 \ kconfigConfOptGExpOr,
510 \ kconfigConfOptGExpEq,
511 \ kconfigConfOptGExpNEq
514 syn match kconfigConfOptGExpCSym "'[^'\\]*\%(\\.[^'\\]*\)*'"
516 \ nextgroup=kconfigConfOptExprGrpE,
517 \ kconfigConfOptGExpAnd,
518 \ kconfigConfOptGExpOr,
519 \ kconfigConfOptGExpEq,
520 \ kconfigConfOptGExpNEq
523 syn match kconfigConfOptGExpNCSym '\<\k\+\>'
525 \ nextgroup=kconfigConfOptExprGrpE,
526 \ kconfigConfOptGExpAnd,
527 \ kconfigConfOptGExpOr,
528 \ kconfigConfOptGExpEq,
529 \ kconfigConfOptGExpNEq
532 syn cluster kconfigConfOptGExpSym2 contains=kconfigConfOptGExpCSym2,
533 \ kconfigConfOptGExpNCSym2
535 syn match kconfigConfOptGExpEq '='
537 \ nextgroup=@kconfigConfOptGExpSym2
540 syn match kconfigConfOptGExpNEq '!='
542 \ nextgroup=@kconfigConfOptGExpSym2
545 syn match kconfigConfOptGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"'
547 \ nextgroup=kconfigConfOptExprGrpE,
548 \ kconfigConfOptGExpAnd,
549 \ kconfigConfOptGExpOr
552 syn match kconfigConfOptGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'"
554 \ nextgroup=kconfigConfOptExprGrpE,
555 \ kconfigConfOptGExpAnd,
556 \ kconfigConfOptGExpOr
559 syn match kconfigConfOptGExpNCSym2 '\<\k\+\>'
561 \ nextgroup=kconfigConfOptExprGrpE,
562 \ kconfigConfOptGExpAnd,
563 \ kconfigConfOptGExpOr
566 syn match kconfigConfOptGExpNeg '!'
568 \ nextgroup=@kconfigConfigOptionGExp
571 syn match kconfigConfOptGExpAnd '&&'
573 \ nextgroup=@kconfigConfigOptionGExp
576 syn match kconfigConfOptGExpOr '||'
578 \ nextgroup=@kconfigConfigOptionGExp
581 syn match kconfigConfOptExprGrpE ')'
583 \ nextgroup=kconfigConfigOptionIf,
584 \ kconfigConfOptExprAnd,
585 \ kconfigConfOptExprOr
590 hi def link kconfigTodo Todo
591 hi def link kconfigComment Comment
592 hi def link kconfigKeyword Keyword
593 hi def link kconfigPreProc PreProc
594 hi def link kconfigConditional Conditional
595 hi def link kconfigPrompt String
596 hi def link kconfigKeywordPrompt kconfigPrompt
597 hi def link kconfigPath String
598 hi def link kconfigSymbol String
599 hi def link kconfigConstantSymbol Constant
600 hi def link kconfigConfigOption Type
601 hi def link kconfigTypeDefinition kconfigConfigOption
602 hi def link kconfigTypeDefPrompt kconfigPrompt
603 hi def link kconfigInputPrompt kconfigConfigOption
604 hi def link kconfigPromptPrompt kconfigPrompt
605 hi def link kconfigDefaultValue kconfigConfigOption
606 hi def link kconfigDependencies kconfigConfigOption
607 hi def link kconfigReverseDependencies kconfigConfigOption
608 hi def link kconfigRevDepCSymbol kconfigConstantSymbol
609 hi def link kconfigRevDepNCSymbol kconfigSymbol
610 hi def link kconfigNumericalRanges kconfigConfigOption
611 hi def link kconfigRangeCSymbol kconfigConstantSymbol
612 hi def link kconfigRangeNCSymbol kconfigSymbol
613 hi def link kconfigRangeCSymbol2 kconfigConstantSymbol
614 hi def link kconfigRangeNCSymbol2 kconfigSymbol
615 hi def link kconfigHelpText Normal
616 hi def link kconfigDefBool kconfigConfigOption
617 hi def link kconfigDefBoolCSymbol kconfigConstantSymbol
618 hi def link kconfigDefBoolNCSymbol kconfigSymbol
619 hi def link kconfigOptional kconfigConfigOption
620 hi def link kconfigConfigOptionIf Conditional
621 hi def link kconfigConfOptIfExprCSym kconfigConstantSymbol
622 hi def link kconfigConfOptIfExprNCSym kconfigSymbol
623 hi def link kconfigOperator Operator
624 hi def link kconfigConfOptIfExprEq kconfigOperator
625 hi def link kconfigConfOptIfExprNEq kconfigOperator
626 hi def link kconfigConfOptIfExprCSym2 kconfigConstantSymbol
627 hi def link kconfigConfOptIfExprNCSym2 kconfigSymbol
628 hi def link kconfigConfOptIfExprNeg kconfigOperator
629 hi def link kconfigConfOptIfExprAnd kconfigOperator
630 hi def link kconfigConfOptIfExprOr kconfigOperator
631 hi def link kconfigDelimiter Delimiter
632 hi def link kconfigConfOptIfExprGroup kconfigDelimiter
633 hi def link kconfigConfOptIfGExpCSym kconfigConstantSymbol
634 hi def link kconfigConfOptIfGExpNCSym kconfigSymbol
635 hi def link kconfigConfOptIfGExpEq kconfigOperator
636 hi def link kconfigConfOptIfGExpNEq kconfigOperator
637 hi def link kconfigConfOptIfGExpCSym2 kconfigConstantSymbol
638 hi def link kconfigConfOptIfGExpNCSym2 kconfigSymbol
639 hi def link kconfigConfOptIfGExpNeg kconfigOperator
640 hi def link kconfigConfOptIfGExpAnd kconfigOperator
641 hi def link kconfigConfOptIfGExpOr kconfigOperator
642 hi def link kconfigConfOptIfExprGrpE kconfigDelimiter
643 hi def link kconfigConfOptExprCSym kconfigConstantSymbol
644 hi def link kconfigConfOptExprNCSym kconfigSymbol
645 hi def link kconfigConfOptExprEq kconfigOperator
646 hi def link kconfigConfOptExprNEq kconfigOperator
647 hi def link kconfigConfOptExprCSym2 kconfigConstantSymbol
648 hi def link kconfigConfOptExprNCSym2 kconfigSymbol
649 hi def link kconfigConfOptExprNeg kconfigOperator
650 hi def link kconfigConfOptExprAnd kconfigOperator
651 hi def link kconfigConfOptExprOr kconfigOperator
652 hi def link kconfigConfOptExprGroup kconfigDelimiter
653 hi def link kconfigConfOptGExpCSym kconfigConstantSymbol
654 hi def link kconfigConfOptGExpNCSym kconfigSymbol
655 hi def link kconfigConfOptGExpEq kconfigOperator
656 hi def link kconfigConfOptGExpNEq kconfigOperator
657 hi def link kconfigConfOptGExpCSym2 kconfigConstantSymbol
658 hi def link kconfigConfOptGExpNCSym2 kconfigSymbol
659 hi def link kconfigConfOptGExpNeg kconfigOperator
660 hi def link kconfigConfOptGExpAnd kconfigOperator
661 hi def link kconfigConfOptGExpOr kconfigOperator
662 hi def link kconfigConfOptExprGrpE kconfigConfOptIfExprGroup
666 syn keyword kconfigTodo contained TODO FIXME XXX NOTE
668 syn match kconfigComment display '#.*$' contains=kconfigTodo
670 syn keyword kconfigKeyword config menuconfig comment mainmenu
672 syn keyword kconfigConditional menu endmenu choice endchoice if endif
674 syn keyword kconfigPreProc source
675 \ nextgroup=kconfigPath
678 syn keyword kconfigTriState y m n
680 syn match kconfigSpecialChar contained '\\.'
681 syn match kconfigSpecialChar '\\$'
683 syn region kconfigPath matchgroup=kconfigPath
684 \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
685 \ contains=kconfigSpecialChar
687 syn region kconfigPath matchgroup=kconfigPath
688 \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
689 \ contains=kconfigSpecialChar
691 syn match kconfigPath '\S\+'
694 syn region kconfigString matchgroup=kconfigString
695 \ start=+"+ skip=+\\\\\|\\\"+ end=+"+
696 \ contains=kconfigSpecialChar
698 syn region kconfigString matchgroup=kconfigString
699 \ start=+'+ skip=+\\\\\|\\\'+ end=+'+
700 \ contains=kconfigSpecialChar
702 syn keyword kconfigType bool boolean tristate string hex int
704 syn keyword kconfigOption prompt default requires select range
706 syn match kconfigOption 'depends\%( on\)\='
708 syn keyword kconfigMacro def_bool def_tristate
710 syn region kconfigHelpText
711 \ matchgroup=kconfigOption
712 \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)'
716 syn sync match kconfigSyncHelp grouphere kconfigHelpText 'help\|---help---'
718 hi def link kconfigTodo Todo
719 hi def link kconfigComment Comment
720 hi def link kconfigKeyword Keyword
721 hi def link kconfigConditional Conditional
722 hi def link kconfigPreProc PreProc
723 hi def link kconfigTriState Boolean
724 hi def link kconfigSpecialChar SpecialChar
725 hi def link kconfigPath String
726 hi def link kconfigString String
727 hi def link kconfigType Type
728 hi def link kconfigOption Identifier
729 hi def link kconfigHelpText Normal
730 hi def link kconfigmacro Macro
734 let b:current_syntax = "kconfig"
736 let &cpo = s:cpo_save