11" Vim syntax file
22" Language: C
33" Maintainer: Bram Moolenaar <[email protected] >4- " Last Change: 2016 Jul 07
4+ " Last Change: 2016 Oct 27
55
66" Quit when a (custom) syntax file was already loaded
77if exists (" b:current_syntax" )
@@ -358,36 +358,36 @@ if !exists("c_no_c99") " ISO C99
358358endif
359359
360360" Accept %: for # (C99)
361- syn region cPreCondit start =" ^\s *\( %:\| #\)\s *\( if\| ifdef\| ifndef\| elif\)\> " skip =" \\ $" end =" $" keepend contains =cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
362- syn match cPreConditMatch display " ^\s *\( %:\| #\)\s *\( else\| endif\)\> "
361+ syn region cPreCondit start =" ^\s *\z s \ ( %:\| #\)\s *\( if\| ifdef\| ifndef\| elif\)\> " skip =" \\ $" end =" $" keepend contains =cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
362+ syn match cPreConditMatch display " ^\s *\z s \ ( %:\| #\)\s *\( else\| endif\)\> "
363363if ! exists (" c_no_if0" )
364364 syn cluster cCppOutInGroup contains =cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
365- syn region cCppOutWrapper start =" ^\s *\( %:\| #\)\s *if\s\+ 0\+\s *\( $\| //\| /\*\| &\) " end =" .\@ =\| $" contains =cCppOutIf,cCppOutElse,@NoSpell fold
366- syn region cCppOutIf contained start =" 0\+ " matchgroup =cCppOutWrapper end =" ^\s *\( %:\| #\)\s *endif\> " contains =cCppOutIf2,cCppOutElse
365+ syn region cCppOutWrapper start =" ^\s *\z s \ ( %:\| #\)\s *if\s\+ 0\+\s *\( $\| //\| /\*\| &\) " end =" .\@ =\| $" contains =cCppOutIf,cCppOutElse,@NoSpell fold
366+ syn region cCppOutIf contained start =" 0\+ " matchgroup =cCppOutWrapper end =" ^\s *\z s \ ( %:\| #\)\s *endif\> " contains =cCppOutIf2,cCppOutElse
367367 if ! exists (" c_no_if0_fold" )
368- syn region cCppOutIf2 contained matchgroup =cCppOutWrapper start =" 0\+ " end =" ^\s *\( %:\| #\)\s *\( else\>\| elif\s\+\( 0\+\s *\( $\| //\| /\*\| &\)\)\@ !\| endif\>\) " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell fold
368+ syn region cCppOutIf2 contained matchgroup =cCppOutWrapper start =" 0\+ " end =" ^\s *\z s \ ( %:\| #\)\s *\( else\>\| elif\s\+\( 0\+\s *\( $\| //\| /\*\| &\)\)\@ !\| endif\>\) " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell fold
369369 else
370370 syn region cCppOutIf2 contained matchgroup =cCppOutWrapper start =" 0\+ " end =" ^\s *\( %:\| #\)\s *\( else\>\| elif\s\+\( 0\+\s *\( $\| //\| /\*\| &\)\)\@ !\| endif\>\) " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell
371371 endif
372- syn region cCppOutElse contained matchgroup =cCppOutWrapper start =" ^\s *\( %:\| #\)\s *\( else\| elif\) " end =" ^\s *\( %:\| #\)\s *endif\> " me =s - 1 contains =TOP,cPreCondit
373- syn region cCppInWrapper start =" ^\s *\( %:\| #\)\s *if\s\+ 0*[1-9]\d *\s *\( $\| //\| /\*\| |\) " end =" .\@ =\| $" contains =cCppInIf,cCppInElse fold
374- syn region cCppInIf contained matchgroup =cCppInWrapper start =" \d\+ " end =" ^\s *\( %:\| #\)\s *endif\> " contains =TOP,cPreCondit
372+ syn region cCppOutElse contained matchgroup =cCppOutWrapper start =" ^\s *\z s \ ( %:\| #\)\s *\( else\| elif\) " end =" ^\s *\z s \( %:\| #\)\s *endif\> " me =s - 1 contains =TOP,cPreCondit
373+ syn region cCppInWrapper start =" ^\s *\z s \ ( %:\| #\)\s *if\s\+ 0*[1-9]\d *\s *\( $\| //\| /\*\| |\) " end =" .\@ =\| $" contains =cCppInIf,cCppInElse fold
374+ syn region cCppInIf contained matchgroup =cCppInWrapper start =" \d\+ " end =" ^\s *\z s \ ( %:\| #\)\s *endif\> " contains =TOP,cPreCondit
375375 if ! exists (" c_no_if0_fold" )
376- syn region cCppInElse contained start =" ^\s *\( %:\| #\)\s *\( else\>\| elif\s\+\( 0*[1-9]\d *\s *\( $\| //\| /\*\| |\)\)\@ !\) " end =" .\@ =\| $" containedin =cCppInIf contains =cCppInElse2 fold
376+ syn region cCppInElse contained start =" ^\s *\z s \ ( %:\| #\)\s *\( else\>\| elif\s\+\( 0*[1-9]\d *\s *\( $\| //\| /\*\| |\)\)\@ !\) " end =" .\@ =\| $" containedin =cCppInIf contains =cCppInElse2 fold
377377 else
378- syn region cCppInElse contained start =" ^\s *\( %:\| #\)\s *\( else\>\| elif\s\+\( 0*[1-9]\d *\s *\( $\| //\| /\*\| |\)\)\@ !\) " end =" .\@ =\| $" containedin =cCppInIf contains =cCppInElse2
378+ syn region cCppInElse contained start =" ^\s *\z s \ ( %:\| #\)\s *\( else\>\| elif\s\+\( 0*[1-9]\d *\s *\( $\| //\| /\*\| |\)\)\@ !\) " end =" .\@ =\| $" containedin =cCppInIf contains =cCppInElse2
379379 endif
380- syn region cCppInElse2 contained matchgroup =cCppInWrapper start =" ^\s *\( %:\| #\)\s *\( else\| elif\)\( [^/]\| /[^/*]\) *" end =" ^\s *\( %:\| #\)\s *endif\> " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell
381- syn region cCppOutSkip contained start =" ^\s *\( %:\| #\)\s *\( if\>\| ifdef\>\| ifndef\>\) " skip =" \\ $" end =" ^\s *\( %:\| #\)\s *endif\> " contains =cSpaceError,cCppOutSkip
382- syn region cCppInSkip contained matchgroup =cCppInWrapper start =" ^\s *\( %:\| #\)\s *\( if\s\+\(\d\+\s *\( $\| //\| /\*\| |\| &\)\)\@ !\| ifdef\>\| ifndef\>\) " skip =" \\ $" end =" ^\s *\( %:\| #\)\s *endif\> " containedin =cCppOutElse,cCppInIf,cCppInSkip contains =TOP,cPreProc
380+ syn region cCppInElse2 contained matchgroup =cCppInWrapper start =" ^\s *\z s \ ( %:\| #\)\s *\( else\| elif\)\( [^/]\| /[^/*]\) *" end =" ^\s *\z s \( %:\| #\)\s *endif\> " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell
381+ syn region cCppOutSkip contained start =" ^\s *\z s \ ( %:\| #\)\s *\( if\>\| ifdef\>\| ifndef\>\) " skip =" \\ $" end =" ^\s *\z s \( %:\| #\)\s *endif\> " contains =cSpaceError,cCppOutSkip
382+ syn region cCppInSkip contained matchgroup =cCppInWrapper start =" ^\s *\z s \ ( %:\| #\)\s *\( if\s\+\(\d\+\s *\( $\| //\| /\*\| |\| &\)\)\@ !\| ifdef\>\| ifndef\>\) " skip =" \\ $" end =" ^\s *\z s \( %:\| #\)\s *endif\> " containedin =cCppOutElse,cCppInIf,cCppInSkip contains =TOP,cPreProc
383383endif
384384syn region cIncluded display contained start =+ "+ skip =+ \\\\\|\\ "+ end =+ "+
385385syn match cIncluded display contained " <[^>]*>"
386- syn match cInclude display " ^\s *\( %:\| #\)\s *include\>\s *["<]" contains =cIncluded
386+ syn match cInclude display " ^\s *\z s \ ( %:\| #\)\s *include\>\s *["<]" contains =cIncluded
387387" syn match cLineSkip "\\$"
388388syn cluster cPreProcGroup contains =cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock
389- syn region cDefine start =" ^\s *\( %:\| #\)\s *\( define\| undef\)\> " skip =" \\ $" end =" $" keepend contains =ALLBUT,@cPreProcGroup,@Spell
390- syn region cPreProc start =" ^\s *\( %:\| #\)\s *\( pragma\>\| line\>\| warning\>\| warn\>\| error\>\) " skip =" \\ $" end =" $" keepend contains =ALLBUT,@cPreProcGroup,@Spell
389+ syn region cDefine start =" ^\s *\z s \ ( %:\| #\)\s *\( define\| undef\)\> " skip =" \\ $" end =" $" keepend contains =ALLBUT,@cPreProcGroup,@Spell
390+ syn region cPreProc start =" ^\s *\z s \ ( %:\| #\)\s *\( pragma\>\| line\>\| warning\>\| warn\>\| error\>\) " skip =" \\ $" end =" $" keepend contains =ALLBUT,@cPreProcGroup,@Spell
391391
392392" Highlight User Labels
393393syn cluster cMultiGroup contains =cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
@@ -396,21 +396,21 @@ if s:ft ==# 'c' || exists("cpp_no_cpp11")
396396endif
397397" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
398398syn cluster cLabelGroup contains =cUserLabel
399- syn match cUserCont display " ^\s *\I\i *\s *:$" contains =@cLabelGroup
400- syn match cUserCont display " ;\s *\I\i *\s *:$" contains =@cLabelGroup
399+ syn match cUserCont display " ^\s *\z s \ I\i *\s *:$" contains =@cLabelGroup
400+ syn match cUserCont display " ;\s *\z s \ I\i *\s *:$" contains =@cLabelGroup
401401if s: ft == # ' cpp'
402- syn match cUserCont display " ^\s *\% (class\| struct\| enum\)\@ !\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
403- syn match cUserCont display " ;\s *\% (class\| struct\| enum\)\@ !\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
402+ syn match cUserCont display " ^\s *\z s \ % (class\| struct\| enum\)\@ !\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
403+ syn match cUserCont display " ;\s *\z s \ % (class\| struct\| enum\)\@ !\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
404404else
405- syn match cUserCont display " ^\s *\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
406- syn match cUserCont display " ;\s *\I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
405+ syn match cUserCont display " ^\s *\z s \ I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
406+ syn match cUserCont display " ;\s *\z s \ I\i *\s *:[^:]" me =e - 1 contains =@cLabelGroup
407407endif
408408
409409syn match cUserLabel display " \I\i *" contained
410410
411411" Avoid recognizing most bitfields as labels
412- syn match cBitField display " ^\s *\I\i *\s *:\s *[1-9]" me =e - 1 contains =cType
413- syn match cBitField display " ;\s *\I\i *\s *:\s *[1-9]" me =e - 1 contains =cType
412+ syn match cBitField display " ^\s *\z s \ I\i *\s *:\s *[1-9]" me =e - 1 contains =cType
413+ syn match cBitField display " ;\s *\z s \ I\i *\s *:\s *[1-9]" me =e - 1 contains =cType
414414
415415if exists (" c_minlines" )
416416 let b: c_minlines = c_minlines
0 commit comments