diff options
Diffstat (limited to 'syntax/kconfig.vim')
| -rw-r--r-- | syntax/kconfig.vim | 743 | 
1 files changed, 743 insertions, 0 deletions
diff --git a/syntax/kconfig.vim b/syntax/kconfig.vim new file mode 100644 index 00000000..4c753a1b --- /dev/null +++ b/syntax/kconfig.vim @@ -0,0 +1,743 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim syntax file +" Maintainer:           Christian Brabandt <cb@256bit.org> +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2015-05-29 +" License:              Vim (see :h license) +" Repository:		https://github.com/chrisbra/vim-kconfig + +if exists("b:current_syntax") +  finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +if exists("g:kconfig_syntax_heavy") + +syn match   kconfigBegin              '^' nextgroup=kconfigKeyword +                                      \ skipwhite + +syn keyword kconfigTodo               contained TODO FIXME XXX NOTE + +syn match   kconfigComment            display '#.*$' contains=kconfigTodo + +syn keyword kconfigKeyword            config nextgroup=kconfigSymbol +                                      \ skipwhite + +syn keyword kconfigKeyword            menuconfig nextgroup=kconfigSymbol +                                      \ skipwhite + +syn keyword kconfigKeyword            comment menu mainmenu +                                      \ nextgroup=kconfigKeywordPrompt +                                      \ skipwhite + +syn keyword kconfigKeyword            choice +                                      \ nextgroup=@kconfigConfigOptions +                                      \ skipwhite skipnl + +syn keyword kconfigKeyword            endmenu endchoice + +syn keyword kconfigPreProc            source +                                      \ nextgroup=kconfigPath +                                      \ skipwhite + +" TODO: This is a hack.  The who .*Expr stuff should really be generated so +" that we can reuse it for various nextgroups. +syn keyword kconfigConditional        if endif +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn match   kconfigKeywordPrompt      '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigPath               '"[^"\\]*\%(\\.[^"\\]*\)*"\|\S\+' +                                      \ contained + +syn match   kconfigSymbol             '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions +                                      \ skipwhite skipnl + +" FIXME: There is – probably – no reason to cluster these instead of just +" defining them in the same group. +syn cluster kconfigConfigOptions      contains=kconfigTypeDefinition, +                                      \        kconfigInputPrompt, +                                      \        kconfigDefaultValue, +                                      \        kconfigDependencies, +                                      \        kconfigReverseDependencies, +                                      \        kconfigNumericalRanges, +                                      \        kconfigHelpText, +                                      \        kconfigDefBool, +                                      \        kconfigOptional + +syn keyword kconfigTypeDefinition     bool boolean tristate string hex int +                                      \ contained +                                      \ nextgroup=kconfigTypeDefPrompt, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigTypeDefPrompt      '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigTypeDefPrompt      "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn keyword kconfigInputPrompt        prompt +                                      \ contained +                                      \ nextgroup=kconfigPromptPrompt +                                      \ skipwhite + +syn match   kconfigPromptPrompt       '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigPromptPrompt       "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn keyword   kconfigDefaultValue     default +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionExpr +                                      \ skipwhite + +syn match   kconfigDependencies       'depends on\|requires' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn keyword kconfigReverseDependencies select +                                      \ contained +                                      \ nextgroup=@kconfigRevDepSymbol +                                      \ skipwhite + +syn cluster kconfigRevDepSymbol       contains=kconfigRevDepCSymbol, +                                      \        kconfigRevDepNCSymbol + +syn match   kconfigRevDepCSymbol      '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigRevDepCSymbol      "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigRevDepNCSymbol     '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn keyword kconfigNumericalRanges    range +                                      \ contained +                                      \ nextgroup=@kconfigRangeSymbol +                                      \ skipwhite + +syn cluster kconfigRangeSymbol        contains=kconfigRangeCSymbol, +                                      \        kconfigRangeNCSymbol + +syn match   kconfigRangeCSymbol       '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=@kconfigRangeSymbol2 +                                      \ skipwhite skipnl + +syn match   kconfigRangeCSymbol       "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=@kconfigRangeSymbol2 +                                      \ skipwhite skipnl + +syn match   kconfigRangeNCSymbol      '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=@kconfigRangeSymbol2 +                                      \ skipwhite skipnl + +syn cluster kconfigRangeSymbol2       contains=kconfigRangeCSymbol2, +                                      \        kconfigRangeNCSymbol2 + +syn match   kconfigRangeCSymbol2      "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigRangeNCSymbol2     '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn region  kconfigHelpText           contained +      \ matchgroup=kconfigConfigOption +      \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' +      \ skip='^$' +      \ end='^\z1\@!' +      \ nextgroup=@kconfigConfigOptions +      \ skipwhite skipnl + +" XXX: Undocumented +syn keyword kconfigDefBool            def_bool +                                      \ contained +                                      \ nextgroup=@kconfigDefBoolSymbol +                                      \ skipwhite + +syn cluster kconfigDefBoolSymbol      contains=kconfigDefBoolCSymbol, +                                      \        kconfigDefBoolNCSymbol + +syn match   kconfigDefBoolCSymbol     '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigDefBoolCSymbol     "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigDefBoolNCSymbol    '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +" XXX: This is actually only a valid option for “choice”, but treating it +" specially would require a lot of extra groups. +syn keyword kconfigOptional           optional +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions +                                      \ skipwhite skipnl + +syn keyword kconfigConfigOptionIf     if +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn cluster kconfigConfigOptionIfExpr contains=@kconfigConfOptIfExprSym, +                                      \        kconfigConfOptIfExprNeg, +                                      \        kconfigConfOptIfExprGroup + +syn cluster kconfigConfOptIfExprSym   contains=kconfigConfOptIfExprCSym, +                                      \        kconfigConfOptIfExprNCSym + +syn match   kconfigConfOptIfExprCSym  '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr, +                                      \           kconfigConfOptIfExprEq, +                                      \           kconfigConfOptIfExprNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfExprCSym  "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr, +                                      \           kconfigConfOptIfExprEq, +                                      \           kconfigConfOptIfExprNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfExprNCSym '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr, +                                      \           kconfigConfOptIfExprEq, +                                      \           kconfigConfOptIfExprNEq +                                      \ skipwhite skipnl + +syn cluster kconfigConfOptIfExprSym2  contains=kconfigConfOptIfExprCSym2, +                                      \        kconfigConfOptIfExprNCSym2 + +syn match   kconfigConfOptIfExprEq    '=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptIfExprSym2 +                                      \ skipwhite + +syn match   kconfigConfOptIfExprNEq   '!=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptIfExprSym2 +                                      \ skipwhite + +syn match   kconfigConfOptIfExprCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfExprNCSym2 '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfExprNeg   '!' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn match   kconfigConfOptIfExprAnd   '&&' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn match   kconfigConfOptIfExprOr    '||' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfExpr +                                      \ skipwhite + +syn match   kconfigConfOptIfExprGroup '(' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfGExp +                                      \ skipwhite + +" TODO: hm, this kind of recursion doesn't work right.  We need another set of +" expressions that have kconfigConfigOPtionIfGExp as nextgroup and a matcher +" for '(' that sets it all off. +syn cluster kconfigConfigOptionIfGExp contains=@kconfigConfOptIfGExpSym, +                                      \        kconfigConfOptIfGExpNeg, +                                      \        kconfigConfOptIfExprGroup + +syn cluster kconfigConfOptIfGExpSym   contains=kconfigConfOptIfGExpCSym, +                                      \        kconfigConfOptIfGExpNCSym + +syn match   kconfigConfOptIfGExpCSym  '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=@kconfigConfigIf, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr, +                                      \           kconfigConfOptIfGExpEq, +                                      \           kconfigConfOptIfGExpNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfGExpCSym  "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=@kconfigConfigIf, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr, +                                      \           kconfigConfOptIfGExpEq, +                                      \           kconfigConfOptIfGExpNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfGExpNCSym '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfOptIfExprGrpE, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr, +                                      \           kconfigConfOptIfGExpEq, +                                      \           kconfigConfOptIfGExpNEq +                                      \ skipwhite skipnl + +syn cluster kconfigConfOptIfGExpSym2  contains=kconfigConfOptIfGExpCSym2, +                                      \        kconfigConfOptIfGExpNCSym2 + +syn match   kconfigConfOptIfGExpEq    '=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptIfGExpSym2 +                                      \ skipwhite + +syn match   kconfigConfOptIfGExpNEq   '!=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptIfGExpSym2 +                                      \ skipwhite + +syn match   kconfigConfOptIfGExpCSym2 '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfOptIfExprGrpE, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfGExpCSym2 "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfOptIfExprGrpE, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfGExpNCSym2 '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfOptIfExprGrpE, +                                      \           kconfigConfOptIfGExpAnd, +                                      \           kconfigConfOptIfGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptIfGExpNeg   '!' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfGExp +                                      \ skipwhite + +syn match   kconfigConfOptIfGExpAnd   '&&' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfGExp +                                      \ skipwhite + +syn match   kconfigConfOptIfGExpOr    '||' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionIfGExp +                                      \ skipwhite + +syn match   kconfigConfOptIfExprGrpE  ')' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptions, +                                      \           kconfigConfOptIfExprAnd, +                                      \           kconfigConfOptIfExprOr +                                      \ skipwhite skipnl + + +syn cluster kconfigConfigOptionExpr   contains=@kconfigConfOptExprSym, +                                      \        kconfigConfOptExprNeg, +                                      \        kconfigConfOptExprGroup + +syn cluster kconfigConfOptExprSym     contains=kconfigConfOptExprCSym, +                                      \        kconfigConfOptExprNCSym + +syn match   kconfigConfOptExprCSym    '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           kconfigConfOptExprEq, +                                      \           kconfigConfOptExprNEq, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigConfOptExprCSym    "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           kconfigConfOptExprEq, +                                      \           kconfigConfOptExprNEq, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigConfOptExprNCSym   '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           kconfigConfOptExprEq, +                                      \           kconfigConfOptExprNEq, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn cluster kconfigConfOptExprSym2    contains=kconfigConfOptExprCSym2, +                                      \        kconfigConfOptExprNCSym2 + +syn match   kconfigConfOptExprEq      '=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptExprSym2 +                                      \ skipwhite + +syn match   kconfigConfOptExprNEq     '!=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptExprSym2 +                                      \ skipwhite + +syn match   kconfigConfOptExprCSym2   '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigConfOptExprCSym2   "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigConfOptExprNCSym2  '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr, +                                      \           @kconfigConfigOptions +                                      \ skipwhite skipnl + +syn match   kconfigConfOptExprNeg     '!' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionExpr +                                      \ skipwhite + +syn match   kconfigConfOptExprAnd     '&&' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionExpr +                                      \ skipwhite + +syn match   kconfigConfOptExprOr      '||' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionExpr +                                      \ skipwhite + +syn match   kconfigConfOptExprGroup   '(' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionGExp +                                      \ skipwhite + +syn cluster kconfigConfigOptionGExp   contains=@kconfigConfOptGExpSym, +                                      \        kconfigConfOptGExpNeg, +                                      \        kconfigConfOptGExpGroup + +syn cluster kconfigConfOptGExpSym     contains=kconfigConfOptGExpCSym, +                                      \        kconfigConfOptGExpNCSym + +syn match   kconfigConfOptGExpCSym    '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr, +                                      \           kconfigConfOptGExpEq, +                                      \           kconfigConfOptGExpNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptGExpCSym    "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr, +                                      \           kconfigConfOptGExpEq, +                                      \           kconfigConfOptGExpNEq +                                      \ skipwhite skipnl + +syn match   kconfigConfOptGExpNCSym   '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr, +                                      \           kconfigConfOptGExpEq, +                                      \           kconfigConfOptGExpNEq +                                      \ skipwhite skipnl + +syn cluster kconfigConfOptGExpSym2    contains=kconfigConfOptGExpCSym2, +                                      \        kconfigConfOptGExpNCSym2 + +syn match   kconfigConfOptGExpEq      '=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptGExpSym2 +                                      \ skipwhite + +syn match   kconfigConfOptGExpNEq     '!=' +                                      \ contained +                                      \ nextgroup=@kconfigConfOptGExpSym2 +                                      \ skipwhite + +syn match   kconfigConfOptGExpCSym2   '"[^"\\]*\%(\\.[^"\\]*\)*"' +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptGExpCSym2   "'[^'\\]*\%(\\.[^'\\]*\)*'" +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptGExpNCSym2  '\<\k\+\>' +                                      \ contained +                                      \ nextgroup=kconfigConfOptExprGrpE, +                                      \           kconfigConfOptGExpAnd, +                                      \           kconfigConfOptGExpOr +                                      \ skipwhite skipnl + +syn match   kconfigConfOptGExpNeg     '!' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionGExp +                                      \ skipwhite + +syn match   kconfigConfOptGExpAnd     '&&' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionGExp +                                      \ skipwhite + +syn match   kconfigConfOptGExpOr      '||' +                                      \ contained +                                      \ nextgroup=@kconfigConfigOptionGExp +                                      \ skipwhite + +syn match   kconfigConfOptExprGrpE    ')' +                                      \ contained +                                      \ nextgroup=kconfigConfigOptionIf, +                                      \           kconfigConfOptExprAnd, +                                      \           kconfigConfOptExprOr +                                      \ skipwhite skipnl + +syn sync minlines=50 + +hi def link kconfigTodo                 Todo +hi def link kconfigComment              Comment +hi def link kconfigKeyword              Keyword +hi def link kconfigPreProc              PreProc +hi def link kconfigConditional          Conditional +hi def link kconfigPrompt               String +hi def link kconfigKeywordPrompt        kconfigPrompt +hi def link kconfigPath                 String +hi def link kconfigSymbol               String +hi def link kconfigConstantSymbol       Constant +hi def link kconfigConfigOption         Type +hi def link kconfigTypeDefinition       kconfigConfigOption +hi def link kconfigTypeDefPrompt        kconfigPrompt +hi def link kconfigInputPrompt          kconfigConfigOption +hi def link kconfigPromptPrompt         kconfigPrompt +hi def link kconfigDefaultValue         kconfigConfigOption +hi def link kconfigDependencies         kconfigConfigOption +hi def link kconfigReverseDependencies  kconfigConfigOption +hi def link kconfigRevDepCSymbol        kconfigConstantSymbol +hi def link kconfigRevDepNCSymbol       kconfigSymbol +hi def link kconfigNumericalRanges      kconfigConfigOption +hi def link kconfigRangeCSymbol         kconfigConstantSymbol +hi def link kconfigRangeNCSymbol        kconfigSymbol +hi def link kconfigRangeCSymbol2        kconfigConstantSymbol +hi def link kconfigRangeNCSymbol2       kconfigSymbol +hi def link kconfigHelpText             Normal +hi def link kconfigDefBool              kconfigConfigOption +hi def link kconfigDefBoolCSymbol       kconfigConstantSymbol +hi def link kconfigDefBoolNCSymbol      kconfigSymbol +hi def link kconfigOptional             kconfigConfigOption +hi def link kconfigConfigOptionIf       Conditional +hi def link kconfigConfOptIfExprCSym    kconfigConstantSymbol +hi def link kconfigConfOptIfExprNCSym   kconfigSymbol +hi def link kconfigOperator             Operator +hi def link kconfigConfOptIfExprEq      kconfigOperator +hi def link kconfigConfOptIfExprNEq     kconfigOperator +hi def link kconfigConfOptIfExprCSym2   kconfigConstantSymbol +hi def link kconfigConfOptIfExprNCSym2  kconfigSymbol +hi def link kconfigConfOptIfExprNeg     kconfigOperator +hi def link kconfigConfOptIfExprAnd     kconfigOperator +hi def link kconfigConfOptIfExprOr      kconfigOperator +hi def link kconfigDelimiter            Delimiter +hi def link kconfigConfOptIfExprGroup   kconfigDelimiter +hi def link kconfigConfOptIfGExpCSym    kconfigConstantSymbol +hi def link kconfigConfOptIfGExpNCSym   kconfigSymbol +hi def link kconfigConfOptIfGExpEq      kconfigOperator +hi def link kconfigConfOptIfGExpNEq     kconfigOperator +hi def link kconfigConfOptIfGExpCSym2   kconfigConstantSymbol +hi def link kconfigConfOptIfGExpNCSym2  kconfigSymbol +hi def link kconfigConfOptIfGExpNeg     kconfigOperator +hi def link kconfigConfOptIfGExpAnd     kconfigOperator +hi def link kconfigConfOptIfGExpOr      kconfigOperator +hi def link kconfigConfOptIfExprGrpE    kconfigDelimiter +hi def link kconfigConfOptExprCSym      kconfigConstantSymbol +hi def link kconfigConfOptExprNCSym     kconfigSymbol +hi def link kconfigConfOptExprEq        kconfigOperator +hi def link kconfigConfOptExprNEq       kconfigOperator +hi def link kconfigConfOptExprCSym2     kconfigConstantSymbol +hi def link kconfigConfOptExprNCSym2    kconfigSymbol +hi def link kconfigConfOptExprNeg       kconfigOperator +hi def link kconfigConfOptExprAnd       kconfigOperator +hi def link kconfigConfOptExprOr        kconfigOperator +hi def link kconfigConfOptExprGroup     kconfigDelimiter +hi def link kconfigConfOptGExpCSym      kconfigConstantSymbol +hi def link kconfigConfOptGExpNCSym     kconfigSymbol +hi def link kconfigConfOptGExpEq        kconfigOperator +hi def link kconfigConfOptGExpNEq       kconfigOperator +hi def link kconfigConfOptGExpCSym2     kconfigConstantSymbol +hi def link kconfigConfOptGExpNCSym2    kconfigSymbol +hi def link kconfigConfOptGExpNeg       kconfigOperator +hi def link kconfigConfOptGExpAnd       kconfigOperator +hi def link kconfigConfOptGExpOr        kconfigOperator +hi def link kconfigConfOptExprGrpE      kconfigConfOptIfExprGroup + +else + +syn keyword kconfigTodo               contained TODO FIXME XXX NOTE + +syn match   kconfigComment            display '#.*$' contains=kconfigTodo + +syn keyword kconfigKeyword            config menuconfig comment mainmenu + +syn keyword kconfigConditional        menu endmenu choice endchoice if endif + +syn keyword kconfigPreProc            source +                                      \ nextgroup=kconfigPath +                                      \ skipwhite + +syn keyword kconfigTriState           y m n + +syn match   kconfigSpecialChar        contained '\\.' +syn match   kconfigSpecialChar        '\\$' + +syn region  kconfigPath               matchgroup=kconfigPath +                                      \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ +                                      \ contains=kconfigSpecialChar + +syn region  kconfigPath               matchgroup=kconfigPath +                                      \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ +                                      \ contains=kconfigSpecialChar + +syn match   kconfigPath               '\S\+' +                                      \ contained + +syn region  kconfigString             matchgroup=kconfigString +                                      \ start=+"+ skip=+\\\\\|\\\"+ end=+"+ +                                      \ contains=kconfigSpecialChar + +syn region  kconfigString             matchgroup=kconfigString +                                      \ start=+'+ skip=+\\\\\|\\\'+ end=+'+ +                                      \ contains=kconfigSpecialChar + +syn keyword kconfigType               bool boolean tristate string hex int + +syn keyword kconfigOption             prompt default requires select range +                                      \ optional +syn match   kconfigOption             'depends\%( on\)\=' + +syn keyword kconfigMacro              def_bool def_tristate + +syn region  kconfigHelpText +      \ matchgroup=kconfigOption +      \ start='\%(help\|---help---\)\ze\s*\n\z(\s\+\)' +      \ skip='^$' +      \ end='^\z1\@!' + +syn sync    match kconfigSyncHelp     grouphere kconfigHelpText 'help\|---help---' + +hi def link kconfigTodo         Todo +hi def link kconfigComment      Comment +hi def link kconfigKeyword      Keyword +hi def link kconfigConditional  Conditional +hi def link kconfigPreProc      PreProc +hi def link kconfigTriState     Boolean +hi def link kconfigSpecialChar  SpecialChar +hi def link kconfigPath         String +hi def link kconfigString       String +hi def link kconfigType         Type +hi def link kconfigOption       Identifier +hi def link kconfigHelpText     Normal +hi def link kconfigmacro        Macro + +endif + +let b:current_syntax = "kconfig" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif  | 
