mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			737 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			737 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | ||
| " Maintainer:       Nikolai Weibull <now@bitwi.se>
 | ||
| " Latest Revision:  2009-05-25
 | ||
| 
 | ||
| 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
 |