1
1
" Vim syntax file
2
2
" Language: C
3
3
" Maintainer: Bram Moolenaar <[email protected] >
4
- " Last Change: 2016 Nov 16
4
+ " Last Change: 2016 Nov 17
5
5
6
6
" Quit when a (custom) syntax file was already loaded
7
7
if exists (" b:current_syntax" )
@@ -358,36 +358,36 @@ if !exists("c_no_c99") " ISO C99
358
358
endif
359
359
360
360
" 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\)\> "
363
363
if ! exists (" c_no_if0" )
364
364
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
367
367
if ! exists (" c_no_if0_fold" )
368
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
369
369
else
370
- 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
370
+ syn region cCppOutIf2 contained matchgroup =cCppOutWrapper start =" 0\+ " end =" ^\s *\( %:\| #\)\s *\( else\>\| elif\s\+\( 0\+\s *\( $\| //\| /\*\| &\)\)\@ !\| endif\>\) " me =s - 1 contains =cSpaceError,cCppOutSkip,@Spell
371
371
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
375
375
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
377
377
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
379
379
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
383
383
endif
384
384
syn region cIncluded display contained start =+ "+ skip =+ \\\\\|\\ "+ end =+ "+
385
385
syn match cIncluded display contained " <[^>]*>"
386
- syn match cInclude display " \( %:\| #\)\s *include\>\s *["<]" contains =cIncluded
386
+ syn match cInclude display " ^ \s * \z s \( %:\| #\)\s *include\>\s *["<]" contains =cIncluded
387
387
" syn match cLineSkip "\\$"
388
388
syn 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 *\( define\| undef\)\> " skip =" \\ $" end =" $" keepend contains =ALLBUT,@cPreProcGroup,@Spell
390
- syn region cPreProc start =" \( %:\| #\)\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
391
391
392
392
" Highlight User Labels
393
393
syn 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
@@ -399,18 +399,18 @@ syn cluster cLabelGroup contains=cUserLabel
399
399
syn match cUserCont display " ^\s *\z s\I\i *\s *:$" contains =@cLabelGroup
400
400
syn match cUserCont display " ;\s *\z s\I\i *\s *:$" contains =@cLabelGroup
401
401
if 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
404
404
else
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
407
407
endif
408
408
409
409
syn match cUserLabel display " \I\i *" contained
410
410
411
411
" 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
414
414
415
415
if exists (" c_minlines" )
416
416
let b: c_minlines = c_minlines
0 commit comments