" Language: C " Description: Additional C syntax file. " Author: Kenneth Benzie (Benie) " Last Modified: September 04, 2016 " Match delimiter expressions: (expr) {expr} : ; " ^ ^ ^ ^ ^ ^ syn match cDelimiter '[()\[\]:;]' " Match single character operators, ordering within the [] is important syn match cOperator '[\*=\.\^\~+\-,&|!%?]' " Match single character operators if they are surrounded by white space: / < > " ^ ^ ^ syn match cOperator '\(\s\zs\/\s\ze\|\s\zs<\s\ze\|\s\zs>\s\ze\)' " Match multi character operators syn match cOperator '\(+=\|-=\|\*=\|/=\|%=\|\ˆ=\|&=\||=\|<<\|>>\|>>=\)' syn match cOperator '\(<<=\|==\|!=\|<=\|>=\|&&\|||\|++\|--\|->\*\|->\)' " TODO: Match : in ternary operator as cOperator " Match function expressions: expr() " ^^^^ syn match cFunction '\w[A-Za-z0-9_]*\ze\s*(' " Match label expressions: expr: " ^^^^ syn match cLabel '^\s*\w[A-Za-z0-9_]\+\ze::\@!' contains=cppAccess " Match Doxygen comments let g:c_doxygen = get(g:, 'c_doxygen', 1) if exists('g:c_doxygen') && g:c_doxygen syn region cDoxygen oneline matchgroup=cComment start='\/\/\/\s*@brief\s\+' end='$' syn region cDoxygen oneline matchgroup=cComment start='\/\/\/\s*@tparam\s\+' end='\(\s.*$\|$\)' syn region cDoxygen oneline matchgroup=cComment start='\/\/\/\s*@param\(\[\(\|in\|out\|inout\)\]\)\=\s\+' end='\(\s.*$\|$\)' hi default link cDoxygen SpecialComment endif " Match curly braces with cDelimiter highlight group syn match cCurlyError "}" syn region cBlock matchgroup=cDelimiter start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,@cStringGroup,@Spell fold syn region cBlock matchgroup=cDelimiter start="{" end="}" transparent fold " Define additional highlight groups hi default link cDelimiter Delimiter hi default link cFunction Function